X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;ds=sidebyside;f=src%2Ffstool.c;h=cc2b3f0055d35c8a57ceb6a06164b1e2364da914;hb=ec4370f7ebd7fb0ce7f002f5bf2c74f03acd3ec1;hp=4bb8b8f187afe2c75c49041f2de277a160854e42;hpb=2822ba293eb308225c50d346930c47bf98d9927b;p=util-vserver.git diff --git a/src/fstool.c b/src/fstool.c index 4bb8b8f..cc2b3f0 100644 --- a/src/fstool.c +++ b/src/fstool.c @@ -1,4 +1,4 @@ -// $Id: fstool.c,v 1.8 2004/08/19 14:29:25 ensc Exp $ --*- c -*-- +// $Id: fstool.c 2473 2007-01-25 09:51:43Z dhozac $ --*- c -*-- // Copyright (C) 2004 Enrico Scholz // @@ -156,8 +156,13 @@ processFile(char const *path) } if (S_ISDIR(st.st_mode) && !global_args->do_display_dir) { + int cur_dir = Eopen(".", O_RDONLY, 0); + uint64_t ret; Echdir(path); - return iterateFilesystem(path); + ret = iterateFilesystem(path); + Efchdir(cur_dir); + Eclose(cur_dir); + return ret; } else return handleFile(path, path) ? 0 : 1; @@ -177,8 +182,9 @@ int main(int argc, char *argv[]) .do_set = false, .do_unset = false, .local_fs = false, - .set_mask = 0, - .del_mask = 0 + .set_mask = 0, + .del_mask = 0, + .no_unified = false, }; global_args = &args; @@ -191,29 +197,32 @@ int main(int argc, char *argv[]) case CMD_HELP : showHelp(1, argv[0], 0); case CMD_VERSION : showVersion(); case CMD_IMMU : args.set_mask |= VC_IATTR_IMMUTABLE; /*@fallthrough@*/ - case CMD_IMMUX : args.set_mask |= VC_IATTR_IUNLINK; break; - case CMD_ADMIN : args.set_mask |= VC_IATTR_ADMIN; break; - case CMD_WATCH : args.set_mask |= VC_IATTR_WATCH; break; - case CMD_HIDE : args.set_mask |= VC_IATTR_HIDE; break; - case CMD_BARRIER : args.set_mask |= VC_IATTR_BARRIER; break; + case CMD_IMMUX : args.set_mask |= VC_IATTR_IUNLINK; break; + case CMD_IMMUTABLE : args.set_mask |= VC_IATTR_IMMUTABLE; break; + case CMD_ADMIN : args.set_mask |= VC_IATTR_ADMIN; break; + case CMD_WATCH : args.set_mask |= VC_IATTR_WATCH; break; + case CMD_HIDE : args.set_mask |= VC_IATTR_HIDE; break; + case CMD_BARRIER : args.set_mask |= VC_IATTR_BARRIER; break; case CMD_UNSET_IMMU : args.del_mask |= VC_IATTR_IMMUTABLE; /*@fallthrough@*/ - case CMD_UNSET_IMMUX : args.del_mask |= VC_IATTR_IUNLINK; break; - case CMD_UNSET_ADMIN : args.del_mask |= VC_IATTR_ADMIN; break; - case CMD_UNSET_WATCH : args.del_mask |= VC_IATTR_WATCH; break; - case CMD_UNSET_HIDE : args.del_mask |= VC_IATTR_HIDE; break; - case CMD_UNSET_BARRIER : args.del_mask |= VC_IATTR_BARRIER; break; - case 'R' : args.do_recurse = true; break; - case 'a' : args.do_display_dot = true; break; - case 'd' : args.do_display_dir = true; break; - case 'n' : args.do_mapping = false; break; - case 's' : args.do_set = true; break; - case 'u' : args.do_unset = true; break; - case 'c' : args.ctx_str = optarg; break; - case 'x' : args.local_fs = true; break; + case CMD_UNSET_IMMUX : args.del_mask |= VC_IATTR_IUNLINK; break; + case CMD_UNSET_IMMUTABLE : args.del_mask |= VC_IATTR_IMMUTABLE; break; + case CMD_UNSET_ADMIN : args.del_mask |= VC_IATTR_ADMIN; break; + case CMD_UNSET_WATCH : args.del_mask |= VC_IATTR_WATCH; break; + case CMD_UNSET_HIDE : args.del_mask |= VC_IATTR_HIDE; break; + case CMD_UNSET_BARRIER : args.del_mask |= VC_IATTR_BARRIER; break; + case 'R' : args.do_recurse = true; break; + case 'a' : args.do_display_dot = true; break; + case 'd' : args.do_display_dir = true; break; + case 'n' : args.do_mapping = false; break; + case 's' : args.do_set = true; break; + case 'u' : args.do_unset = true; break; + case 'c' : args.ctx_str = optarg; break; + case 'x' : args.local_fs = true; break; + case 'U' : args.no_unified = true; break; default : WRITE_MSG(2, "Try '"); WRITE_STR(2, argv[0]); - WRITE_MSG(2, " --help\" for more information.\n"); + WRITE_MSG(2, " --help' for more information.\n"); return EXIT_FAILURE; break; }