X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Ftests%2Fmkdirdeep.c;h=95c3522d2c2cea4fbbe7f4dbaf9f1acd01fc23ce;hb=70e80ade90af09300396706b8910e196a7928520;hp=cfd1535dcb2c5446d93a4fa529deae5fd9cb2771;hpb=96ec6856f91f7f9031cfce4273c714d72cfe59ae;p=fs%2Flustre-release.git diff --git a/lustre/tests/mkdirdeep.c b/lustre/tests/mkdirdeep.c index cfd1535..95c3522 100644 --- a/lustre/tests/mkdirdeep.c +++ b/lustre/tests/mkdirdeep.c @@ -1,9 +1,43 @@ /* -*- 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. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 only, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License version 2 for more details (a copy is included + * in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU General Public License + * version 2 along with this program; If not, see [sun.com URL with a + * copy of GPLv2]. + * + * 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. + * + * GPL HEADER END + */ +/* + * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Use is subject to license terms. + */ +/* + * This file is part of Lustre, http://www.lustre.org/ + * Lustre is a trademark of Sun Microsystems, Inc. + * + * lustre/tests/mkdirdeep.c + * * Compile with: - * cc -I../../portals/include -o mkdirdeep mkdirdeep.c - * -L../../portals/linux/utils -lptlctl + * cc -I../../lnet/include -o mkdirdeep mkdirdeep.c + * -L../../lnet/linux/utils -lptlctl */ #include @@ -16,74 +50,82 @@ #include #include #include -#include +#include -static int opt_depth = 1; -static int opt_mknod = 0; static int opt_verbose = 0; -static int opt_trace = 1; -static char* basepathname = 0; -static char mycwd[PATH_MAX]; -static char* pname = 0; -static char* outputfilename = 0; +static int opt_trace = 0; -void usage() +void usage(const char *pname) { - fprintf(stderr, "Usage: %s --depth --output " - "[--mknod] [--verbose] [--notrace] \n", pname); + fprintf(stderr, "Usage: %s --depth [--output ]" + " [--mknod] [--verbose] [--notrace] \n", pname); exit(1); } -int do_mkdir(char* path) +int do_mkdir(char *path) { int rc = mkdir(path, 0755); - if (rc!=0) + + if (rc) { fprintf(stderr, "mkdir(%s) failed: %s\n", path, strerror(errno)); + exit(1); + } if (opt_verbose) printf("mkdir %s\n", path); + return rc; } -int do_mknod(char* path) +int do_mknod(char *path) { int rc = mknod(path, 0755, S_IFIFO); - if (rc!=0) + + if (rc) { fprintf(stderr, "mkdir(%s) failed: %s\n", path, strerror(errno)); + exit(1); + } if (opt_verbose) printf("mknod %s\n", path); + return rc; } int do_chdir(char* path) { int rc = chdir(path); - if (rc!=0) + + if (rc) { fprintf(stderr, "chdir(%s) failed: %s\n", path, strerror(errno)); + exit(1); + } if (opt_verbose) printf("chdir %s\n", path); return rc; } - -int do_stat(char* path) +int do_stat(char *path) { - char mark_buf[PATH_MAX]; + char mark_buf[PATH_MAX + 50]; struct stat mystat; int rc = stat(path, &mystat); - if (rc!=0) + + if (rc) { fprintf(stderr, "stat(%s) failed: %s\n", path, strerror(errno)); + exit(1); + } if (opt_verbose) - printf("stat %s = inode %lu\n", path, mystat.st_ino); + printf("stat %s = inode %lu\n", path, + (unsigned long)mystat.st_ino); if (opt_trace) { - snprintf(mark_buf, PATH_MAX, "stat %s = inode %lu", - path, mystat.st_ino); + snprintf(mark_buf, PATH_MAX, "stat %s = inode %lu", + path, (unsigned long)mystat.st_ino); ltrace_mark(0, mark_buf); } @@ -92,44 +134,40 @@ int do_stat(char* path) int main(int argc, char** argv) { - int c, opt_index, i, mypid; - - static struct option long_options[] = { - {"depth", 1, 0, 0 }, - {"help", 0, 0, 0 }, - {"mknod", 0, 0, 0 }, - {"verbose", 0, 0, 0 }, - {"notrace", 0, 0, 0 }, - {"output", 1, 0, 0 }, + int c, i, mypid; + int opt_depth = 1; + int opt_mknod = 0; + + static struct option long_opt[] = { + {"depth", 1, 0, 'd' }, + {"help", 0, 0, 'h' }, + {"mknod", 0, 0, 'm' }, + {"output", 1, 0, 'o' }, + {"trace", 1, 0, 't' }, + {"verbose", 0, 0, 'v' }, {0,0,0,0} }; - char full_pathname[PATH_MAX]; - char rel_pathname[PATH_MAX]; - char mark_buf[PATH_MAX]; + char *outputfilename = NULL; + char *base_pathname; + char pathname[PATH_MAX]; + char mark_buf[PATH_MAX + 50]; + char mycwd[PATH_MAX]; + char *pname = argv[0]; - pname = strdup(argv[0]); - - while (1) { - c = getopt_long(argc, argv, "d:mhv", long_options, &opt_index); - if (c == -1) - break; - if (c==0) { - if (!strcmp(long_options[opt_index].name, "notrace")) { - opt_trace = 0; - continue; - } - c = long_options[opt_index].name[0]; - } + while ((c = getopt_long(argc, argv, "d:mhvo:", long_opt, NULL)) != -1) { switch (c) { - case 'd': + case 'd': opt_depth = atoi(optarg); - if ((opt_depth == 0) || (opt_depth > 100)) - usage(); + if ((opt_depth == 0) || (opt_depth > 1100)) + usage(pname); break; case 'm': opt_mknod = 1; break; + case 't': + opt_trace = 1; + break; case 'v': opt_verbose = 1; break; @@ -137,92 +175,86 @@ int main(int argc, char** argv) outputfilename = optarg; break; case 'h': - case '?': - case ':': + case '?': + case ':': default: - usage(); + usage(pname); break; } } - - if (optind != (argc-1)) - usage(); - if (outputfilename == NULL) - usage(); + if (optind != (argc - 1)) + usage(pname); - basepathname = argv[optind]; + base_pathname = argv[optind]; mypid = getpid(); - - printf("%s(pid=%d) depth=%d mknod=%d, basepathname=%s, " - "trace=%d, outputfilename=%s\n", - pname, mypid, opt_depth, opt_mknod, basepathname, opt_trace, - outputfilename); if (!getcwd(&mycwd[0], sizeof(mycwd))) { fprintf(stderr, "%s: unable to getcwd()\n", pname); exit(1); } + printf("%s(pid=%d) depth=%d mknod=%d, basepathname=%s, trace=%d\n", + pname, mypid, opt_depth, opt_mknod, base_pathname, opt_trace); + + if (outputfilename) + printf("outputfilename=%s\n", outputfilename); + if (opt_trace) { ltrace_start(); ltrace_clear(); - snprintf(mark_buf, PATH_MAX, - "Initialize - mkdir %s; chdir %s", - basepathname, basepathname); + snprintf(mark_buf, PATH_MAX, "Initialize - mkdir %s; chdir %s", + base_pathname, base_pathname); ltrace_mark(2, mark_buf); } - if (do_mkdir(basepathname)!=0) + if (do_mkdir(base_pathname)!=0) exit(1); - if (do_chdir(basepathname)!=0) + if (do_chdir(base_pathname)!=0) exit(1); /* Create directory tree with depth level of subdirectories */ if (opt_trace) { - snprintf(mark_buf, PATH_MAX, + snprintf(mark_buf, PATH_MAX, "Create Directory Tree (depth %d)", opt_depth); ltrace_mark(2, mark_buf); } - for (i=0; i