X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Ftests%2Fopenfile.c;h=b01a415023b9dce66a751197cd148dce8c12a008;hp=99decd9590bbec06fb335a88c907791ad8b1d356;hb=60eb5d53967413ce335cf0cfa38612dee3dfb586;hpb=997a519ce75b4faeff30a498a146133a14b38e66 diff --git a/lustre/tests/openfile.c b/lustre/tests/openfile.c index 99decd9..b01a415 100644 --- a/lustre/tests/openfile.c +++ b/lustre/tests/openfile.c @@ -1,6 +1,4 @@ -/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- - * vim:expandtab:shiftwidth=8:tabstop=8: - * +/* * GPL HEADER START * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. @@ -17,16 +15,12 @@ * * You should have received a copy of the GNU General Public License * version 2 along with this program; If not, see - * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf - * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * http://www.gnu.org/licenses/gpl-2.0.html * * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -34,10 +28,6 @@ * Lustre is a trademark of Sun Microsystems, Inc. */ -#if 0 -#define DEBUG -#endif - /* for O_DIRECTORY and O_DIRECT */ #ifndef _GNU_SOURCE #define _GNU_SOURCE @@ -51,168 +41,167 @@ #include #include #include -#include -#include +#include typedef struct flag_mapping { - const char *string; - const int flag; + const char *string; + const int flag; } FLAG_MAPPING; FLAG_MAPPING flag_table[] = { - {"O_RDONLY", O_RDONLY}, - {"O_WRONLY", O_WRONLY}, - {"O_RDWR", O_RDWR}, - {"O_CREAT", O_CREAT}, - {"O_EXCL", O_EXCL}, - {"O_NOCTTY", O_NOCTTY}, - {"O_TRUNC", O_TRUNC}, - {"O_APPEND", O_APPEND}, - {"O_NONBLOCK", O_NONBLOCK}, - {"O_NDELAY", O_NDELAY}, - {"O_SYNC", O_SYNC}, + {"O_RDONLY", O_RDONLY}, + {"O_WRONLY", O_WRONLY}, + {"O_RDWR", O_RDWR}, + {"O_CREAT", O_CREAT}, + {"O_EXCL", O_EXCL}, + {"O_NOCTTY", O_NOCTTY}, + {"O_TRUNC", O_TRUNC}, + {"O_APPEND", O_APPEND}, + {"O_NONBLOCK", O_NONBLOCK}, + {"O_NDELAY", O_NDELAY}, + {"O_SYNC", O_SYNC}, #ifdef O_DIRECT - {"O_DIRECT", O_DIRECT}, + {"O_DIRECT", O_DIRECT}, #endif - {"O_LARGEFILE", O_LARGEFILE}, - {"O_DIRECTORY", O_DIRECTORY}, - {"O_NOFOLLOW", O_NOFOLLOW}, - {"O_LOV_DELAY_CREATE", O_LOV_DELAY_CREATE}, - {"", -1} + {"O_LARGEFILE", O_LARGEFILE}, + {"O_DIRECTORY", O_DIRECTORY}, + {"O_NOFOLLOW", O_NOFOLLOW}, + {"O_LOV_DELAY_CREATE", O_LOV_DELAY_CREATE}, + {"", -1} }; void Usage_and_abort(void) { - fprintf(stderr, "Usage: openfile -f flags [ -m mode ] filename \n"); - fprintf(stderr, "e.g. openfile -f O_RDWR:O_CREAT -m 0755 /etc/passwd\n"); - exit(-1); + fprintf(stderr, "Usage: openfile -f flags [ -m mode ] filename\n"); + fprintf(stderr, + "e.g. openfile -f O_RDWR:O_CREAT -m 0755 /etc/passwd\n"); + exit(-1); } -int main(int argc, char** argv) +int main(int argc, char **argv) { - int fd; - int flags = 0; - mode_t mode = 0644; - char *fname = NULL; - int mode_set = 0; - int flag_set = 0; - int c; - int save_errno = 0; - int print_usage = 0; - char *cloned_flags = NULL; - - if (argc == 1) - Usage_and_abort(); - - while ((c = getopt (argc, argv, "f:m:")) != -1) { - switch (c) { - case 'f': { - char *tmp; - - cloned_flags = (char *)malloc(strlen(optarg)+1); - if (cloned_flags == NULL) { - fprintf(stderr, "Insufficient memory.\n"); - save_errno = -1; - goto out; - } - - strncpy(cloned_flags, optarg, strlen(optarg)+1); - flags = atoi(cloned_flags); - if (flags > 0) { - flag_set = 1; + int fd; + int flags = 0; + mode_t mode = 0644; + char *fname = NULL; + int mode_set = 0; + int flag_set = 0; + int c; + int save_errno = 0; + int print_usage = 0; + char *cloned_flags = NULL; + + if (argc == 1) + Usage_and_abort(); + + while ((c = getopt(argc, argv, "f:m:")) != -1) { + switch (c) { + case 'f': { + char *tmp; + + cloned_flags = strdup(optarg); + if (!cloned_flags) { + fprintf(stderr, "Insufficient memory.\n"); + save_errno = -1; + goto out; + } + + flags = atoi(cloned_flags); + if (flags > 0) { + flag_set = 1; #ifdef DEBUG - printf("flags = %d\n",flags); + printf("flags = %d\n", flags); #endif - break; - } else - flags = 0; + break; + } + + flags = 0; - for (tmp = strtok(cloned_flags, ":|"); tmp; - tmp = strtok(NULL, ":|")) { - int i = 0; + for (tmp = strtok(cloned_flags, ":|"); tmp; + tmp = strtok(NULL, ":|")) { + int i = 0; #ifdef DEBUG - printf("flags = %s\n",tmp); + printf("flags = %s\n", tmp); #endif - flag_set = 1; - for (i = 0; flag_table[i].flag != -1; i++) { - if (!strcmp(tmp, flag_table[i].string)){ - flags |= flag_table[i].flag; - break; - } - } - - if (flag_table[i].flag == -1) { - fprintf(stderr, "No such flag: %s\n", - tmp); - save_errno = -1; - goto out; - } - } + flag_set = 1; + for (i = 0; flag_table[i].flag != -1; i++) { + if (!strcmp(tmp, + flag_table[i].string)) { + flags |= flag_table[i].flag; + break; + } + } + + if (flag_table[i].flag == -1) { + fprintf(stderr, "No such flag: %s\n", + tmp); + save_errno = -1; + goto out; + } + } #ifdef DEBUG - printf("flags = %x\n", flags); + printf("flags = %x\n", flags); #endif - break; - } - case 'm': + break; + } + case 'm': #ifdef DEBUG - printf("mode = %s\n", optarg); + printf("mode = %s\n", optarg); #endif - mode = strtol(optarg, NULL, 8); - mode_set = 1; + mode = strtol(optarg, NULL, 8); + mode_set = 1; #ifdef DEBUG - printf("mode = %o\n", mode); + printf("mode = %o\n", mode); #endif - break; - default: - fprintf(stderr, "Bad parameters.\n"); - print_usage = 1; - goto out; - } - } - - if (optind == argc) { - fprintf(stderr, "Bad parameters.\n"); - print_usage = 1; - goto out; - } - - fname = argv[optind]; - - if (!flag_set) { - fprintf(stderr, "Missing flag or file-name\n"); - save_errno = -1; - goto out; - } - - - if (flags & O_CREAT) - fd = open(fname, flags, mode); - else - fd = open(fname, flags); - - save_errno = errno; - - if (fd != -1) { - printf("Succeed in opening file \"%s\"(flags=%s", - fname, cloned_flags); - - if (mode_set) - printf(", mode=%o", mode); - printf(")\n"); - close(fd); - } else { - fprintf(stderr, "Error in opening file \"%s\"(flags=%s", - fname, cloned_flags); - if (mode_set) - fprintf(stderr, ", mode=%o", mode); - fprintf(stderr, ") %d: %s\n", save_errno, strerror(save_errno)); - } - + break; + default: + fprintf(stderr, "Bad parameters.\n"); + print_usage = 1; + goto out; + } + } + + if (optind == argc) { + fprintf(stderr, "Bad parameters.\n"); + print_usage = 1; + goto out; + } + + fname = argv[optind]; + + if (!flag_set) { + fprintf(stderr, "Missing flag or file-name\n"); + save_errno = -1; + goto out; + } + + if (flags & O_CREAT) + fd = open(fname, flags, mode); + else + fd = open(fname, flags); + + save_errno = errno; + + if (fd != -1) { + printf("Succeed in opening file \"%s\"(flags=%s", + fname, cloned_flags); + + if (mode_set) + printf(", mode=%o", mode); + printf(")\n"); + close(fd); + } else { + fprintf(stderr, "Error in opening file \"%s\"(flags=%s", + fname, cloned_flags); + if (mode_set) + fprintf(stderr, ", mode=%o", mode); + fprintf(stderr, ") %d: %s\n", save_errno, strerror(save_errno)); + } out: - if (cloned_flags) - free(cloned_flags); - if (print_usage) - Usage_and_abort(); + if (cloned_flags) + free(cloned_flags); + if (print_usage) + Usage_and_abort(); - return save_errno; + return save_errno; }