chiark / gitweb /
trivial cleanups
[elogind.git] / libudev / libudev-util-private.c
index 6b68b6a3660edef1edaee98625f3c338e92b2fc2..073f7e2df8fa1b54d28f079ba48b89e3e98232b3 100644 (file)
@@ -25,7 +25,7 @@
 #include "libudev.h"
 #include "libudev-private.h"
 
-int util_create_path(struct udev *udev, const char *path)
+static int create_path(struct udev *udev, const char *path, bool selinux)
 {
        char p[UTIL_PATH_SIZE];
        char *pos;
@@ -55,7 +55,8 @@ int util_create_path(struct udev *udev, const char *path)
                return err;
 
        dbg(udev, "mkdir '%s'\n", p);
-       udev_selinux_setfscreatecon(udev, p, S_IFDIR|0755);
+       if (selinux)
+               udev_selinux_setfscreatecon(udev, p, S_IFDIR|0755);
        err = mkdir(p, 0755);
        if (err != 0) {
                err = -errno;
@@ -66,10 +67,21 @@ int util_create_path(struct udev *udev, const char *path)
                                err = -ENOTDIR;
                }
        }
-       udev_selinux_resetfscreatecon(udev);
+       if (selinux)
+               udev_selinux_resetfscreatecon(udev);
        return err;
 }
 
+int util_create_path(struct udev *udev, const char *path)
+{
+       return create_path(udev, path, false);
+}
+
+int util_create_path_selinux(struct udev *udev, const char *path)
+{
+       return create_path(udev, path, true);
+}
+
 int util_delete_path(struct udev *udev, const char *path)
 {
        char p[UTIL_PATH_SIZE];
@@ -122,7 +134,7 @@ int util_unlink_secure(struct udev *udev, const char *filename)
 uid_t util_lookup_user(struct udev *udev, const char *user)
 {
        char *endptr;
-       int buflen = sysconf(_SC_GETPW_R_SIZE_MAX);
+       size_t buflen = sysconf(_SC_GETPW_R_SIZE_MAX);
        char buf[buflen];
        struct passwd pwbuf;
        struct passwd *pw;
@@ -147,7 +159,7 @@ uid_t util_lookup_user(struct udev *udev, const char *user)
 gid_t util_lookup_group(struct udev *udev, const char *group)
 {
        char *endptr;
-       int buflen = sysconf(_SC_GETGR_R_SIZE_MAX);
+       size_t buflen = sysconf(_SC_GETGR_R_SIZE_MAX);
        char *buf;
        struct group grbuf;
        struct group *gr;