]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
(main): Adjust to new modechange API.
authorPaul Eggert <eggert@cs.ucla.edu>
Thu, 28 Apr 2005 16:31:09 +0000 (16:31 +0000)
committerPaul Eggert <eggert@cs.ucla.edu>
Thu, 28 Apr 2005 16:31:09 +0000 (16:31 +0000)
Also, free the mode_change object when done.

src/install.c
src/mkdir.c
src/mkfifo.c
src/mknod.c

index 61c1fedab83f3bd8dfb34f0c582b728c7b989b56..5659bc70e3bfe49969b16f4e546c1ebe3fda64dd 100644 (file)
@@ -353,12 +353,11 @@ main (int argc, char **argv)
 
   if (specified_mode)
     {
-      struct mode_change *change = mode_compile (specified_mode, 0);
-      if (change == MODE_INVALID)
+      struct mode_change *change = mode_compile (specified_mode);
+      if (!change)
        error (EXIT_FAILURE, 0, _("invalid mode %s"), quote (specified_mode));
-      else if (change == MODE_MEMORY_EXHAUSTED)
-       xalloc_die ();
-      mode = mode_adjust (0, change);
+      mode = mode_adjust (0, change, 0);
+      mode_free (change);
     }
 
   get_ids ();
index d0c975f70a03aa12857d4a8bc1ec153d6b77874d..5443921304271c620d6b000afc2ac41be7646b88 100644 (file)
@@ -125,22 +125,24 @@ main (int argc, char **argv)
     }
 
   newmode = S_IRWXUGO;
-  if (specified_mode)
-    {
-      struct mode_change *change = mode_compile (specified_mode, MODE_MASK_ALL);
-      if (change == MODE_INVALID)
-       error (EXIT_FAILURE, 0, _("invalid mode %s"), quote (specified_mode));
-      else if (change == MODE_MEMORY_EXHAUSTED)
-       xalloc_die ();
-      newmode = mode_adjust (newmode, change);
-    }
 
   if (specified_mode || create_parents)
     {
       mode_t umask_value = umask (0);
-      if (! specified_mode)
-       umask (umask_value);
+
       parent_mode = (S_IRWXUGO & ~umask_value) | (S_IWUSR | S_IXUSR);
+
+      if (specified_mode)
+       {
+         struct mode_change *change = mode_compile (specified_mode);
+         if (!change)
+           error (EXIT_FAILURE, 0, _("invalid mode %s"),
+                  quote (specified_mode));
+         newmode = mode_adjust (S_IRWXUGO, change, umask_value);
+         mode_free (change);
+       }
+      else
+       umask (umask_value);
     }
 
   for (; optind < argc; ++optind)
index a579dbe33aa01e8ab8d0a9117991fe16a8d954b7..5a9b7efab3149921921b15c58983966c02455326 100644 (file)
@@ -75,7 +75,6 @@ int
 main (int argc, char **argv)
 {
   mode_t newmode;
-  struct mode_change *change;
   const char *specified_mode;
   int exit_status = EXIT_SUCCESS;
   int optc;
@@ -116,13 +115,11 @@ main (int argc, char **argv)
   newmode = (S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
   if (specified_mode)
     {
-      change = mode_compile (specified_mode, MODE_MASK_ALL);
-      if (change == MODE_INVALID)
+      struct mode_change *change = mode_compile (specified_mode);
+      if (!change)
        error (EXIT_FAILURE, 0, _("invalid mode"));
-      else if (change == MODE_MEMORY_EXHAUSTED)
-       xalloc_die ();
-      newmode = mode_adjust (newmode, change);
-      umask (0);
+      newmode = mode_adjust (newmode, change, umask (0));
+      mode_free (change);
     }
 
   for (; optind < argc; ++optind)
index 4eacefb25a2bb06f17b62f85db3342c08b7df222..ce7dd9565d4ad9abd6f427905d4b0bf374665bc1 100644 (file)
@@ -88,7 +88,6 @@ int
 main (int argc, char **argv)
 {
   mode_t newmode;
-  struct mode_change *change;
   const char *specified_mode;
   int optc;
   int expected_operands;
@@ -121,13 +120,11 @@ main (int argc, char **argv)
   newmode = (S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
   if (specified_mode)
     {
-      change = mode_compile (specified_mode, MODE_MASK_ALL);
-      if (change == MODE_INVALID)
+      struct mode_change *change = mode_compile (specified_mode);
+      if (!change)
        error (EXIT_FAILURE, 0, _("invalid mode"));
-      else if (change == MODE_MEMORY_EXHAUSTED)
-       xalloc_die ();
-      newmode = mode_adjust (newmode, change);
-      umask (0);
+      newmode = mode_adjust (newmode, change, umask (0));
+      mode_free (change);
     }
 
   /* If the number of arguments is 0 or 1,