gdb/
authorYao Qi <yao@codesourcery.com>
Thu, 21 Mar 2013 01:08:46 +0000 (01:08 +0000)
committerYao Qi <yao@codesourcery.com>
Thu, 21 Mar 2013 01:08:46 +0000 (01:08 +0000)
* ctf.c: Include "gdb_stat.h".
[USE_WIN32API]: New macro 'mkdir'.
(ctf_start): Use permission bits macros if they are defined.

gdb/ChangeLog
gdb/ctf.c

index 3211a431649809066157728bd241396968fb5a4a..fe21356200f61810ab496a99bf319632416c8ca8 100644 (file)
@@ -1,3 +1,9 @@
+2013-03-21  Yao Qi  <yao@codesourcery.com>
+
+       * ctf.c: Include "gdb_stat.h".
+       [USE_WIN32API]: New macro 'mkdir'.
+       (ctf_start): Use permission bits macros if they are defined.
+
 2013-03-20  Keith Seitz  <keiths@redhat.com>
 
        * breakpoint.h (struct breakpoint): Add comment to
index 117f72a7701488c415d30f0d828b62d2103d102d..6b55986f6b65779c3537940a32bb686decc5fa2e 100644 (file)
--- a/gdb/ctf.c
+++ b/gdb/ctf.c
@@ -23,6 +23,7 @@
 #include "ctf.h"
 #include "tracepoint.h"
 #include "regcache.h"
+#include "gdb_stat.h"
 
 #include <ctype.h>
 
@@ -270,6 +271,10 @@ ctf_target_save (struct trace_file_writer *self,
   return 0;
 }
 
+#ifdef USE_WIN32API
+#define mkdir(pathname, mode) _mkdir (pathname)
+#endif
+
 /* This is the implementation of trace_file_write_ops method
    start.  It creates the directory DIRNAME, metadata and datastream
    in the directory.  */
@@ -282,10 +287,21 @@ ctf_start (struct trace_file_writer *self, const char *dirname)
   struct ctf_trace_file_writer *writer
     = (struct ctf_trace_file_writer *) self;
   int i;
+  mode_t hmode = S_IRUSR | S_IWUSR | S_IXUSR
+#ifdef S_IRGRP
+    | S_IRGRP
+#endif
+#ifdef S_IXGRP
+    | S_IXGRP
+#endif
+    | S_IROTH /* Defined in common/gdb_stat.h if not defined.  */
+#ifdef S_IXOTH
+    | S_IXOTH
+#endif
+    ;
 
   /* Create DIRNAME.  */
-  if (mkdir (dirname, S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH)
-      && errno != EEXIST)
+  if (mkdir (dirname, hmode) && errno != EEXIST)
     error (_("Unable to open directory '%s' for saving trace data (%s)"),
           dirname, safe_strerror (errno));