util: move device-node.[ch] to shared

This commit is contained in:
Yu Watanabe
2021-06-04 15:51:39 +09:00
parent ebb0a0155d
commit 902b4c677e
5 changed files with 2 additions and 3 deletions
-1
View File
@@ -19,7 +19,6 @@
#include "btrfs-util.h"
#include "chattr-util.h"
#include "copy.h"
#include "device-nodes.h"
#include "fd-util.h"
#include "fileio.h"
#include "fs-util.h"
-60
View File
@@ -1,60 +0,0 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <stdio.h>
#include <string.h>
#include "device-nodes.h"
#include "utf8.h"
int allow_listed_char_for_devnode(char c, const char *white) {
return
(c >= '0' && c <= '9') ||
(c >= 'A' && c <= 'Z') ||
(c >= 'a' && c <= 'z') ||
strchr("#+-.:=@_", c) ||
(white && strchr(white, c));
}
int encode_devnode_name(const char *str, char *str_enc, size_t len) {
size_t i, j;
if (!str || !str_enc)
return -EINVAL;
for (i = 0, j = 0; str[i] != '\0'; i++) {
int seqlen;
seqlen = utf8_encoded_valid_unichar(str + i, SIZE_MAX);
if (seqlen > 1) {
if (len-j < (size_t) seqlen)
return -EINVAL;
memcpy(&str_enc[j], &str[i], seqlen);
j += seqlen;
i += (seqlen-1);
} else if (str[i] == '\\' || !allow_listed_char_for_devnode(str[i], NULL)) {
if (len-j < 4)
return -EINVAL;
sprintf(&str_enc[j], "\\x%02x", (unsigned char) str[i]);
j += 4;
} else {
if (len-j < 1)
return -EINVAL;
str_enc[j] = str[i];
j++;
}
}
if (len-j < 1)
return -EINVAL;
str_enc[j] = '\0';
return 0;
}
-16
View File
@@ -1,16 +0,0 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stddef.h>
#include <sys/types.h>
#include "macro.h"
#include "stdio-util.h"
int encode_devnode_name(const char *str, char *str_enc, size_t len);
int allow_listed_char_for_devnode(char c, const char *additional);
#define DEV_NUM_PATH_MAX \
(STRLEN("/dev/block/") + DECIMAL_STR_MAX(dev_t) + 1 + DECIMAL_STR_MAX(dev_t))
#define xsprintf_dev_num_path(buf, type, devno) \
xsprintf(buf, "/dev/%s/%u:%u", type, major(devno), minor(devno))
-2
View File
@@ -38,8 +38,6 @@ basic_sources = files('''
creds-util.c
creds-util.h
def.h
device-nodes.c
device-nodes.h
dirent-util.c
dirent-util.h
dlfcn-util.c