From: Roland McGrath Date: Thu, 16 Jun 1994 06:55:46 +0000 (+0000) Subject: Include and [USG5] to define O_* macros. X-Git-Tag: emacs-19.34~7932 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=2d30a233cf3c6040e193079abd9a33913f067a9c;p=emacs.git Include and [USG5] 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. --- diff --git a/src/unexec.c b/src/unexec.c index 3bc147fec47..d91644519f1 100644 --- a/src/unexec.c +++ b/src/unexec.c @@ -137,7 +137,7 @@ thus, the amount of offset can depend on the data in the file. * 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 @@ struct aouthdr #include #include +#include /* Must be after sys/types.h for USG and BSD4_1*/ + +#ifdef USG5 +#include +#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 @@ static int pagemask; #ifdef emacs +#include "lisp.h" + static report_error (file, fd) char *file; @@ -318,7 +334,7 @@ report_error (file, fd) { 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 @@ unexec (new_name, a_name, data_start, bss_start, entry_address) { 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,8 +790,12 @@ make_hdr (new, a_out, data_start, bss_start, entry_address, a_name, new_name) 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 @@ adjust_lnnoptrs (writedesc, readdesc, new_name) #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);