{ 0,0,0,0 }
};
-char const CMDLINE_OPTIONS_SHORT[] = "Radn";
+char const CMDLINE_OPTIONS_SHORT[] = "Radnx";
void
showHelp(int fd, char const *cmd, int res)
WRITE_MSG(fd, "Usage: ");
WRITE_STR(fd, cmd);
WRITE_MSG(fd,
- " [-Radn] [--] <file>*\n\n"
+ " [-Radnx] [--] <file>*\n\n"
" Options:\n"
" -R ... recurse through directories\n"
" -a ... display files starting with '.' also\n"
" -d ... list directories like other files instead of\n"
" listing their content\n"
" -n ... do not try to do xid -> vserver-name mapping\n"
+ " -x ... do not cross filesystems\n\n"
"Please report bugs to " PACKAGE_BUGREPORT "\n");
exit(res);
}
}
void
-checkParams(struct Arguments const UNUSED * args, int UNUSED argc)
+fixupParams(struct Arguments UNUSED * args, int UNUSED argc)
{
}
static xid_t
getFileContext(char const *name, struct stat const *exp_st)
{
- int fd = open(name, O_RDONLY);
xid_t res;
+ uint32_t mask = VC_IATTR_XID;
- if (fd==-1) {
- perror("open()");
- return VC_NOCTX;
- }
-
- if (exp_st)
- checkForRace(fd, name, exp_st);
-
- res = vc_X_get_filecontext(fd);
- if (res==VC_NOCTX)
- perror("vc_X_get_filecontext()");
-
- close(fd);
+ if (vc_get_iattr_compat(name, exp_st->st_dev, exp_st->st_ino,
+ &res, 0, &mask)==-1)
+ perror("vc_get_iattr_compat()");
- return res;
+ return (mask&VC_IATTR_XID) ? res : VC_NOCTX;
}
bool
memset(buf, ' ', sizeof buf);
- if (S_ISLNK(exp_st->st_mode)) {
+ if (!S_ISREG(exp_st->st_mode)) {
memcpy(buf, "-------", 7);
write(1, buf, sizeof buf);
need_write = false;