catattr can now show attributes on symlinks through the option P
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36473 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
edd11dcdc9
commit
3b1f35c046
@ -96,9 +96,10 @@ type_to_string(uint32 type)
|
|||||||
|
|
||||||
|
|
||||||
static status_t
|
static status_t
|
||||||
catAttr(const char *attribute, const char *fileName, bool keepRaw = false)
|
catAttr(const char *attribute, const char *fileName, bool keepRaw = false,
|
||||||
|
bool resolveLinks = true)
|
||||||
{
|
{
|
||||||
int fd = open(fileName, O_RDONLY);
|
int fd = open(fileName, O_RDONLY | (resolveLinks ? 0 : O_NOTRAVERSE));
|
||||||
if (fd < 0)
|
if (fd < 0)
|
||||||
return errno;
|
return errno;
|
||||||
|
|
||||||
@ -255,7 +256,13 @@ main(int argc, char *argv[])
|
|||||||
if (argc > 2) {
|
if (argc > 2) {
|
||||||
int32 attrNameIndex = 1;
|
int32 attrNameIndex = 1;
|
||||||
bool keepRaw = false;
|
bool keepRaw = false;
|
||||||
|
bool resolveLinks = true;
|
||||||
|
|
||||||
|
if (!strcmp(argv[attrNameIndex], "-P")) {
|
||||||
|
resolveLinks = false;
|
||||||
|
attrNameIndex++;
|
||||||
|
}
|
||||||
|
|
||||||
// see if user wants to get to the raw data of the attribute
|
// see if user wants to get to the raw data of the attribute
|
||||||
if (strcmp(argv[attrNameIndex], "--raw") == 0 ||
|
if (strcmp(argv[attrNameIndex], "--raw") == 0 ||
|
||||||
strcmp(argv[attrNameIndex], "-r") == 0) {
|
strcmp(argv[attrNameIndex], "-r") == 0) {
|
||||||
@ -265,16 +272,19 @@ main(int argc, char *argv[])
|
|||||||
|
|
||||||
// Cat the attribute for every file given
|
// Cat the attribute for every file given
|
||||||
for (int32 i = attrNameIndex + 1; i < argc; i++) {
|
for (int32 i = attrNameIndex + 1; i < argc; i++) {
|
||||||
status_t status = catAttr(argv[attrNameIndex], argv[i], keepRaw);
|
status_t status = catAttr(argv[attrNameIndex], argv[i], keepRaw,
|
||||||
|
resolveLinks);
|
||||||
if (status != B_OK) {
|
if (status != B_OK) {
|
||||||
fprintf(stderr, "%s: file \"%s\", attribute \"%s\": %s\n",
|
fprintf(stderr, "%s: \"%s\", attribute \"%s\": %s\n",
|
||||||
program, argv[i], argv[attrNameIndex], strerror(status));
|
program, argv[i], argv[attrNameIndex], strerror(status));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Issue usage message
|
// Issue usage message
|
||||||
fprintf(stderr, "usage: %s [--raw|-r] <attribute-name> <file1> "
|
fprintf(stderr, "usage: %s [-P] [--raw|-r] <attribute-name> <file1> "
|
||||||
"[<file2>...]\n", program);
|
"[<file2>...]\n"
|
||||||
|
"\t-P : Don't resolve links\n"
|
||||||
|
"\t--raw|-r : Get the raw data of attributes\n", program);
|
||||||
// Be's original version -only- returned 1 if the
|
// Be's original version -only- returned 1 if the
|
||||||
// amount of parameters was wrong, not if the file
|
// amount of parameters was wrong, not if the file
|
||||||
// or attribute couldn't be found (!)
|
// or attribute couldn't be found (!)
|
||||||
|
Loading…
Reference in New Issue
Block a user