]>
git.ipfire.org Git - thirdparty/systemd.git/blob - src/shared/device-nodes.c
1 /* SPDX-License-Identifier: LGPL-2.1-or-later */
7 #include "device-nodes.h"
8 #include "string-util.h"
11 int allow_listed_char_for_devnode(char c
, const char *white
) {
15 strchr("#+-.:=@_", c
) ||
16 (white
&& strchr(white
, c
));
19 int encode_devnode_name(const char *str
, char *str_enc
, size_t len
) {
25 for (i
= 0, j
= 0; str
[i
] != '\0'; i
++) {
28 seqlen
= utf8_encoded_valid_unichar(str
+ i
, SIZE_MAX
);
31 if (len
-j
< (size_t) seqlen
)
34 memcpy(&str_enc
[j
], &str
[i
], seqlen
);
38 } else if (str
[i
] == '\\' || !allow_listed_char_for_devnode(str
[i
], NULL
)) {
43 sprintf(&str_enc
[j
], "\\x%02x", (unsigned char) str
[i
]);