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);