]>
git.ipfire.org Git - thirdparty/e2fsprogs.git/blob - lib/e2p/encoding.c
2 * encoding.c --- convert between encoding magic numbers and strings
4 * Copyright (C) 2018 Collabora Ltd.
7 * This file may be redistributed under the terms of the GNU Library
8 * General Public License, version 2.
22 #define ARRAY_SIZE(array) \
23 (sizeof(array) / sizeof(array[0]))
30 } ext4_encoding_map
[] = {
32 .encoding_magic
= EXT4_ENC_UTF8_12_1
,
37 .encoding_magic
= EXT4_ENC_UTF8_12_1
,
43 static const struct enc_flags
{
46 } encoding_flags
[] = {
47 { EXT4_ENC_STRICT_MODE_FL
, "strict" },
50 /* Return a positive number < 0xff indicating the encoding magic number
51 * or a negative value indicating error. */
52 int e2p_str2encoding(const char *string
)
56 for (i
= 0 ; i
< ARRAY_SIZE(ext4_encoding_map
); i
++)
57 if (!strcmp(string
, ext4_encoding_map
[i
].name
))
58 return ext4_encoding_map
[i
].encoding_magic
;
63 /* Return the name of an encoding or NULL */
64 const char *e2p_encoding2str(int encoding
)
69 for (i
= 0 ; i
< ARRAY_SIZE(ext4_encoding_map
); i
++)
70 if (ext4_encoding_map
[i
].encoding_magic
== encoding
)
71 return ext4_encoding_map
[i
].name
;
72 sprintf(buf
, "UNKNOWN_ENCODING_%d", encoding
);
76 int e2p_get_encoding_flags(int encoding
)
80 for (i
= 0 ; i
< ARRAY_SIZE(ext4_encoding_map
); i
++)
81 if (ext4_encoding_map
[i
].encoding_magic
== encoding
)
82 return ext4_encoding_map
[i
].default_flags
;
87 int e2p_str2encoding_flags(int encoding
, char *param
, __u16
*flags
)
89 char *f
= strtok(param
, "-");
90 const struct enc_flags
*fl
;
91 unsigned int i
, neg
= 0;
95 if (!strncmp("no", f
, 2)) {
100 for (i
= 0; i
< ARRAY_SIZE(encoding_flags
); i
++) {
101 fl
= &encoding_flags
[i
];
102 if (!strcmp(fl
->param
, f
)) {
113 f
= strtok(NULL
, "-");