chiark / gitweb /
missing.h: add more btrfs types and defines
[elogind.git] / src / shared / util.c
index 3f3ca90f5d7e8b72e47ae96df6f18977049b2f0e..ad548da82ab7663d0cda69b3e5d291c8acefb712 100644 (file)
@@ -4228,6 +4228,10 @@ bool nulstr_contains(const char*nulstr, const char *needle) {
         return false;
 }
 
+bool plymouth_running(void) {
+        return access("/run/plymouth/pid", F_OK) >= 0;
+}
+
 char* strshorten(char *s, size_t l) {
         assert(s);
 
@@ -7839,6 +7843,28 @@ int chattr_path(const char *p, bool b, unsigned mask) {
         return chattr_fd(fd, b, mask);
 }
 
+int change_attr_fd(int fd, unsigned value, unsigned mask) {
+        unsigned old_attr, new_attr;
+
+        assert(fd >= 0);
+
+        if (mask == 0)
+                return 0;
+
+        if (ioctl(fd, FS_IOC_GETFLAGS, &old_attr) < 0)
+                return -errno;
+
+        new_attr = (old_attr & ~mask) |(value & mask);
+
+        if (new_attr == old_attr)
+                return 0;
+
+        if (ioctl(fd, FS_IOC_SETFLAGS, &new_attr) < 0)
+                return -errno;
+
+        return 0;
+}
+
 int read_attr_fd(int fd, unsigned *ret) {
         assert(fd >= 0);