aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--disk-utils/fdisk-list.c2
-rw-r--r--include/canonicalize.h10
-rw-r--r--lib/canonicalize.c21
-rw-r--r--lib/loopdev.c4
-rw-r--r--libblkid/src/devname.c4
-rw-r--r--libblkid/src/evaluate.c4
-rw-r--r--libfdisk/src/utils.c2
-rw-r--r--libmount/src/cache.c2
-rw-r--r--libmount/src/tab.c2
-rw-r--r--libmount/src/utils.c4
-rw-r--r--login-utils/sulogin-consoles.c2
-rw-r--r--misc-utils/lsblk.c2
-rw-r--r--misc-utils/whereis.c2
-rw-r--r--sys-utils/losetup.c4
-rw-r--r--sys-utils/mount.c4
-rw-r--r--sys-utils/umount.c2
16 files changed, 37 insertions, 34 deletions
diff --git a/disk-utils/fdisk-list.c b/disk-utils/fdisk-list.c
index 24c4e04044..04ee2b431f 100644
--- a/disk-utils/fdisk-list.c
+++ b/disk-utils/fdisk-list.c
@@ -421,7 +421,7 @@ char *next_proc_partition(FILE **f)
if (!sysfs_devno_to_devpath(devno, buf, sizeof(buf)))
continue;
- cn = canonicalize_path(buf);
+ cn = ul_canonicalize_path(buf);
if (!cn)
continue;
diff --git a/include/canonicalize.h b/include/canonicalize.h
index 81a30ed123..08cdb37ecc 100644
--- a/include/canonicalize.h
+++ b/include/canonicalize.h
@@ -15,14 +15,14 @@
#include "c.h" /* for PATH_MAX */
#include "strutils.h"
-extern char *canonicalize_path(const char *path);
-extern char *canonicalize_path_restricted(const char *path);
-extern char *canonicalize_dm_name(const char *ptname);
-extern char *__canonicalize_dm_name(const char *prefix, const char *ptname);
+extern char *ul_canonicalize_path(const char *path);
+extern char *ul_canonicalize_path_restricted(const char *path);
+extern char *ul_canonicalize_dm_name(const char *ptname);
+extern char *ul_canonicalize_dm_name_prefixed(const char *prefix, const char *ptname);
extern char *ul_absolute_path(const char *path);
-static inline int is_relative_path(const char *path)
+static inline int ul_is_relative_path(const char *path)
{
if (!path || *path == '/')
return 0;
diff --git a/lib/canonicalize.c b/lib/canonicalize.c
index ab86a7483c..854e611465 100644
--- a/lib/canonicalize.c
+++ b/lib/canonicalize.c
@@ -26,8 +26,11 @@
*
* Since 2.6.29 (patch 784aae735d9b0bba3f8b9faef4c8b30df3bf0128) kernel sysfs
* provides the real DM device names in /sys/block/<ptname>/dm/name
+ *
+ * The @prefix allows /sys to be mounted or stored outside the system root
+ * (/prefix/sys/...).
*/
-char *__canonicalize_dm_name(const char *prefix, const char *ptname)
+char *ul_canonicalize_dm_name_prefixed(const char *prefix, const char *ptname)
{
FILE *f;
size_t sz;
@@ -55,9 +58,9 @@ char *__canonicalize_dm_name(const char *prefix, const char *ptname)
return res;
}
-char *canonicalize_dm_name(const char *ptname)
+char *ul_canonicalize_dm_name(const char *ptname)
{
- return __canonicalize_dm_name(NULL, ptname);
+ return ul_canonicalize_dm_name_prefixed(NULL, ptname);
}
static int is_dm_devname(char *canonical, char **name)
@@ -88,7 +91,7 @@ char *ul_absolute_path(const char *path)
char cwd[PATH_MAX], *res, *p;
size_t psz, csz;
- if (!is_relative_path(path)) {
+ if (!ul_is_relative_path(path)) {
errno = EINVAL;
return NULL;
}
@@ -140,7 +143,7 @@ do_canonicalize(const char *path, char **result,
return 1;
if (is_dm_devname(canonical, &dmname)) {
- char *dm = canonicalize_dm_name(dmname);
+ char *dm = ul_canonicalize_dm_name(dmname);
if (dm) {
free(canonical);
canonical = dm;
@@ -157,7 +160,7 @@ do_canonicalize(const char *path, char **result,
* unreachable path is not an error (!), and in this case, it just duplicates
* @path.
*/
-char *canonicalize_path(const char *path)
+char *ul_canonicalize_path(const char *path)
{
char *canonical = NULL;
@@ -171,7 +174,7 @@ char *canonicalize_path(const char *path)
* Drop permissions (e.g., suid) and canonicalize the path. If the path is
* unreadable (for example, due to missing permissions), it returns NULL.
*/
-char *canonicalize_path_restricted(const char *path)
+char *ul_canonicalize_path_restricted(const char *path)
{
return ul_restricted_path_oper(path, do_canonicalize, NULL);
}
@@ -188,11 +191,11 @@ int main(int argc, char **argv)
fprintf(stdout, "orig: %s\n", argv[1]);
- p = canonicalize_path(argv[1]);
+ p = ul_canonicalize_path(argv[1]);
fprintf(stdout, "real: %s\n", p);
free(p);
- p = canonicalize_path_restricted(argv[1]);
+ p = ul_canonicalize_path_restricted(argv[1]);
fprintf(stdout, "real-restricted: %s\n", p);
free(p);
diff --git a/lib/loopdev.c b/lib/loopdev.c
index 8c5beaeb7e..8a51e5e5f4 100644
--- a/lib/loopdev.c
+++ b/lib/loopdev.c
@@ -692,7 +692,7 @@ int is_loopdev(const char *device)
snprintf(name, sizeof(name), _PATH_SYS_DEVBLOCK "/%d:%d",
major(st.st_rdev), minor(st.st_rdev));
- cn = canonicalize_path(name);
+ cn = ul_canonicalize_path(name);
if (cn)
p = stripoff_last_component(cn);
rc = p && ul_startswith(p, "loop");
@@ -1257,7 +1257,7 @@ int loopcxt_set_backing_file(struct loopdev_cxt *lc, const char *filename)
if (!lc)
return -EINVAL;
- lc->filename = canonicalize_path(filename);
+ lc->filename = ul_canonicalize_path(filename);
if (!lc->filename)
return -errno;
diff --git a/libblkid/src/devname.c b/libblkid/src/devname.c
index 0fb25325ef..b9717e23ab 100644
--- a/libblkid/src/devname.c
+++ b/libblkid/src/devname.c
@@ -66,7 +66,7 @@ blkid_dev blkid_get_dev(blkid_cache cache, const char *devname, int flags)
}
/* try canonicalize the name */
- if (!dev && (cn = canonicalize_path(devname))) {
+ if (!dev && (cn = ul_canonicalize_path(devname))) {
if (strcmp(cn, devname) != 0) {
DBG(DEVNAME, ul_debug("search canonical %s", cn));
list_for_each(p, &cache->bic_devs) {
@@ -200,7 +200,7 @@ static void probe_one(blkid_cache cache, const char *ptname,
* to standard /dev/mapper/<name>.
*/
if (!strncmp(ptname, "dm-", 3) && isdigit(ptname[3])) {
- devname = canonicalize_dm_name(ptname);
+ devname = ul_canonicalize_dm_name(ptname);
if (!devname)
blkid__scan_dir("/dev/mapper", devno, NULL, &devname);
if (devname)
diff --git a/libblkid/src/evaluate.c b/libblkid/src/evaluate.c
index 26e556c089..a4d04bca93 100644
--- a/libblkid/src/evaluate.c
+++ b/libblkid/src/evaluate.c
@@ -171,7 +171,7 @@ static char *evaluate_by_udev(const char *token, const char *value, int uevent)
if (!S_ISBLK(st.st_mode))
return NULL;
- path = canonicalize_path(dev);
+ path = ul_canonicalize_path(dev);
if (!path)
return NULL;
@@ -298,7 +298,7 @@ char *blkid_evaluate_spec(const char *spec, blkid_cache *cache)
if (v)
res = blkid_evaluate_tag(t, v, cache);
else
- res = canonicalize_path(spec);
+ res = ul_canonicalize_path(spec);
free(t);
free(v);
diff --git a/libfdisk/src/utils.c b/libfdisk/src/utils.c
index ef2663737d..a3397ab523 100644
--- a/libfdisk/src/utils.c
+++ b/libfdisk/src/utils.c
@@ -128,7 +128,7 @@ char *fdisk_partname(const char *dev, size_t partno)
/* It is impossible to predict /dev/dm-N partition names. */
if (strncmp(dev, "/dev/dm-", sizeof("/dev/dm-") - 1) == 0) {
- dev_mapped = canonicalize_dm_name (dev + 5);
+ dev_mapped = ul_canonicalize_dm_name (dev + 5);
if (dev_mapped)
dev = dev_mapped;
}
diff --git a/libmount/src/cache.c b/libmount/src/cache.c
index b7956346f8..2942654491 100644
--- a/libmount/src/cache.c
+++ b/libmount/src/cache.c
@@ -518,7 +518,7 @@ static char *canonicalize_path_and_cache(const char *path,
char *value;
DBG(CACHE, ul_debugobj(cache, "canonicalize path %s", path));
- p = canonicalize_path(path);
+ p = ul_canonicalize_path(path);
if (p && cache) {
value = p;
diff --git a/libmount/src/tab.c b/libmount/src/tab.c
index 9535dd7515..9a8033c256 100644
--- a/libmount/src/tab.c
+++ b/libmount/src/tab.c
@@ -1161,7 +1161,7 @@ struct libmnt_fs *mnt_table_find_target(struct libmnt_table *tb, const char *pat
}
/* try absolute path */
- if (is_relative_path(path) && (cn = ul_absolute_path(path))) {
+ if (ul_is_relative_path(path) && (cn = ul_absolute_path(path))) {
DBG(TAB, ul_debugobj(tb, "lookup absolute TARGET: '%s'", cn));
mnt_reset_iter(&itr, direction);
while (mnt_table_next_fs(tb, &itr, &fs) == 0) {
diff --git a/libmount/src/utils.c b/libmount/src/utils.c
index 46050ff51f..7626b6f91e 100644
--- a/libmount/src/utils.c
+++ b/libmount/src/utils.c
@@ -1416,7 +1416,7 @@ static int test_mountpoint(struct libmnt_test *ts __attribute__((unused)),
if (argc != 2)
return -1;
- char *path = canonicalize_path(argv[1]),
+ char *path = ul_canonicalize_path(argv[1]),
*mnt = path ? mnt_get_mountpoint(path) : NULL;
printf("%s: %s\n", argv[1], mnt ? : "unknown");
@@ -1451,7 +1451,7 @@ static int test_chdir(struct libmnt_test *ts __attribute__((unused)),
return -1;
int rc;
- char *path = canonicalize_path(argv[1]),
+ char *path = ul_canonicalize_path(argv[1]),
*last = NULL;
if (!path)
diff --git a/login-utils/sulogin-consoles.c b/login-utils/sulogin-consoles.c
index cb9eb02bb8..93eeab111e 100644
--- a/login-utils/sulogin-consoles.c
+++ b/login-utils/sulogin-consoles.c
@@ -227,7 +227,7 @@ dev_t devattr(const char * const tty)
/*
* Search below /dev for the character device in `dev_t comparedev' variable.
* Note that realpath(3) is used here to avoid not existent devices due the
- * strdup(3) used in our canonicalize_path()!
+ * strdup(3) used in our ul_canonicalize_path()!
*/
static
#ifdef __GNUC__
diff --git a/misc-utils/lsblk.c b/misc-utils/lsblk.c
index 4690083cde..39a8ca83f4 100644
--- a/misc-utils/lsblk.c
+++ b/misc-utils/lsblk.c
@@ -401,7 +401,7 @@ static char *get_device_path(struct lsblk_device *dev)
assert(dev->name);
if (is_dm(dev->name))
- return __canonicalize_dm_name(lsblk->sysroot, dev->name);
+ return ul_canonicalize_dm_name_prefixed(lsblk->sysroot, dev->name);
snprintf(path, sizeof(path), "/dev/%s", dev->name);
sysfs_devname_sys_to_dev(path);
diff --git a/misc-utils/whereis.c b/misc-utils/whereis.c
index b575e57aee..8e500c0098 100644
--- a/misc-utils/whereis.c
+++ b/misc-utils/whereis.c
@@ -251,7 +251,7 @@ static void dirlist_add_dir(struct wh_dirlist **ls0, int type, const char *dir)
ls->st_ino = st.st_ino;
ls->st_dev = st.st_dev;
ls->type = type;
- ls->path = canonicalize_path(dir);
+ ls->path = ul_canonicalize_path(dir);
if (!*ls0)
*ls0 = ls; /* first in the list */
diff --git a/sys-utils/losetup.c b/sys-utils/losetup.c
index 1a66173865..f35bd79fc4 100644
--- a/sys-utils/losetup.c
+++ b/sys-utils/losetup.c
@@ -209,7 +209,7 @@ static int show_all_loops(struct loopdev_cxt *lc, const char *file,
used = loopcxt_is_used(lc, st, bf, offset, 0, flags);
if (!used && !cn_file) {
- bf = cn_file = canonicalize_path(file);
+ bf = cn_file = ul_canonicalize_path(file);
used = loopcxt_is_used(lc, st, bf, offset, 0, flags);
}
if (!used)
@@ -430,7 +430,7 @@ static int show_table(struct loopdev_cxt *lc,
used = loopcxt_is_used(lc, st, bf, offset, 0, flags);
if (!used && !cn_file) {
- bf = cn_file = canonicalize_path(file);
+ bf = cn_file = ul_canonicalize_path(file);
used = loopcxt_is_used(lc, st, bf, offset, 0, flags);
}
if (!used)
diff --git a/sys-utils/mount.c b/sys-utils/mount.c
index d6dd2805af..2450228d04 100644
--- a/sys-utils/mount.c
+++ b/sys-utils/mount.c
@@ -496,7 +496,7 @@ static int sanitize_paths(struct libmnt_context *cxt)
p = mnt_fs_get_target(fs);
if (p) {
- char *np = canonicalize_path_restricted(p);
+ char *np = ul_canonicalize_path_restricted(p);
if (!np)
return -EPERM;
mnt_fs_set_target(fs, np);
@@ -505,7 +505,7 @@ static int sanitize_paths(struct libmnt_context *cxt)
p = mnt_fs_get_srcpath(fs);
if (p) {
- char *np = canonicalize_path_restricted(p);
+ char *np = ul_canonicalize_path_restricted(p);
if (!np)
return -EPERM;
mnt_fs_set_source(fs, np);
diff --git a/sys-utils/umount.c b/sys-utils/umount.c
index c115f44a0e..18824e09f2 100644
--- a/sys-utils/umount.c
+++ b/sys-utils/umount.c
@@ -446,7 +446,7 @@ static char *sanitize_path(const char *path)
if (!path)
return NULL;
- p = canonicalize_path_restricted(path);
+ p = ul_canonicalize_path_restricted(path);
if (!p)
err(MNT_EX_USAGE, "%s", path);