X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=util-vserver%2Fsrc%2Fchxid.c;h=f6bd807eeaf1aca721a989156f52f7cd0b761df1;hb=a917f24ef7b003dcef54a3db2644cf9cb4bc2db2;hp=0bf737c4142384bbba2b62ede41a88fba009c99b;hpb=8b8d663cd844948ab38f43b94540a62ab533cabd;p=util-vserver.git diff --git a/util-vserver/src/chxid.c b/util-vserver/src/chxid.c index 0bf737c..f6bd807 100644 --- a/util-vserver/src/chxid.c +++ b/util-vserver/src/chxid.c @@ -66,41 +66,17 @@ showVersion() exit(0); } -static bool -setFile(char const *name, char const * display_name, struct stat const *exp_st) +bool +handleFile(char const *name, char const * display_name) { - bool res = false; - int fd = open(name, O_RDONLY); - - if (fd==-1) { - perror("open()"); - return false; - } - - if (!exp_st || - !checkForRace(fd, name, exp_st)) - goto err; - - if (vc_X_set_filecontext(fd, global_args->ctx)==-1) { - //perror("vc_X_set_filecontext()"); + int rc = vc_set_iattr(name, global_args->ctx, 0, VC_IATTR_XID); + + if (rc==-1) { perror(display_name); - goto err; + return false; } - res = true; - - err: - close(fd); - return res; -} - -bool -handleFile(char const *name, char const * display_name, - struct stat const *exp_st) -{ - if (!S_ISREG(exp_st->st_mode)) return true; - - return setFile(name, display_name, exp_st); + return true; } void @@ -116,5 +92,7 @@ fixupParams(struct Arguments UNUSED *args, int argc) exit(1); } - args->ctx = resolveCtx(args->ctx_str); + args->ctx = resolveCtx(args->ctx_str); + args->do_display_dir = !args->do_recurse; + args->do_display_dot = true; }