From 1ff9d8a9ccaf6e95ae6d10a8595dd2003220f1c0 Mon Sep 17 00:00:00 2001 From: Enrico Scholz Date: Fri, 5 Mar 2004 03:26:18 +0000 Subject: [PATCH] added support for VC_IATTR_IMMUTABLE flag git-svn-id: http://svn.linux-vserver.org/svn/util-vserver/trunk@1083 94cd875c-1c1d-0410-91d2-eb244daf1a30 --- util-vserver/src/fstool.c | 8 ++++---- util-vserver/src/fstool.h | 4 ++-- util-vserver/src/setattr.c | 4 +++- util-vserver/src/showattr.c | 11 ++++++----- 4 files changed, 15 insertions(+), 12 deletions(-) diff --git a/util-vserver/src/fstool.c b/util-vserver/src/fstool.c index d732bc3..d493831 100644 --- a/util-vserver/src/fstool.c +++ b/util-vserver/src/fstool.c @@ -195,8 +195,6 @@ int main(int argc, char *argv[]) .do_display_dot = false, .do_display_dir = false, .do_mapping = true, - .immutable = false, - .immulink = false, .ctx = VC_NOCTX, .is_legacy = false, .do_set = false, @@ -215,12 +213,14 @@ int main(int argc, char *argv[]) switch (c) { case CMD_HELP : showHelp(1, argv[0], 0); case CMD_VERSION : showVersion(); - case CMD_IMMU : args.set_mask |= VC_IATTR_IUNLINK; break; + 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_UNSET_IMMU : args.del_mask |= VC_IATTR_IUNLINK; 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; diff --git a/util-vserver/src/fstool.h b/util-vserver/src/fstool.h index 74c4d24..cfc2765 100644 --- a/util-vserver/src/fstool.h +++ b/util-vserver/src/fstool.h @@ -32,11 +32,13 @@ #define CMD_WATCH 0x8012 #define CMD_HIDE 0x8013 #define CMD_BARRIER 0x8014 +#define CMD_IMMUX 0x8015 #define CMD_UNSET_IMMU 0x8020 #define CMD_UNSET_ADMIN 0x8021 #define CMD_UNSET_WATCH 0x8022 #define CMD_UNSET_HIDE 0x8023 #define CMD_UNSET_BARRIER 0x8024 +#define CMD_UNSET_IMMUX 0x8025 struct stat; @@ -46,8 +48,6 @@ struct Arguments { bool do_display_dot; bool do_display_dir; bool do_mapping; - bool immutable; - bool immulink; char const * ctx_str; xid_t ctx; bool is_legacy; diff --git a/util-vserver/src/setattr.c b/util-vserver/src/setattr.c index bb603b8..4b7acee 100644 --- a/util-vserver/src/setattr.c +++ b/util-vserver/src/setattr.c @@ -49,6 +49,8 @@ CMDLINE_OPTIONS[] = { { "~watch", no_argument, 0, CMD_UNSET_WATCH }, { "~hide", no_argument, 0, CMD_UNSET_HIDE }, { "~barrier", no_argument, 0, CMD_UNSET_BARRIER }, + { "iunlink-but-not-immutable", no_argument, 0, CMD_IMMUX }, + { "~iunlink-but-not-immutable", no_argument, 0, CMD_UNSET_IMMUX }, { 0,0,0,0 } }; @@ -60,7 +62,7 @@ showHelp(int fd, char const *cmd, int res) WRITE_MSG(fd, "Usage: "); WRITE_STR(fd, cmd); WRITE_MSG(fd, - " [-Rx] [--[~]iunlink] [--[~]admin] [--[~]watch] [--[~]hide] [--[~]barrier] [--] +\n\n" + " [-Rx] [--[~](iunlink|admin|watch|hide|barrier|iunlink-but-not-immutable)]* [--] +\n\n" " Options:\n" " -R ... recurse through directories\n" " -x ... do not cross filesystems\n\n" diff --git a/util-vserver/src/showattr.c b/util-vserver/src/showattr.c index 91cb638..c5a04dd 100644 --- a/util-vserver/src/showattr.c +++ b/util-vserver/src/showattr.c @@ -105,13 +105,14 @@ handleFile(char const *name, char const *display_name) memset(buf, ' ', sizeof buf); if (getFlags(name, &flags, &mask)) { - // 1 1 0 0 - // fedcba9876543210fedcba9876543210 - static char const MARKER[33] = ".......x......ib.............hwa"; + // 1 1 0 0 + // fedcba9876543210fedcba9876543210 + static char const MARKER[33] = ".......x.....iub.............hwa"; int i; uint32_t used_flags = (VC_IATTR_XID|VC_IATTR_ADMIN| VC_IATTR_WATCH|VC_IATTR_HIDE| - VC_IATTR_BARRIER|VC_IATTR_IUNLINK); + VC_IATTR_BARRIER|VC_IATTR_IUNLINK| + VC_IATTR_IMMUTABLE); for (i=0; i<32; ++i) { if (used_flags & 1) { @@ -126,7 +127,7 @@ handleFile(char const *name, char const *display_name) } } else { - memcpy(buf, "ERR ", 6); + memcpy(buf, "ERR ", 7); res = false; } -- 1.8.1.5