o Update getextattr and setextattr utilities to take into account the
revised EA interface with explicit namespacing. Link against libutil to provide string/constant conversion for namespaces. Document revised interface. Obtained from: TrustedBSD Project
This commit is contained in:
parent
bf6afea751
commit
187e87911c
@ -1,6 +1,7 @@
|
||||
# $FreeBSD$
|
||||
PROG= getextattr
|
||||
SRCS= getextattr.c
|
||||
LDADD= ${LIBUTIL}
|
||||
CFLAGS+= -Wall
|
||||
MAN8= getextattr.8
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
.\"-
|
||||
.\" Copyright (c) 2000 Robert N. M. Watson
|
||||
.\" Copyright (c) 2000, 2001 Robert N. M. Watson
|
||||
.\" All rights reserved.
|
||||
.\"
|
||||
.\" Redistribution and use in source and binary forms, with or without
|
||||
@ -34,6 +34,7 @@
|
||||
.Sh SYNOPSIS
|
||||
.Nm
|
||||
.Op Fl ls
|
||||
.Ar namespace
|
||||
.Ar attrname
|
||||
.Ar filename ...
|
||||
.Sh DESCRIPTION
|
||||
@ -41,6 +42,10 @@
|
||||
is a user tool to retrieve a named extended attribute on a file or
|
||||
directory.
|
||||
The
|
||||
.Ar namespace
|
||||
argument should be the namespace of the attribute to retrieve: legal
|
||||
values are "user" and "system".
|
||||
The
|
||||
.Ar attrname
|
||||
argument should be the name of the attribute, and
|
||||
.Ar filename
|
||||
@ -70,7 +75,7 @@ to succeed, the attribute service must be available on the file system,
|
||||
and the attribute must of defined for the file queried.
|
||||
.Sh EXAMPLES
|
||||
.Bd -literal -offset indent
|
||||
# getextattr md5 /kernel
|
||||
# getextattr system md5 /kernel
|
||||
/kernel:
|
||||
61 61 33 62 39 39 66 65 31 35 35 32 31 62 65 32
|
||||
62 36 38 36 62 31 66 39 63 64 33 39 35 36 36 31
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*-
|
||||
* Copyright (c) 1999, 2000 Robert N. M. Watson
|
||||
* Copyright (c) 1999, 2000, 2001 Robert N. M. Watson
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -23,7 +23,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $FreeBSD$
|
||||
* $FreeBSD$
|
||||
*/
|
||||
/*
|
||||
* TrustedBSD Project - extended attribute support
|
||||
@ -32,6 +32,7 @@
|
||||
#include <sys/uio.h>
|
||||
#include <sys/extattr.h>
|
||||
|
||||
#include <libutil.h>
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#include <vis.h>
|
||||
@ -40,7 +41,8 @@ void
|
||||
usage(void)
|
||||
{
|
||||
|
||||
fprintf(stderr, "getextattr [-s] [attrname] [filename ...]\n");
|
||||
fprintf(stderr, "getextattr [-s] [namespace] [attrname] "
|
||||
"[filename ...]\n");
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
@ -56,7 +58,7 @@ main(int argc, char *argv[])
|
||||
char *attrname;
|
||||
char buf[BUFSIZE];
|
||||
char visbuf[BUFSIZE*4];
|
||||
int error, i, arg_counter;
|
||||
int error, i, arg_counter, namespace;
|
||||
int ch;
|
||||
|
||||
int flag_as_string = 0;
|
||||
@ -78,10 +80,15 @@ main(int argc, char *argv[])
|
||||
argc -= optind;
|
||||
argv += optind;
|
||||
|
||||
if (argc <= 1)
|
||||
if (argc < 3)
|
||||
usage();
|
||||
|
||||
attrname = argv[0];
|
||||
error = extattr_string_to_namespace(argv[0], &namespace);
|
||||
if (error) {
|
||||
perror(argv[0]);
|
||||
return (-1);
|
||||
}
|
||||
attrname = argv[1];
|
||||
|
||||
argc--;
|
||||
argv++;
|
||||
@ -89,8 +96,8 @@ main(int argc, char *argv[])
|
||||
iov_buf.iov_base = buf;
|
||||
iov_buf.iov_len = BUFSIZE;
|
||||
|
||||
for (arg_counter = 0; arg_counter < argc; arg_counter++) {
|
||||
error = extattr_get_file(argv[arg_counter], attrname,
|
||||
for (arg_counter = 1; arg_counter < argc; arg_counter++) {
|
||||
error = extattr_get_file(argv[arg_counter], namespace, attrname,
|
||||
&iov_buf, 1);
|
||||
|
||||
if (error == -1)
|
||||
|
@ -1,6 +1,7 @@
|
||||
# $FreeBSD$
|
||||
PROG= setextattr
|
||||
SRCS= setextattr.c
|
||||
LDADD= ${LIBUTIL}
|
||||
CFLAGS+= -Wall
|
||||
MAN8+= setextattr.8
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
.\"-
|
||||
.\" Copyright (c) 2000 Robert N. M. Watson
|
||||
.\" Copyright (c) 2000, 2001 Robert N. M. Watson
|
||||
.\" All rights reserved.
|
||||
.\"
|
||||
.\" Redistribution and use in source and binary forms, with or without
|
||||
@ -23,7 +23,7 @@
|
||||
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
.\" SUCH DAMAGE.
|
||||
.\"
|
||||
.\" $FreeBSD$
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.Dd March 30, 2000
|
||||
.Dt SETEXTATTR 8
|
||||
@ -33,6 +33,7 @@
|
||||
.Nd set a named extended attribute
|
||||
.Sh SYNOPSIS
|
||||
.Nm
|
||||
.Ar namespace
|
||||
.Ar attrname
|
||||
.Ar filename
|
||||
.Ar attrvalue
|
||||
@ -41,6 +42,10 @@
|
||||
is a user tool to set a named extended attribute on a file or directory to
|
||||
the provided string.
|
||||
The
|
||||
.Ar namespace
|
||||
argument should be the namespace of the attribute to retrieve: legal
|
||||
values are "user" and "system".
|
||||
The
|
||||
.Ar attrname
|
||||
argument should be the name of the attribute,
|
||||
.Ar filename
|
||||
@ -54,7 +59,7 @@ In order for
|
||||
to succeed, the attribute service must be available on the file system,
|
||||
and appropriate privilege may be required.
|
||||
.Sh EXAMPLES
|
||||
.Dl # setextattr md5 /kernel `md5 -q /kernel`
|
||||
.Dl # setextattr system md5 /kernel `md5 -q /kernel`
|
||||
.Pp
|
||||
Set the
|
||||
.Dq md5
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*-
|
||||
* Copyright (c) 1999, 2000 Robert N. M. Watson
|
||||
* Copyright (c) 1999, 2000, 2001 Robert N. M. Watson
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -23,7 +23,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $FreeBSD$
|
||||
* $FreeBSD$
|
||||
*/
|
||||
/*
|
||||
* TrustedBSD Project - extended attribute support for UFS-like file systems
|
||||
@ -32,13 +32,16 @@
|
||||
#include <sys/types.h>
|
||||
#include <sys/uio.h>
|
||||
#include <sys/extattr.h>
|
||||
|
||||
#include <libutil.h>
|
||||
#include <stdio.h>
|
||||
|
||||
void
|
||||
usage(void)
|
||||
{
|
||||
|
||||
fprintf(stderr, "setextattr [attrname] [filename] [attrvalue]\n");
|
||||
fprintf(stderr, "setextattr [namespace] [attrname] [filename] "
|
||||
"[attrvalue]\n");
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
@ -46,17 +49,23 @@ int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
struct iovec iov_buf;
|
||||
int error;
|
||||
int error, namespace;
|
||||
|
||||
if (argc != 4)
|
||||
if (argc != 5)
|
||||
usage();
|
||||
|
||||
iov_buf.iov_base = argv[3];
|
||||
iov_buf.iov_len = strlen(argv[3]);
|
||||
error = extattr_string_to_namespace(argv[1], &namespace);
|
||||
if (error) {
|
||||
perror(argv[1]);
|
||||
return (-1);
|
||||
}
|
||||
|
||||
error = extattr_set_file(argv[2], argv[1], &iov_buf, 1);
|
||||
iov_buf.iov_base = argv[4];
|
||||
iov_buf.iov_len = strlen(argv[4]);
|
||||
|
||||
error = extattr_set_file(argv[3], namespace, argv[2], &iov_buf, 1);
|
||||
if (error == -1) {
|
||||
perror("extattr_set_file");
|
||||
perror(argv[3]);
|
||||
return (-1);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user