diff options
Diffstat (limited to 'lib/libutil')
-rw-r--r-- | lib/libutil/Makefile | 6 | ||||
-rw-r--r-- | lib/libutil/extattr.c | 75 | ||||
-rw-r--r-- | lib/libutil/libutil.h | 2 |
3 files changed, 80 insertions, 3 deletions
diff --git a/lib/libutil/Makefile b/lib/libutil/Makefile index 07db69abc443..2b7259c1bde6 100644 --- a/lib/libutil/Makefile +++ b/lib/libutil/Makefile @@ -6,9 +6,9 @@ SHLIB_MAJOR= 3 SHLIB_MINOR= 0 CFLAGS+=-Wall -DLIBC_SCCS -I${.CURDIR} -I${.CURDIR}/../../sys CFLAGS+=-DINET6 -SRCS= _secure_path.c auth.c fparseln.c login.c login_auth.c login_cap.c \ - login_class.c login_crypt.c login_ok.c login_times.c login_tty.c \ - logout.c logwtmp.c property.c pty.c realhostname.c stub.c \ +SRCS= _secure_path.c auth.c extattr.c fparseln.c login.c login_auth.c \ + login_cap.c login_class.c login_crypt.c login_ok.c login_times.c \ + login_tty.c logout.c logwtmp.c property.c pty.c realhostname.c stub.c \ trimdomain.c uucplock.c INCS= libutil.h login_cap.h diff --git a/lib/libutil/extattr.c b/lib/libutil/extattr.c new file mode 100644 index 000000000000..1fcfdbbcdaf4 --- /dev/null +++ b/lib/libutil/extattr.c @@ -0,0 +1,75 @@ +/*- + * Copyright (c) 2001 Robert N. M. Watson + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ +/* + * TrustedBSD: Utility functions for extended attributes. + */ + +#include <sys/types.h> +#include <sys/extattr.h> + +#include <errno.h> +#include <string.h> + +int +extattr_namespace_to_string(int namespace, char **string) +{ + + switch(namespace) { + case EXTATTR_NAMESPACE_USER: + if (*string != NULL) + *string = strdup(EXTATTR_NAMESPACE_USER_STRING); + return (0); + + case EXTATTR_NAMESPACE_SYSTEM: + if (*string != NULL) + *string = strdup(EXTATTR_NAMESPACE_SYSTEM_STRING); + return (0); + + default: + errno = EINVAL; + return (-1); + } +} + +int +extattr_string_to_namespace(const char *string, int *namespace) +{ + + if (!strcmp(string, EXTATTR_NAMESPACE_USER_STRING)) { + if (namespace != NULL) + *namespace = EXTATTR_NAMESPACE_USER; + return (0); + } else if (!strcmp(string, EXTATTR_NAMESPACE_SYSTEM_STRING)) { + if (namespace != NULL) + *namespace = EXTATTR_NAMESPACE_SYSTEM; + return (0); + } else { + errno = EINVAL; + return (-1); + } +} diff --git a/lib/libutil/libutil.h b/lib/libutil/libutil.h index 4125b1ac1cca..6bebea00b30f 100644 --- a/lib/libutil/libutil.h +++ b/lib/libutil/libutil.h @@ -48,6 +48,8 @@ struct utmp; struct in_addr; __BEGIN_DECLS +int extattr_namespace_to_string(int namespace, char **string); +int extattr_string_to_namespace(const char *string, int *namespace); void login __P((struct utmp *_ut)); int login_tty __P((int _fd)); int logout __P((const char *_line)); |