use $(LIBENSCVECTOR) instead of libensc_vector.a
[util-vserver.git] / util-vserver / src / chxid.c
index 32d6683..7235847 100644 (file)
@@ -66,46 +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);
-  int          rc;
-
-  if (fd==-1) {
-    perror("open()");
-    return false;
-  }
-
-  // this is still needed... the file must be open so that vc_set_iattr()
-  // operates on a known file/inode
-  if (!exp_st ||
-      !checkForRace(fd, name, exp_st))
-    goto err;
-
-  rc = vc_set_iattr_compat(name, exp_st->st_dev, exp_st->st_ino,
-                          global_args->ctx, 0, VC_IATTR_XID);
+  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
@@ -121,6 +92,7 @@ fixupParams(struct Arguments UNUSED *args, int argc)
     exit(1);
   }
 
-  args->ctx            = resolveCtx(args->ctx_str);
-  args->do_display_dir = false;  
+  args->ctx            = vc_xidopt2xid(args->ctx_str, true, 0);
+  args->do_display_dir = !args->do_recurse;
+  args->do_display_dot = true;
 }