(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 61c1fed..5659bc7 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 d0c975f..5443921 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 a579dbe..5a9b7ef 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 4eacefb..ce7dd95 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,