+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
#include <inttypes.h>
#include <stdarg.h>
#include <stdio.h>
-#include <sys/stat.h>
#include <errno.h>
#include <unistd.h>
#include <fcntl.h>
{
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);
}
emacs_close (new);
if (a_out >= 0)
emacs_close (a_out);
- mark_x (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)
{
#include <sys/types.h>
#endif /* makedev */
#include <stdio.h>
-#include <sys/stat.h>
#include <errno.h>
#include <sys/file.h>
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,
{
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);
}
emacs_close (new);
if (a_out >= 0)
emacs_close (a_out);
- mark_x (new_name);
}
#endif /* not CANNOT_DUMP */
#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. */
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));
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));
}
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);