Whamcloud - gitweb
- make HEAD from b_post_cmd3
[fs/lustre-release.git] / lustre / tests / openfile.c
index af5e863..6cba76b 100644 (file)
@@ -7,7 +7,9 @@
 #endif
 
 /* for O_DIRECTORY and O_DIRECT */
+#ifndef _GNU_SOURCE
 #define _GNU_SOURCE
+#endif
 
 #include <stdio.h>
 #include <sys/types.h>
@@ -17,7 +19,7 @@
 #include <string.h>
 #include <stdlib.h>
 #include <unistd.h>
-#include <linux/lustre_user.h>
+#include <lustre/lustre_user.h>
 
 typedef struct flag_mapping {
        const char *string;
@@ -36,7 +38,9 @@ FLAG_MAPPING flag_table[] = {
        {"O_NONBLOCK", O_NONBLOCK},
        {"O_NDELAY", O_NDELAY},
        {"O_SYNC", O_SYNC},
+#ifdef O_DIRECT
        {"O_DIRECT", O_DIRECT},
+#endif
        {"O_LARGEFILE", O_LARGEFILE},
        {"O_DIRECTORY", O_DIRECTORY},
        {"O_NOFOLLOW", O_NOFOLLOW},
@@ -60,8 +64,9 @@ int main(int argc, char** argv)
         int    mode_set=0;
         int    flag_set=0;
         int    file_set=0;
-        char   c;
-        char*  cloned_flags;
+        int    c;
+        int    save_errno;
+        char*  cloned_flags = NULL;
 
         if (argc == 1)
                 Usage_and_abort();
@@ -78,7 +83,7 @@ int main(int argc, char** argv)
                         }
 
                         strncpy(cloned_flags, optarg, strlen(optarg)+1);
-                        for (tmp = strtok(optarg, ":|"); tmp;
+                        for (tmp = strtok(cloned_flags, ":|"); tmp;
                              tmp = strtok(NULL, ":|")) {
                                 int i = 0;
 #ifdef DEBUG
@@ -98,6 +103,7 @@ int main(int argc, char** argv)
                                         exit(-1);
                                 }
                         }
+                        free(cloned_flags);
 #ifdef DEBUG
                         printf("flags = %x\n", flags);
 #endif
@@ -138,6 +144,8 @@ int main(int argc, char** argv)
         else
                 fd = open(fname, flags);
 
+        save_errno = errno;
+
         if (fd != -1) {
                 printf("Succeed in opening file \"%s\"(flags=%s",
                        fname, cloned_flags);
@@ -153,7 +161,7 @@ int main(int argc, char** argv)
                 fname, cloned_flags);
         if (mode_set)
                 fprintf(stderr, ", mode=%o", mode);
-        fprintf(stderr, ") %d: %s\n", errno, strerror(errno));
+        fprintf(stderr, ") %d: %s\n", save_errno, strerror(save_errno));
 
-        return errno;
+        return save_errno;
 }