summaryrefslogtreecommitdiff
path: root/src/basic/devnum-util.c
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2022-08-28 04:15:35 +0900
committerYu Watanabe <watanabe.yu+github@gmail.com>2022-08-28 09:08:21 +0900
commit4492b5d80489482802a3708e2aeaa7c5b5d20e09 (patch)
tree32072036da188ca8f5d2737547a280cd55c2c3ab /src/basic/devnum-util.c
parenta2ded81f73a90fa98a9bf6abb91b2455f79e2ec1 (diff)
downloadsystemd-4492b5d80489482802a3708e2aeaa7c5b5d20e09.tar.gz
devnum-util: split-out device_path_make_inaccessible()
Diffstat (limited to 'src/basic/devnum-util.c')
-rw-r--r--src/basic/devnum-util.c37
1 files changed, 20 insertions, 17 deletions
diff --git a/src/basic/devnum-util.c b/src/basic/devnum-util.c
index 70c07315c5..bd1b4d6c39 100644
--- a/src/basic/devnum-util.c
+++ b/src/basic/devnum-util.c
@@ -57,6 +57,24 @@ int device_path_make_major_minor(mode_t mode, dev_t devnum, char **ret) {
return 0;
}
+int device_path_make_inaccessible(mode_t mode, char **ret) {
+ char *s;
+
+ assert(ret);
+
+ if (S_ISCHR(mode))
+ s = strdup("/run/systemd/inaccessible/chr");
+ else if (S_ISBLK(mode))
+ s = strdup("/run/systemd/inaccessible/blk");
+ else
+ return -ENODEV;
+ if (!s)
+ return -ENOMEM;
+
+ *ret = s;
+ return 0;
+}
+
int device_path_make_canonical(mode_t mode, dev_t devnum, char **ret) {
_cleanup_free_ char *p = NULL;
int r;
@@ -65,25 +83,10 @@ int device_path_make_canonical(mode_t mode, dev_t devnum, char **ret) {
assert(ret);
- if (major(devnum) == 0 && minor(devnum) == 0) {
- char *s;
-
+ if (major(devnum) == 0 && minor(devnum) == 0)
/* A special hack to make sure our 'inaccessible' device nodes work. They won't have symlinks in
* /dev/block/ and /dev/char/, hence we handle them specially here. */
-
- if (S_ISCHR(mode))
- s = strdup("/run/systemd/inaccessible/chr");
- else if (S_ISBLK(mode))
- s = strdup("/run/systemd/inaccessible/blk");
- else
- return -ENODEV;
-
- if (!s)
- return -ENOMEM;
-
- *ret = s;
- return 0;
- }
+ return device_path_make_inaccessible(mode, ret);
r = device_path_make_major_minor(mode, devnum, &p);
if (r < 0)