chiark / gitweb /
util: the chattr flags field is actually unsigned, judging by kernel sources
[elogind.git] / src / shared / util.c
index 1210900bcaee61e72952e58dfe39b8b7f5e0e25a..9fd2d89556819500d9c602cce6f99a60cf45c02c 100644 (file)
@@ -7758,11 +7758,14 @@ int same_fd(int a, int b) {
         return fa == fb;
 }
 
-int chattr_fd(int fd, bool b, int mask) {
-        int old_attr, new_attr;
+int chattr_fd(int fd, bool b, 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;
 
@@ -7780,9 +7783,14 @@ int chattr_fd(int fd, bool b, int mask) {
         return 0;
 }
 
-int chattr_path(const char *p, bool b, int mask) {
+int chattr_path(const char *p, bool b, unsigned mask) {
         _cleanup_close_ int fd = -1;
 
+        assert(p);
+
+        if (mask == 0)
+                return 0;
+
         fd = open(p, O_RDWR|O_CLOEXEC|O_NOCTTY|O_NOFOLLOW);
         if (fd < 0)
                 return -errno;