cmd/boot: usr/src/cmd/boot build needs cleanup
[unleashed.git] / usr / src / common / xattr / xattr_common.c
blobe9b511bd996a682c2141dc55d034d762780dbbc3
1 /*
2 * CDDL HEADER START
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
19 * CDDL HEADER END
22 * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
25 #include <sys/attr.h>
26 #if defined(_KERNEL)
27 #include <sys/systm.h>
28 #else
29 #include <strings.h>
30 #endif
33 * This table maps each system attribute to its option and its view.
34 * All new system attrs must be added to this table. To add a new view,
35 * add another entry to xattr_dirents[] and update xattr_view_t in sys/attr.h.
36 * Also, xattr_file_pathconf() and sys/unistd.h should be updated to add
37 * return values for the new view.
40 static xattr_entry_t xattrs[F_ATTR_ALL] = {
41 { A_ARCHIVE, O_ARCHIVE, XATTR_VIEW_READWRITE, DATA_TYPE_BOOLEAN_VALUE },
42 { A_HIDDEN, O_HIDDEN, XATTR_VIEW_READWRITE, DATA_TYPE_BOOLEAN_VALUE },
43 { A_READONLY, O_READONLY, XATTR_VIEW_READWRITE,
44 DATA_TYPE_BOOLEAN_VALUE },
45 { A_SYSTEM, O_SYSTEM, XATTR_VIEW_READWRITE, DATA_TYPE_BOOLEAN_VALUE },
46 { A_APPENDONLY, O_APPENDONLY, XATTR_VIEW_READWRITE,
47 DATA_TYPE_BOOLEAN_VALUE },
48 { A_NODUMP, O_NODUMP, XATTR_VIEW_READWRITE, DATA_TYPE_BOOLEAN_VALUE },
49 { A_IMMUTABLE, O_IMMUTABLE, XATTR_VIEW_READWRITE,
50 DATA_TYPE_BOOLEAN_VALUE },
51 { A_AV_MODIFIED, O_AV_MODIFIED, XATTR_VIEW_READWRITE,
52 DATA_TYPE_BOOLEAN_VALUE },
53 { A_OPAQUE, O_NONE, XATTR_VIEW_READONLY, DATA_TYPE_BOOLEAN_VALUE },
54 { A_AV_SCANSTAMP, O_NONE, XATTR_VIEW_READONLY, DATA_TYPE_UINT8_ARRAY },
55 { A_AV_QUARANTINED, O_AV_QUARANTINED, XATTR_VIEW_READWRITE,
56 DATA_TYPE_BOOLEAN_VALUE },
57 { A_NOUNLINK, O_NOUNLINK, XATTR_VIEW_READWRITE,
58 DATA_TYPE_BOOLEAN_VALUE },
59 { A_CRTIME, O_NONE, XATTR_VIEW_READWRITE, DATA_TYPE_UINT64_ARRAY },
60 { A_OWNERSID, O_NONE, XATTR_VIEW_READWRITE, DATA_TYPE_NVLIST },
61 { A_GROUPSID, O_NONE, XATTR_VIEW_READWRITE, DATA_TYPE_NVLIST },
62 { A_FSID, O_NONE, XATTR_VIEW_READONLY, DATA_TYPE_UINT64 },
63 { A_REPARSE_POINT, O_REPARSE_POINT, XATTR_VIEW_READONLY,
64 DATA_TYPE_BOOLEAN_VALUE },
65 { A_GEN, O_NONE, XATTR_VIEW_READONLY, DATA_TYPE_UINT64 },
66 { A_OFFLINE, O_OFFLINE, XATTR_VIEW_READWRITE, DATA_TYPE_BOOLEAN_VALUE },
67 { A_SPARSE, O_SPARSE, XATTR_VIEW_READWRITE, DATA_TYPE_BOOLEAN_VALUE },
70 const char *
71 attr_to_name(f_attr_t attr)
73 if (attr >= F_ATTR_ALL || attr < 0)
74 return (NULL);
76 return (xattrs[attr].x_name);
79 const char *
80 attr_to_option(f_attr_t attr)
82 if (attr >= F_ATTR_ALL || attr < 0)
83 return (NULL);
85 return (xattrs[attr].x_option);
88 f_attr_t
89 name_to_attr(const char *name)
91 int i;
93 for (i = 0; i < F_ATTR_ALL; i++) {
94 if (strcmp(name, xattrs[i].x_name) == 0)
95 return (i);
98 return (F_ATTR_INVAL);
101 f_attr_t
102 option_to_attr(const char *option)
104 int i;
106 for (i = 0; i < F_ATTR_ALL; i++) {
107 if (strcmp(option, xattrs[i].x_option) == 0)
108 return (i);
111 return (F_ATTR_INVAL);
114 xattr_view_t
115 attr_to_xattr_view(f_attr_t attr)
117 if (attr >= F_ATTR_ALL || attr < 0)
118 return (XATTR_VIEW_INVALID);
120 return (xattrs[attr].x_xattr_view);
124 attr_count(void)
126 return (F_ATTR_ALL);
129 data_type_t
130 attr_to_data_type(f_attr_t attr)
132 if (attr >= F_ATTR_ALL || attr < 0)
133 return (DATA_TYPE_UNKNOWN);
135 return (xattrs[attr].x_data_type);