(__xstrtol): If there is no number but there
[gnulib.git] / lib / modechange.c
index c768116..a102b69 100644 (file)
@@ -194,18 +194,18 @@ mode_compile (const char *mode_string, unsigned int masked_ops)
               && S_IRGRP == RGRP && S_IWGRP == WGRP && S_IXGRP == XGRP
               && S_IROTH == ROTH && S_IWOTH == WOTH && S_IXOTH == XOTH)
              ? octal_value
-             : ((octal_value & SUID ? S_ISUID : 0)
-                | (octal_value & SGID ? S_ISGID : 0)
-                | (octal_value & SVTX ? S_ISVTX : 0)
-                | (octal_value & RUSR ? S_IRUSR : 0)
-                | (octal_value & WUSR ? S_IWUSR : 0)
-                | (octal_value & XUSR ? S_IXUSR : 0)
-                | (octal_value & RGRP ? S_IRGRP : 0)
-                | (octal_value & WGRP ? S_IWGRP : 0)
-                | (octal_value & XGRP ? S_IXGRP : 0)
-                | (octal_value & ROTH ? S_IROTH : 0)
-                | (octal_value & WOTH ? S_IWOTH : 0)
-                | (octal_value & XOTH ? S_IXOTH : 0)));
+             : (mode_t) ((octal_value & SUID ? S_ISUID : 0)
+                         | (octal_value & SGID ? S_ISGID : 0)
+                         | (octal_value & SVTX ? S_ISVTX : 0)
+                         | (octal_value & RUSR ? S_IRUSR : 0)
+                         | (octal_value & WUSR ? S_IWUSR : 0)
+                         | (octal_value & XUSR ? S_IXUSR : 0)
+                         | (octal_value & RGRP ? S_IRGRP : 0)
+                         | (octal_value & WGRP ? S_IWGRP : 0)
+                         | (octal_value & XGRP ? S_IXGRP : 0)
+                         | (octal_value & ROTH ? S_IROTH : 0)
+                         | (octal_value & WOTH ? S_IWOTH : 0)
+                         | (octal_value & XOTH ? S_IXOTH : 0)));
 
       p = make_node_op_equals (mode);
       if (p == NULL)
@@ -413,18 +413,18 @@ mode_adjust (mode_t oldmode, const struct mode_change *changes)
 
          if (changes->value & S_IRWXU)
            /* Copy `u' permissions onto `g' and `o'. */
-           value |= ((value & S_IRUSR ? S_IRGRP | S_IROTH : 0)
-                     | (value & S_IWUSR ? S_IWGRP | S_IROTH : 0)
+           value |= (  (value & S_IRUSR ? S_IRGRP | S_IROTH : 0)
+                     | (value & S_IWUSR ? S_IWGRP | S_IWOTH : 0)
                      | (value & S_IXUSR ? S_IXGRP | S_IXOTH : 0));
          else if (changes->value & S_IRWXG)
            /* Copy `g' permissions onto `u' and `o'. */
-           value |= ((value & S_IRGRP ? S_IRUSR | S_IROTH : 0)
-                     | (value & S_IWGRP ? S_IWUSR | S_IROTH : 0)
+           value |= (  (value & S_IRGRP ? S_IRUSR | S_IROTH : 0)
+                     | (value & S_IWGRP ? S_IWUSR | S_IWOTH : 0)
                      | (value & S_IXGRP ? S_IXUSR | S_IXOTH : 0));
          else
            /* Copy `o' permissions onto `u' and `g'. */
-           value |= ((value & S_IROTH ? S_IRUSR | S_IRGRP : 0)
-                     | (value & S_IWOTH ? S_IWUSR | S_IRGRP : 0)
+           value |= (  (value & S_IROTH ? S_IRUSR | S_IRGRP : 0)
+                     | (value & S_IWOTH ? S_IWUSR | S_IWGRP : 0)
                      | (value & S_IXOTH ? S_IXUSR | S_IXGRP : 0));
 
          /* In order to change only `u', `g', or `o' permissions,