# HG changeset patch # User Roland McGrath # Date 771749746 0 # Node ID b3a5b629fe26d72a37e893b623b402da3b16b807 # Parent 30a1f0809d2a91ba4fbdba32128eef986606e96f 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 -r 30a1f0809d2a -r b3a5b629fe26 src/unexec.c --- 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 #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 @@ #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);