Update lsextattr(8) to use the new extattr_list_*() APIs, rather than

using the somewhat more hackish variant on extattr_get_*() to retrieve
the attribute list on an object.

Obtained from:	TrustedBSD Project
Sponsored by:	DARPA, Network Associates Laboratories
This commit is contained in:
Robert Watson 2003-06-05 04:30:00 +00:00
parent bba9599afb
commit 52271f82d6
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=115864

View File

@ -1,5 +1,5 @@
/*-
* Copyright (c) 2002 Networks Associates Technology, Inc.
* Copyright (c) 2002, 2003 Networks Associates Technology, Inc.
* Copyright (c) 2002 Poul-Henning Kamp.
* Copyright (c) 1999, 2000, 2001, 2002 Robert N. M. Watson
* All rights reserved.
@ -175,12 +175,11 @@ main(int argc, char *argv[])
err(-1, argv[0]);
argc--; argv++;
if (what == EALS) {
attrname = "";
} else {
if (what != EALS) {
attrname = argv[0];
argc--; argv++;
}
} else
attrname = NULL;
if (what == EASET) {
mkbuf(&buf, &buflen, strlen(argv[0]) + 1);
@ -213,6 +212,30 @@ main(int argc, char *argv[])
continue;
break;
case EALS:
if (flag_nofollow)
error = extattr_list_link(argv[arg_counter],
attrnamespace, NULL, 0);
else
error = extattr_list_file(argv[arg_counter],
attrnamespace, NULL, 0);
if (error < 0)
break;
mkbuf(&buf, &buflen, error);
if (flag_nofollow)
error = extattr_list_link(argv[arg_counter],
attrnamespace, buf, buflen);
else
error = extattr_list_file(argv[arg_counter],
attrnamespace, buf, buflen);
if (error < 0)
break;
if (!flag_quiet)
printf("%s\t", argv[arg_counter]);
for (i = 0; i < error; i += buf[i] + 1)
printf("%s%*.*s", i ? "\t" : "",
buf[i], buf[i], buf + i + 1);
printf("\n");
continue;
case EAGET:
if (flag_nofollow)
error = extattr_get_link(argv[arg_counter],
@ -233,13 +256,6 @@ main(int argc, char *argv[])
break;
if (!flag_quiet)
printf("%s\t", argv[arg_counter]);
if (what == EALS) {
for (i = 0; i < error; i += buf[i] + 1)
printf("%s%*.*s", i ? "\t" : "",
buf[i], buf[i], buf + i + 1);
printf("\n");
continue;
}
if (flag_string) {
mkbuf(&visbuf, &visbuflen, error * 4 + 1);
strvisx(visbuf, buf, error,