chiark / gitweb /
mac: rename all calls that apply a label mac_{selinux|smack}_apply_xyz(), and all...
[elogind.git] / src / shared / mkdir-label.c
index 43ea2c25b71e2465b9c151026f6dcd0685ea1226..48941b3df44789912ff2a0f163deea1d5f57534c 100644 (file)
 #include "path-util.h"
 #include "mkdir.h"
 
+static int label_mkdir(const char *path, mode_t mode) {
+        int r;
+
+        if (mac_selinux_use()) {
+                r = mac_selinux_mkdir(path, mode);
+                if (r < 0)
+                        return r;
+        }
+
+        if (mac_smack_use()) {
+                r = mkdir(path, mode);
+                if (r < 0 && errno != EEXIST)
+                        return -errno;
+
+                r = mac_smack_fix(path);
+                if (r < 0)
+                        return r;
+        }
+
+        r = mkdir(path, mode);
+        if (r < 0 && errno != EEXIST)
+                return -errno;
+
+        return 0;
+}
+
 int mkdir_label(const char *path, mode_t mode) {
         return label_mkdir(path, mode);
 }