1 // SPDX-License-Identifier: 0BSD
2 
3 #include <inttypes.h>
4 
5 
6 #define	U_APPEND_SHORT		"uappnd"
7 #define	U_APPEND_FULL		"uappend"
8 #define	SU_APPEND_SHORT		"sappnd"
9 #define	SU_APPEND_FULL		"sappend"
10 
11 #define	U_ARCH_SHORT		"uarch"
12 #define	U_ARCH_FULL		"uarchive"
13 #define	SU_ARCH_SHORT		"arch"
14 #define	SU_ARCH_FULL		"archived"
15 
16 #define	U_HIDDEN_SHORT		"hidden"
17 #define	U_HIDDEN_FULL		"uhidden"
18 
19 #define	SU_IMMUTABLE_FULL	"simmutable"
20 #define	SU_IMMUTABLE_SHORT	"schange"
21 #define	SU_IMMUTABLE		"schg"
22 #define	U_IMMUTABLE_FULL	"uimmutable"
23 #define	U_IMMUTABLE_SHORT	"uchange"
24 #define	U_IMMUTABLE		"uchg"
25 
26 #define	SU_NODUMP		"nodump"
27 #define	UNSET_NODUMP		"dump"
28 
29 #define	U_UNLINK_SHORT		"uunlnk"
30 #define	U_UNLINK_FULL		"uunlink"
31 #define	SU_UNLINK_SHORT		"sunlnk"
32 #define	SU_UNLINK_FULL		"sunlink"
33 
34 #define	U_OFFLINE_SHORT		"offline"
35 #define	U_OFFLINE_FULL		"uoffline"
36 
37 #define	U_RDONLY		"rdonly"
38 #define	U_RDONLY_SHORT		"urdonly"
39 #define	U_RDONLY_FULL		"readonly"
40 
41 #define	U_REPARSE_SHORT		"reparse"
42 #define	U_REPARSE_FULL		"ureparse"
43 
44 #define	U_SPARSE_SHORT		"sparse"
45 #define	U_SPARSE_FULL		"usparse"
46 
47 #define	U_SYSTEM_SHORT		"system"
48 #define	U_SYSTEM_FULL		"usystem"
49 
50 
51 static const uint64_t all_dos_attributes[] = {
52 	ZFS_ARCHIVE,
53 	ZFS_APPENDONLY,
54 	ZFS_IMMUTABLE,
55 	ZFS_NOUNLINK,
56 	ZFS_NODUMP,
57 	ZFS_HIDDEN,
58 	ZFS_OFFLINE,
59 	ZFS_READONLY,
60 	ZFS_SPARSE,
61 	ZFS_SYSTEM,
62 	ZFS_REPARSE,
63 };
64 
65 static const char *const all_dos_attribute_names[][7] = {
66 	{U_ARCH_SHORT, U_ARCH_FULL, SU_ARCH_SHORT, SU_ARCH_FULL},
67 	{U_APPEND_SHORT, U_APPEND_FULL, SU_APPEND_SHORT, SU_APPEND_FULL},
68 	{SU_IMMUTABLE_FULL, SU_IMMUTABLE_SHORT, SU_IMMUTABLE,
69 	    U_IMMUTABLE_FULL, U_IMMUTABLE_SHORT, U_IMMUTABLE},
70 	{U_UNLINK_SHORT, U_UNLINK_FULL, SU_UNLINK_FULL, SU_UNLINK_SHORT},
71 	{SU_NODUMP, /* UNSET_NODUMP */},
72 	{U_HIDDEN_SHORT, U_HIDDEN_FULL},
73 	{U_OFFLINE_SHORT, U_OFFLINE_FULL},
74 	{U_RDONLY, U_RDONLY_SHORT, U_RDONLY_FULL},
75 	{U_SPARSE_SHORT, U_SPARSE_FULL},
76 	{U_SYSTEM_SHORT, U_SYSTEM_FULL},
77 	{U_REPARSE_SHORT, U_REPARSE_FULL},
78 };
79 
80 _Static_assert(
81     ARRAY_SIZE(all_dos_attributes) == ARRAY_SIZE(all_dos_attribute_names),
82 	"attribute list length mismatch");
83