]> code.delx.au - gnu-emacs/commitdiff
Simplify unexec file mode setting
authorPaul Eggert <eggert@cs.ucla.edu>
Sat, 20 Dec 2014 21:11:40 +0000 (13:11 -0800)
committerPaul Eggert <eggert@cs.ucla.edu>
Sat, 20 Dec 2014 21:12:20 +0000 (13:12 -0800)
* unexaix.c, unexcoff.c, unexelf.c, unexmacosx.c:
Don't include <sys/stat.h> when no longer needed.
(unexec): Create file with correct mode in the first place,
rather than overwriting the mode later and fiddling with the
global umask in the mean time.  Avoid bogus usage like
'umask (777)', which should have been 'umask (0777)'.
(mark_x): Remove. All callers removed.

src/ChangeLog
src/unexaix.c
src/unexcoff.c
src/unexelf.c
src/unexmacosx.c

index 819c88bc3a038536b88b880105feef2f35312304..e21d9ee05e1c04005f504fd84f346a4c3b91f971 100644 (file)
@@ -1,3 +1,14 @@
+2014-12-20  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Simplify unexec file mode setting
+       * unexaix.c, unexcoff.c, unexelf.c, unexmacosx.c:
+       Don't include <sys/stat.h> when no longer needed.
+       (unexec): Create file with correct mode in the first place,
+       rather than overwriting the mode later and fiddling with the
+       global umask in the mean time.  Avoid bogus usage like
+       'umask (777)', which should have been 'umask (0777)'.
+       (mark_x): Remove. All callers removed.
+
 2014-12-19  Paul Eggert  <eggert@cs.ucla.edu>
 
        Minor cleanups for Lisp objects and symbols
index c97d5cae2a8b3d3cac8288f03fff86219e2fcf44..fd36e4a73a6dc56211865440b3902a05060e3b6e 100644 (file)
@@ -55,7 +55,6 @@ what you give them.   Help stamp out software-hoarding!  */
 #include <inttypes.h>
 #include <stdarg.h>
 #include <stdio.h>
-#include <sys/stat.h>
 #include <errno.h>
 #include <unistd.h>
 #include <fcntl.h>
@@ -134,7 +133,7 @@ unexec (const char *new_name, const char *a_name)
     {
       PERROR (a_name);
     }
-  if ((new = emacs_open (new_name, O_WRONLY | O_CREAT | O_TRUNC, 0666)) < 0)
+  if ((new = emacs_open (new_name, O_WRONLY | O_CREAT | O_TRUNC, 0777)) < 0)
     {
       PERROR (new_name);
     }
@@ -152,7 +151,6 @@ unexec (const char *new_name, const char *a_name)
   emacs_close (new);
   if (a_out >= 0)
     emacs_close (a_out);
-  mark_x (new_name);
 }
 
 /* ****************************************************************
@@ -466,29 +464,6 @@ copy_sym (int new, int a_out, const char *a_name, const char *new_name)
   return 0;
 }
 \f
-/* ****************************************************************
- * mark_x
- *
- * After successfully building the new a.out, mark it executable
- */
-static void
-mark_x (const char *name)
-{
-  struct stat sbuf;
-  int um;
-  int new = 0;  /* for PERROR */
-
-  um = umask (777);
-  umask (um);
-  if (stat (name, &sbuf) == -1)
-    {
-      PERROR (name);
-    }
-  sbuf.st_mode |= 0111 & ~um;
-  if (chmod (name, sbuf.st_mode) == -1)
-    PERROR (name);
-}
-\f
 static int
 adjust_lnnoptrs (int writedesc, int readdesc, const char *new_name)
 {
index 0e47bdd86562dd7d791867cb46c4b4fce75389ff..292c38f7ff7eb824cbcee14d765861ab939cc3d5 100644 (file)
@@ -97,7 +97,6 @@ struct aouthdr
 #include <sys/types.h>
 #endif /* makedev */
 #include <stdio.h>
-#include <sys/stat.h>
 #include <errno.h>
 
 #include <sys/file.h>
@@ -439,29 +438,6 @@ copy_sym (int new, int a_out, const char *a_name, const char *new_name)
   return 0;
 }
 \f
-/* ****************************************************************
- * mark_x
- *
- * After successfully building the new a.out, mark it executable
- */
-static void
-mark_x (const char *name)
-{
-  struct stat sbuf;
-  int um;
-  int new = 0;  /* for PERROR */
-
-  um = umask (777);
-  umask (um);
-  if (stat (name, &sbuf) == -1)
-    {
-      PERROR (name);
-    }
-  sbuf.st_mode |= 0111 & ~um;
-  if (chmod (name, sbuf.st_mode) == -1)
-    PERROR (name);
-}
-\f
 
 /*
  *     If the COFF file contains a symbol table and a line number section,
@@ -542,7 +518,7 @@ unexec (const char *new_name, const char *a_name)
     {
       PERROR (a_name);
     }
-  if ((new = emacs_open (new_name, O_WRONLY | O_CREAT | O_TRUNC, 0666)) < 0)
+  if ((new = emacs_open (new_name, O_WRONLY | O_CREAT | O_TRUNC, 0777)) < 0)
     {
       PERROR (new_name);
     }
@@ -560,7 +536,6 @@ unexec (const char *new_name, const char *a_name)
   emacs_close (new);
   if (a_out >= 0)
     emacs_close (a_out);
-  mark_x (new_name);
 }
 
 #endif /* not CANNOT_DUMP */
index 0983f8f23ab3de8f9566aefd726d4987c3c3fca6..34478e0edb767599e872563b4e09c5389f79a18b 100644 (file)
@@ -665,7 +665,6 @@ unexec (const char *new_name, const char *old_name)
 #endif
   struct stat stat_buf;
   off_t old_file_size;
-  int mask;
 
   /* Open the old file, allocate a buffer of the right size, and read
      in the file contents.  */
@@ -799,7 +798,7 @@ unexec (const char *new_name, const char *old_name)
      the image of the new file.  Set pointers to various interesting
      objects.  */
 
-  new_file = emacs_open (new_name, O_RDWR | O_CREAT, 0666);
+  new_file = emacs_open (new_name, O_RDWR | O_CREAT, 0777);
   if (new_file < 0)
     fatal ("Can't creat (%s): %s", new_name, strerror (errno));
 
@@ -1319,13 +1318,4 @@ temacs:
 
   if (emacs_close (new_file) != 0)
     fatal ("Can't close (%s): %s", new_name, strerror (errno));
-
-  if (stat (new_name, &stat_buf) != 0)
-    fatal ("Can't stat (%s): %s", new_name, strerror (errno));
-
-  mask = umask (777);
-  umask (mask);
-  stat_buf.st_mode |= 0111 & ~mask;
-  if (chmod (new_name, stat_buf.st_mode) != 0)
-    fatal ("Can't chmod (%s): %s", new_name, strerror (errno));
 }
index 2e1ac880d2a94b5ba3d078044f87babdc873bdce..89971bb8a771a4904cb985ad9a76104fbd819d29 100644 (file)
@@ -1267,7 +1267,7 @@ unexec (const char *outfile, const char *infile)
       unexec_error ("cannot open input file `%s'", infile);
     }
 
-  outfd = emacs_open (outfile, O_WRONLY | O_TRUNC | O_CREAT, 0755);
+  outfd = emacs_open (outfile, O_WRONLY | O_TRUNC | O_CREAT, 0777);
   if (outfd < 0)
     {
       emacs_close (infd);