Mercurial > emacs
changeset 7921:b3a5b629fe26
Include <sys/file.h> and [USG5] <fcntl.h> to define O_* macros.
(O_RDONLY, O_RDWR): Define if undefined.
[emacs] (report_error): Use report_file_error so the user can tell what the
errno code was.
(unexec): Use O_RDONLY instead of explicit 0.
(make_hdr): Don't undo A_TEXT_OFFSET adjustment #ifndef NO_REMAP, since it
was never adjusted earlier #ifndef NO_REMAP.
(adjust_lnnoptrs): Use O_RDWR instead of explicit 2.
author | Roland McGrath <roland@gnu.org> |
---|---|
date | Thu, 16 Jun 1994 06:55:46 +0000 |
parents | 30a1f0809d2a |
children | 8fcef41c85b7 |
files | src/unexec.c |
diffstat | 1 files changed, 24 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/unexec.c Thu Jun 16 02:30:39 1994 +0000 +++ b/src/unexec.c Thu Jun 16 06:55:46 1994 +0000 @@ -137,7 +137,7 @@ * A_TEXT_SEEK(HDR) If defined, this macro specifies the number of bytes to seek into the -a.out file before starting to write the text segment.a +a.out file before starting to write the text segment. * EXEC_MAGIC @@ -214,6 +214,20 @@ #include <sys/stat.h> #include <errno.h> +#include <sys/file.h> /* Must be after sys/types.h for USG and BSD4_1*/ + +#ifdef USG5 +#include <fcntl.h> +#endif + +#ifndef O_RDONLY +#define O_RDONLY 0 +#endif +#ifndef O_RDWR +#define O_RDWR 2 +#endif + + extern char *start_of_text (); /* Start of text */ extern char *start_of_data (); /* Start of initialized data */ @@ -311,6 +325,8 @@ #ifdef emacs +#include "lisp.h" + static report_error (file, fd) char *file; @@ -318,7 +334,7 @@ { if (fd) close (fd); - error ("Failure operating on %s\n", file); + report_file_error ("Cannot unexec", Fcons (build_string (file), Qnil)); } #endif /* emacs */ @@ -357,7 +373,7 @@ { int new, a_out = -1; - if (a_name && (a_out = open (a_name, 0)) < 0) + if (a_name && (a_out = open (a_name, O_RDONLY)) < 0) { PERROR (a_name); } @@ -774,9 +790,13 @@ PERROR (new_name); } + /* This adjustment was done above only #ifndef NO_REMAP, + so only undo it now #ifndef NO_REMAP. */ +#ifndef NO_REMAP #ifdef A_TEXT_OFFSET hdr.a_text -= A_TEXT_OFFSET (ohdr); #endif +#endif return 0; @@ -1055,7 +1075,7 @@ #ifdef MSDOS if ((new = writedesc) < 0) #else - if ((new = open (new_name, 2)) < 0) + if ((new = open (new_name, O_RDWR)) < 0) #endif { PERROR (new_name);