extattr.c (613100918de03164200eb28f7db1a2b1d701a697) extattr.c (1bc2362e07cefcd69039f2a713faf17832150846)
1/*-
2 * Copyright (c) 2001 Robert N. M. Watson
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 8 unchanged lines hidden (view full) ---

17 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 * SUCH DAMAGE.
1/*-
2 * Copyright (c) 2001 Robert N. M. Watson
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 8 unchanged lines hidden (view full) ---

17 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 * SUCH DAMAGE.
25 *
26 * $FreeBSD$
25 */
26/*
27 * TrustedBSD: Utility functions for extended attributes.
28 */
29
27 */
28/*
29 * TrustedBSD: Utility functions for extended attributes.
30 */
31
30#include <sys/cdefs.h>
31__FBSDID("$FreeBSD$");
32
33#include <sys/types.h>
34#include <sys/extattr.h>
35
36#include <errno.h>
32#include <sys/types.h>
33#include <sys/extattr.h>
34
35#include <errno.h>
37#include <libutil.h>
38#include <string.h>
39
40int
36#include <string.h>
37
38int
41extattr_namespace_to_string(int attrnamespace, char **string)
39extattr_namespace_to_string(int namespace, char **string)
42{
43
40{
41
44 switch(attrnamespace) {
42 switch(namespace) {
45 case EXTATTR_NAMESPACE_USER:
43 case EXTATTR_NAMESPACE_USER:
46 if (string != NULL)
44 if (*string != NULL)
47 *string = strdup(EXTATTR_NAMESPACE_USER_STRING);
48 return (0);
49
50 case EXTATTR_NAMESPACE_SYSTEM:
45 *string = strdup(EXTATTR_NAMESPACE_USER_STRING);
46 return (0);
47
48 case EXTATTR_NAMESPACE_SYSTEM:
51 if (string != NULL)
49 if (*string != NULL)
52 *string = strdup(EXTATTR_NAMESPACE_SYSTEM_STRING);
53 return (0);
54
55 default:
56 errno = EINVAL;
57 return (-1);
58 }
59}
60
61int
50 *string = strdup(EXTATTR_NAMESPACE_SYSTEM_STRING);
51 return (0);
52
53 default:
54 errno = EINVAL;
55 return (-1);
56 }
57}
58
59int
62extattr_string_to_namespace(const char *string, int *attrnamespace)
60extattr_string_to_namespace(const char *string, int *namespace)
63{
64
65 if (!strcmp(string, EXTATTR_NAMESPACE_USER_STRING)) {
61{
62
63 if (!strcmp(string, EXTATTR_NAMESPACE_USER_STRING)) {
66 if (attrnamespace != NULL)
67 *attrnamespace = EXTATTR_NAMESPACE_USER;
64 if (namespace != NULL)
65 *namespace = EXTATTR_NAMESPACE_USER;
68 return (0);
69 } else if (!strcmp(string, EXTATTR_NAMESPACE_SYSTEM_STRING)) {
66 return (0);
67 } else if (!strcmp(string, EXTATTR_NAMESPACE_SYSTEM_STRING)) {
70 if (attrnamespace != NULL)
71 *attrnamespace = EXTATTR_NAMESPACE_SYSTEM;
68 if (namespace != NULL)
69 *namespace = EXTATTR_NAMESPACE_SYSTEM;
72 return (0);
73 } else {
74 errno = EINVAL;
75 return (-1);
76 }
77}
70 return (0);
71 } else {
72 errno = EINVAL;
73 return (-1);
74 }
75}