# ChangeLog for app-editors/emacs
# Copyright 2002-2007 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/app-editors/emacs/ChangeLog,v 1.123 2007/03/02 19:04:40 opfer Exp $
+# $Header: /var/cvsroot/gentoo-x86/app-editors/emacs/ChangeLog,v 1.124 2007/03/02 19:27:05 opfer Exp $
+
+ 02 Mar 2007; Christian Faulhammer <opfer@gentoo.org>
+ -files/emacs-18.59-gcc4.patch, -files/emacs-18.59-gentoo.patch,
+ -files/emacs-18.59-unexelf.patch, emacs-18.59-r1.ebuild:
+ patches are now on Gentoo mirrors as they were too big
02 Mar 2007; Christian Faulhammer <opfer@gentoo.org>
-emacs-21.4-r6.ebuild:
MD5 0d61f19c0e6fcdb6657ae1d4d9e69801 files/60emacs-22.0.50.envd 39
RMD160 6264f1faa5b99e98251be427fd8ef60b52ca1370 files/60emacs-22.0.50.envd 39
SHA256 5501f5818b4b88a34e93440e5fc6e2a44d2a1c83080358849b811b1d17234f43 files/60emacs-22.0.50.envd 39
-AUX emacs-18.59-gcc4.patch 28314 RMD160 8e89f1371d4e7f1aea83696a5b80561112fd55f1 SHA1 e5ba8aa69651985728fb52348f76e9ebbdec6397 SHA256 1f56fe8e186f0a11ced90fa432f5d717f91cd6d45436d58578a1e6d976c0c13c
-MD5 21889afa26e89127713453aee24bf3f7 files/emacs-18.59-gcc4.patch 28314
-RMD160 8e89f1371d4e7f1aea83696a5b80561112fd55f1 files/emacs-18.59-gcc4.patch 28314
-SHA256 1f56fe8e186f0a11ced90fa432f5d717f91cd6d45436d58578a1e6d976c0c13c files/emacs-18.59-gcc4.patch 28314
-AUX emacs-18.59-gentoo.patch 3901 RMD160 d00d15f69e3c0fa258d5ba0dd4297c25b00c71c5 SHA1 4bbce8130c171db6a4a562418ff49aa3c95c1280 SHA256 f73cd87ac92dc89617b819f41b9c94f680d46653c553d8c3a25255b53629e93a
-MD5 d9a84fa25df38b43cdce07e9ca4f53c0 files/emacs-18.59-gentoo.patch 3901
-RMD160 d00d15f69e3c0fa258d5ba0dd4297c25b00c71c5 files/emacs-18.59-gentoo.patch 3901
-SHA256 f73cd87ac92dc89617b819f41b9c94f680d46653c553d8c3a25255b53629e93a files/emacs-18.59-gentoo.patch 3901
-AUX emacs-18.59-unexelf.patch 30720 RMD160 42f9bc14274fb0f4f6b421e607dd4fffd6f12c5e SHA1 3ba8430b7a65cf5811620f200ab01852b5c6e441 SHA256 dc4538580635977ea8415188585dbfcd88867842495dba144e854f95e16634fb
-MD5 2179ae07d8caf10bdb4e36126353f0b1 files/emacs-18.59-unexelf.patch 30720
-RMD160 42f9bc14274fb0f4f6b421e607dd4fffd6f12c5e files/emacs-18.59-unexelf.patch 30720
-SHA256 dc4538580635977ea8415188585dbfcd88867842495dba144e854f95e16634fb files/emacs-18.59-unexelf.patch 30720
AUX emacs-21.2-sh.patch 5782 RMD160 4e9f7369d9655a2bdb9cc017ba62e60ef18976a7 SHA1 8ab2b30b3e276f5383c46fad4d9cf9c3d41b8985 SHA256 c06d2f9e435e8059608bea7314ffee7cbbd0b066bb9b1c96598988f2f96fd9e5
MD5 2f1bf0e4f91897570110704adbaf48dc files/emacs-21.2-sh.patch 5782
RMD160 4e9f7369d9655a2bdb9cc017ba62e60ef18976a7 files/emacs-21.2-sh.patch 5782
MD5 5f423550e3d32b7c0511eccd93a94750 files/emacs-subdirs-el-gentoo.diff 1369
RMD160 142e80ab7dc4620275ec9623f646e0b2c4a1c6bf files/emacs-subdirs-el-gentoo.diff 1369
SHA256 c407b31c785b275f12337e41e58ff8386219b1c94a1c98b69eee82a10eb54074 files/emacs-subdirs-el-gentoo.diff 1369
+DIST emacs-18-patches.tar.bz2 16526 RMD160 ab0ed5e428fd71f24f44b43945940d7d33670e81 SHA1 3e2e962da5c7d3314943cdb402fd4c026301341c SHA256 d8dd29786dbd202b5e7bb3a176d97ae0901b6c1dd4276e253f0f42fcef34cd6e
DIST emacs-18.59-linux22x-elf-glibc21.diff.gz 15671 RMD160 4fab87eead1a66d767d2334d31507695dcf7b4a8 SHA1 075f1c9cf86e9a10fb686ebd04a2f95d6e4c3972 SHA256 fb810d893938883d50a3a8d7c43fbeb1604d5454f760b8f1f700326c8ee659dd
DIST emacs-18.59.tar.gz 2962652 RMD160 4976d0f0f34b6d54db6774d24a528f74a3bb20dc SHA1 15b25bf130e3eeb91f3eea8c01a3dec9aabf23cc SHA256 1e27e33f91984a91e9b4c1f21433f931aba03670960ecc147bb6d7b0de0f051e
DIST emacs-21.4a.tar.gz 20403483 RMD160 c312e739935b56d08783bbfe97992297a363cb8a SHA1 cdb33731180fe4a912838af805dd35e3f55394d4 SHA256 1d50ddae117c48d689a3d772e390569edccfdc22168be0112d2093bd2d7c3216
DIST leim-21.4.tar.gz 3291433 RMD160 89e1108bfe06425a0d6b4d941f9c297551bafcca SHA1 dd63f9aca1a58d40d9d426dd410fb627230974f7 SHA256 db24946985dd644bfed18815d6e991dad27f8ab1fd5823dd6dc4eb8dcd04333b
-EBUILD emacs-18.59-r1.ebuild 2934 RMD160 c58003f359b970f445fbcd35a43fa1f29504881c SHA1 272c69cd9c9afa1f25d8a875cb88334071b027e3 SHA256 9f152b4d0937a39a07e70847d512475a5fff16a194a06f72fdacab888308664c
-MD5 34ef95f0991baebedde795e1c642ec44 emacs-18.59-r1.ebuild 2934
-RMD160 c58003f359b970f445fbcd35a43fa1f29504881c emacs-18.59-r1.ebuild 2934
-SHA256 9f152b4d0937a39a07e70847d512475a5fff16a194a06f72fdacab888308664c emacs-18.59-r1.ebuild 2934
+EBUILD emacs-18.59-r1.ebuild 2972 RMD160 8969b89b83619a3bb54f922d0a6d829849b38e90 SHA1 fe227ca33eaa596ff3d57942f24e997aeb8b22a9 SHA256 4fd0bb77cdf325fd8e4ffa48e522a9ed6b8133efc5bb2663b24f0a0992294a32
+MD5 11b716757f0d6c02544eb3462e7aec72 emacs-18.59-r1.ebuild 2972
+RMD160 8969b89b83619a3bb54f922d0a6d829849b38e90 emacs-18.59-r1.ebuild 2972
+SHA256 4fd0bb77cdf325fd8e4ffa48e522a9ed6b8133efc5bb2663b24f0a0992294a32 emacs-18.59-r1.ebuild 2972
EBUILD emacs-21.4-r4.ebuild 4576 RMD160 9d13437e4792cb077f3c0f58ac21b5f23367ba09 SHA1 ac279cb763925caf5e5e39cfaa15670228896b39 SHA256 69a9266c3e94c3b1f90f23d6036a5fda18447a84836814308a6394e1326c4f12
MD5 d587ed63604257a78b4ef1c44573a601 emacs-21.4-r4.ebuild 4576
RMD160 9d13437e4792cb077f3c0f58ac21b5f23367ba09 emacs-21.4-r4.ebuild 4576
MD5 44ab97cff17e355d80cfab6659205aa2 emacs-21.4-r7.ebuild 5740
RMD160 8b3e7d5c5131578a747a557698e20fa1f1bc0afd emacs-21.4-r7.ebuild 5740
SHA256 92c536b96b10a34b1e3a378d796acb920b6aa4d2370180c05121201e6ba3cd42 emacs-21.4-r7.ebuild 5740
-MISC ChangeLog 18728 RMD160 ba6ac9fbecc728fd6eff803380d05d73a16424a3 SHA1 c9e24fccaa79eda0c5ec83c167b8f9744c87d5ac SHA256 7b1a3d0a54778dbd6098519022208be1c42df7165befd34c22161f2f3a4e3e98
-MD5 3c68f81816f60b5ac7da2b2313870304 ChangeLog 18728
-RMD160 ba6ac9fbecc728fd6eff803380d05d73a16424a3 ChangeLog 18728
-SHA256 7b1a3d0a54778dbd6098519022208be1c42df7165befd34c22161f2f3a4e3e98 ChangeLog 18728
+MISC ChangeLog 18966 RMD160 343c4852102f9d48a0576d0b3c53652f576285e0 SHA1 88c888f2b513b369b02f65bbc7d05f4b066feb45 SHA256 871531167cd9c470994d7fada90db113d431aceeff5afa750429db28d7756722
+MD5 83bfcab5d51c6f868834828596e39bce ChangeLog 18966
+RMD160 343c4852102f9d48a0576d0b3c53652f576285e0 ChangeLog 18966
+SHA256 871531167cd9c470994d7fada90db113d431aceeff5afa750429db28d7756722 ChangeLog 18966
MISC metadata.xml 158 RMD160 415d172437ca754d24fc5ab186ba8e77934d96e4 SHA1 61f6eff9729cd87a725c2a70c81aca4270a17fc4 SHA256 1393bdef3a74343fdb40a112c7096a1af16f67e7a43413250de28dfe73810eab
MD5 fcd33d07e4ee719b01157946734f4fe8 metadata.xml 158
RMD160 415d172437ca754d24fc5ab186ba8e77934d96e4 metadata.xml 158
SHA256 1393bdef3a74343fdb40a112c7096a1af16f67e7a43413250de28dfe73810eab metadata.xml 158
-MD5 c8ac383b70bbc9d6e0203b93246ab54f files/digest-emacs-18.59-r1 536
-RMD160 bfb96b384166f7f4f0830a76f6dd7d0ef6a43f62 files/digest-emacs-18.59-r1 536
-SHA256 854d3d621b4d3038ba37abce197d69dd4dd5d1a50eb2217d769ea7c10c22e9fb files/digest-emacs-18.59-r1 536
+MD5 6bd3531350f6b7c7682351e3dcf628d0 files/digest-emacs-18.59-r1 786
+RMD160 4d1f0a68da522f0bfbe8cebdb748c5f95ccc1c9d files/digest-emacs-18.59-r1 786
+SHA256 a5d7f43b69d68028793ee45424a1fce37e65dd63802310ebfda5ca85a62e9ba7 files/digest-emacs-18.59-r1 786
MD5 6276bfdc37e540127a083cc6b979ac37 files/digest-emacs-21.4-r4 473
RMD160 4f6aee1102af50b44f69f8de5714c901c5b6b15c files/digest-emacs-21.4-r4 473
SHA256 8dec85daf40abb62a8c6a7232b067f0e5da524b222d2668f8db0f1df9dd7188e files/digest-emacs-21.4-r4 473
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
-iD8DBQFF6HUVNQqtfCuFneMRAhfKAJ9ASK+a2daSOq4AAtDLDISJqfelrgCfaqwP
-HWK5Eew242xthgTooz9gxBs=
-=4MOC
+iD8DBQFF6HpYNQqtfCuFneMRAiDeAJ92oO6Z9uyfHTsQUkN4GtZTTZd1PQCfR03J
+mt+MsbEzbQ2evrp6pnGbiPo=
+=Hl3V
-----END PGP SIGNATURE-----
# Copyright 1999-2007 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/app-editors/emacs/emacs-18.59-r1.ebuild,v 1.1 2007/02/14 14:46:28 opfer Exp $
+# $Header: /var/cvsroot/gentoo-x86/app-editors/emacs/emacs-18.59-r1.ebuild,v 1.2 2007/03/02 19:27:05 opfer Exp $
inherit eutils toolchain-funcs flag-o-matic alternatives
DESCRIPTION="The extensible self-documenting text editor"
HOMEPAGE="http://www.gnu.org/software/emacs/"
SRC_URI="mirror://gnu/old-gnu/emacs/${P}.tar.gz
+ mirror://gentoo/emacs-18-patches.tar.bz2
ftp://ftp.splode.com/pub/users/friedman/emacs/${P}-linux22x-elf-glibc21.diff.gz"
LICENSE="GPL-1"
unpack ${A}
cd "${S}"
epatch "${WORKDIR}/${P}-linux22x-elf-glibc21.diff"
- epatch "${FILESDIR}/${P}-unexelf.patch"
- epatch "${FILESDIR}/${P}-gentoo.patch"
- epatch "${FILESDIR}/${P}-gcc4.patch"
+ epatch "${WORKDIR}/${P}-unexelf.patch"
+ epatch "${WORKDIR}/${P}-gentoo.patch"
+ epatch "${WORKDIR}/${P}-gcc4.patch"
}
src_compile() {
local arch
case ${ARCH} in
x86) arch=intel386 ;;
- *) die "Architecture ${ARCH} not supported" ;;
+ *) die "Architecture ${ARCH} not supported" ;;
esac
local cmd="s/\"s-.*\.h\"/\"s-linux.h\"/;s/\"m-.*\.h\"/\"m-${arch}.h\"/"
use X && cmd="${cmd};s/.*\(#define HAVE_X_WINDOWS\).*/\1/"
+MD5 f61420b327a9753e57b14fb1d3dae826 emacs-18-patches.tar.bz2 16526
+RMD160 ab0ed5e428fd71f24f44b43945940d7d33670e81 emacs-18-patches.tar.bz2 16526
+SHA256 d8dd29786dbd202b5e7bb3a176d97ae0901b6c1dd4276e253f0f42fcef34cd6e emacs-18-patches.tar.bz2 16526
MD5 a7a4ed051dc232cdc9cf37208135302a emacs-18.59-linux22x-elf-glibc21.diff.gz 15671
RMD160 4fab87eead1a66d767d2334d31507695dcf7b4a8 emacs-18.59-linux22x-elf-glibc21.diff.gz 15671
SHA256 fb810d893938883d50a3a8d7c43fbeb1604d5454f760b8f1f700326c8ee659dd emacs-18.59-linux22x-elf-glibc21.diff.gz 15671
+++ /dev/null
-Prereq: 2004-03-09
-diff -ur emacs-18.59-orig/src/ChangeLog emacs-18.59/src/ChangeLog
---- emacs-18.59-orig/src/ChangeLog 2004-03-09 08:36:49.000000000 +0100
-+++ emacs-18.59/src/ChangeLog 2007-01-29 21:47:56.000000000 +0100
-@@ -1,3 +1,11 @@
-+2007-01-29 Ulrich Mueller <ulm@kph.uni-mainz.de>
-+
-+ * x11term.c (internal_socket_read): Handle XK_BackSpace key.
-+
-+ * callproc.c, doprnt.c, emacssignal.h, fns.c, lisp.h, lread.c,
-+ malloc.c, process.c, s-linux.h, sysdep.c, terminfo.c, x11term.c:
-+ Fix GCC 4.1 compilation issues.
-+
- 2004-03-09 Ulrich Mueller <ulm@kph.uni-mainz.de>
-
- * malloc.c (DONT_DEFINE_SIGNAL): Defined.
-diff -ur emacs-18.59-orig/src/alloc.c emacs-18.59/src/alloc.c
---- emacs-18.59-orig/src/alloc.c 1992-09-21 07:45:30.000000000 +0200
-+++ emacs-18.59/src/alloc.c 2007-01-29 21:47:56.000000000 +0100
-@@ -1073,7 +1073,7 @@
- mark_object (&ptr->contents[i]);
- }
- break;
--#endif 0
-+#endif
-
- case Lisp_Symbol:
- {
-@@ -1310,7 +1310,7 @@
- }
- }
-
--#endif standalone
-+#endif /* standalone */
-
- /* Free all unmarked vectors */
- {
-diff -ur emacs-18.59-orig/src/buffer.c emacs-18.59/src/buffer.c
---- emacs-18.59-orig/src/buffer.c 1992-05-13 21:39:33.000000000 +0200
-+++ emacs-18.59/src/buffer.c 2007-01-29 21:47:56.000000000 +0100
-@@ -331,7 +331,7 @@
- return XBUFFER (buffer)->number;
- }
- */
--#endif NOTDEF
-+#endif /* NOTDEF */
-
- DEFUN ("buffer-file-name", Fbuffer_file_name, Sbuffer_file_name, 0, 1, 0,
- "Return name of file BUFFER is visiting, or NIL if none.\n\
-@@ -601,7 +601,7 @@
-
- #ifdef subprocesses
- kill_buffer_processes (buf);
--#endif subprocesses
-+#endif
-
- tem = Vinhibit_quit;
- Vinhibit_quit = Qt;
-diff -ur emacs-18.59-orig/src/callproc.c emacs-18.59/src/callproc.c
---- emacs-18.59-orig/src/callproc.c 1992-07-12 05:26:01.000000000 +0200
-+++ emacs-18.59/src/callproc.c 2007-01-29 21:47:56.000000000 +0100
-@@ -21,6 +21,7 @@
- /* This must precede sys/signal.h on certain machines. */
- #include <sys/types.h>
- #include <signal.h>
-+#include <unistd.h>
-
- #include "config.h"
-
-@@ -241,7 +242,7 @@
- {
- #ifndef subprocesses
- wait_without_blocking ();
--#endif subprocesses
-+#endif
- return Qnil;
- }
-
-@@ -413,7 +414,7 @@
-
- #ifdef vipc
- something missing here;
--#endif vipc
-+#endif
-
- /* execvp does not accept an environment arg so the only way
- to pass this environment is to set environ. Our caller
-diff -ur emacs-18.59-orig/src/dispnew.c emacs-18.59/src/dispnew.c
---- emacs-18.59-orig/src/dispnew.c 1992-07-24 21:31:36.000000000 +0200
-+++ emacs-18.59/src/dispnew.c 2007-01-29 21:47:56.000000000 +0100
-@@ -586,15 +586,15 @@
- {
- #ifndef COMPILER_REGISTER_BUG
- register
--#endif COMPILER_REGISTER_BUG
-+#endif
- struct window *w = XWINDOW (selected_window);
- #ifndef COMPILER_REGISTER_BUG
- register
--#endif COMPILER_REGISTER_BUG
-+#endif
- int hpos = cursor_hpos;
- #ifndef COMPILER_REGISTER_BUG
- register
--#endif COMPILER_REGISTER_BUG
-+#endif
- int vpos = cursor_vpos;
-
- /* Give up if about to continue line */
-diff -ur emacs-18.59-orig/src/doprnt.c emacs-18.59/src/doprnt.c
---- emacs-18.59-orig/src/doprnt.c 1991-01-08 18:26:23.000000000 +0100
-+++ emacs-18.59/src/doprnt.c 2007-01-29 21:47:56.000000000 +0100
-@@ -22,6 +22,7 @@
-
- #include <stdio.h>
- #include <ctype.h>
-+#include "config.h"
-
- doprnt (buffer, bufsize, format, nargs, args)
- char *buffer;
-diff -ur emacs-18.59-orig/src/editfns.c emacs-18.59/src/editfns.c
---- emacs-18.59-orig/src/editfns.c 1992-08-08 01:38:16.000000000 +0200
-+++ emacs-18.59/src/editfns.c 2007-01-29 21:47:56.000000000 +0100
-@@ -1046,7 +1046,7 @@
- return Qnil;
- return build_string (val);
- }
--#endif MAINTAIN_ENVIRONMENT
-+#endif /* MAINTAIN_ENVIRONMENT */
- \f
- void
- syms_of_editfns ()
-diff -ur emacs-18.59-orig/src/emacs.c emacs-18.59/src/emacs.c
---- emacs-18.59-orig/src/emacs.c 1992-10-17 04:51:00.000000000 +0100
-+++ emacs-18.59/src/emacs.c 2007-01-29 21:47:56.000000000 +0100
-@@ -314,7 +314,7 @@
- #ifdef HIGHPRI
- setpriority (PRIO_PROCESS, getpid (), HIGHPRI);
- setuid (getuid ());
--#endif HIGHPRI
-+#endif
-
- inhibit_window_system = 0;
-
-@@ -402,7 +402,7 @@
- #endif
- #ifdef SIGXFSZ
- signal (SIGXFSZ, fatal_error_signal);
--#endif SIGXFSZ
-+#endif
-
- #ifdef AIX
- /* This used to run fatal_error_signal,
-@@ -489,7 +489,7 @@
- syms_of_alloc ();
- #ifdef MAINTAIN_ENVIRONMENT
- syms_of_environ ();
--#endif MAINTAIN_ENVIRONMENT
-+#endif /* MAINTAIN_ENVIRONMENT */
- syms_of_read ();
- syms_of_print ();
- syms_of_eval ();
-diff -ur emacs-18.59-orig/src/emacssignal.h emacs-18.59/src/emacssignal.h
---- emacs-18.59-orig/src/emacssignal.h 1991-12-31 21:52:31.000000000 +0100
-+++ emacs-18.59/src/emacssignal.h 2007-01-29 21:47:56.000000000 +0100
-@@ -22,7 +22,8 @@
- #define sighold(SIG) ONLY_USED_IN_BSD_4_1
- #define sigrelse(SIG) ONLY_USED_IN_BSD_4_1
-
--int (*sys_signal (int signal_number, int (*action)())) ();
-+typedef void (*signal_handler_t) ();
-+signal_handler_t sys_signal (int signal_number, signal_handler_t action);
- int sys_sigpause (sigset_t new_mask);
- sigset_t sys_sigblock (sigset_t new_mask);
- sigset_t sys_sigunblock (sigset_t new_mask);
-diff -ur emacs-18.59-orig/src/fileio.c emacs-18.59/src/fileio.c
---- emacs-18.59-orig/src/fileio.c 1998-05-31 05:34:39.000000000 +0200
-+++ emacs-18.59/src/fileio.c 2007-01-29 21:47:56.000000000 +0100
-@@ -784,7 +784,7 @@
- if (o == target + 1 && o[-1] == '/' && o[0] == '/')
- ++o;
- else
--#endif APOLLO
-+#endif /* APOLLO */
- if (o == target && *o == '/')
- ++o;
- p += 3;
-diff -ur emacs-18.59-orig/src/fns.c emacs-18.59/src/fns.c
---- emacs-18.59-orig/src/fns.c 1992-10-17 04:54:17.000000000 +0100
-+++ emacs-18.59/src/fns.c 2007-01-29 21:47:56.000000000 +0100
-@@ -90,8 +90,6 @@
- (arg)
- Lisp_Object arg;
- {
-- extern long random ();
-- extern srandom ();
- extern long time ();
-
- if (EQ (arg, Qt))
-diff -ur emacs-18.59-orig/src/lisp.h emacs-18.59/src/lisp.h
---- emacs-18.59-orig/src/lisp.h 1992-03-06 00:11:31.000000000 +0100
-+++ emacs-18.59/src/lisp.h 2004-05-13 02:56:53.000000000 +0200
-@@ -983,7 +983,6 @@
-
- extern void debugger ();
-
--extern char *malloc (), *realloc (), *getenv (), *ctime (), *getwd ();
- extern long *xmalloc (), *xrealloc ();
-
- #ifdef MAINTAIN_ENVIRONMENT
-diff -ur emacs-18.59-orig/src/lread.c emacs-18.59/src/lread.c
---- emacs-18.59-orig/src/lread.c 1992-03-23 05:18:17.000000000 +0100
-+++ emacs-18.59/src/lread.c 2007-01-29 21:47:56.000000000 +0100
-@@ -229,7 +229,7 @@
- Lisp_Object stream;
- {
- fclose (*(FILE **) XSTRING (stream));
-- free (XPNTR (stream));
-+ free ((void *)(XPNTR (stream)));
- if (--load_in_progress < 0) load_in_progress = 0;
- return Qnil;
- }
-@@ -465,7 +465,7 @@
- return Qnil;
- }
-
--#endif standalone
-+#endif /* standalone */
- \f
- DEFUN ("read", Fread, Sread, 0, 1, 0,
- "Read one Lisp expression as text from STREAM, return as Lisp object.\n\
-@@ -1141,7 +1141,7 @@
- sym = intern (string);
- XSET (XSYMBOL (sym)->function, Lisp_Subr, sname);
- }
--#endif NOTDEF
-+#endif /* NOTDEF */
-
- /* New replacement for DefIntVar; it ignores the doc string argument
- on the assumption that make-docfile will handle that. */
-@@ -1230,7 +1230,7 @@
- abort ();
- }
-
--#endif standalone
-+#endif /* standalone */
- \f
- init_read ()
- {
-diff -ur emacs-18.59-orig/src/malloc.c emacs-18.59/src/malloc.c
---- emacs-18.59-orig/src/malloc.c 2004-03-09 08:33:12.000000000 +0100
-+++ emacs-18.59/src/malloc.c 2007-01-29 21:47:56.000000000 +0100
-@@ -213,8 +213,6 @@
-
- static void getpool ();
-
--char *malloc ();
--
- /* Cause reinitialization based on job parameters;
- also declare where the end of pure storage is. */
- void
-@@ -412,7 +410,7 @@
- }
- }
- \f
--char *
-+void *
- malloc (n) /* get a block */
- unsigned n;
- {
-@@ -488,8 +486,9 @@
- return (char *) p + ((sizeof *p + 7) & ~7);
- }
-
-+void
- free (mem)
-- char *mem;
-+ void *mem;
- {
- register struct mhead *p;
- {
-@@ -509,7 +508,7 @@
- if (p -> mh_alloc != ISALLOC)
- abort ();
-
--#else rcheck
-+#else /* rcheck */
- if (p -> mh_alloc != ISALLOC)
- {
- if (p -> mh_alloc == ISFREE)
-@@ -544,9 +543,9 @@
- }
- }
-
--char *
-+void *
- realloc (mem, n)
-- char *mem;
-+ void *mem;
- register unsigned n;
- {
- register struct mhead *p;
-@@ -606,7 +605,7 @@
-
- /* This is in case something linked with Emacs calls calloc. */
-
--char *
-+void *
- calloc (num, size)
- unsigned num, size;
- {
-@@ -621,8 +620,9 @@
-
- /* This is in case something linked with Emacs calls cfree. */
-
-+void
- cfree (mem)
-- char *mem;
-+ void *mem;
- {
- return free (mem);
- }
-@@ -656,8 +656,8 @@
- #ifndef HPUX
- /* This runs into trouble with getpagesize on HPUX.
- Patching out seems cleaner than the ugly fix needed. */
--char *
--valloc (size)
-+void *
-+valloc (size_t size)
- {
- return memalign (getpagesize (), size);
- }
-diff -ur emacs-18.59-orig/src/mocklisp.c emacs-18.59/src/mocklisp.c
---- emacs-18.59-orig/src/mocklisp.c 1991-01-08 19:00:01.000000000 +0100
-+++ emacs-18.59/src/mocklisp.c 2007-01-29 21:47:56.000000000 +0100
-@@ -193,7 +193,7 @@
- XSETINT (to, XINT (to) + XINT (from));
- return Fsubstring (string, from, to);
- }
--#endif NOTDEF
-+#endif /* NOTDEF */
- DEFUN ("insert-string", Finsert_string, Sinsert_string, 0, MANY, 0,
- "Mocklisp-compatibility insert function.\n\
- Like the function `insert' except that any argument that is a number\n\
-diff -ur emacs-18.59-orig/src/process.c emacs-18.59/src/process.c
---- emacs-18.59-orig/src/process.c 1998-05-31 05:34:40.000000000 +0200
-+++ emacs-18.59/src/process.c 2007-01-29 21:47:56.000000000 +0100
-@@ -1438,7 +1438,7 @@
-
- while (1)
- {
-- int value = connect (s, &address, sizeof address);
-+ int value = connect (s, (struct sockaddr *)&address, sizeof address);
- /* Continue if successeful. */
- if (value != -1)
- break;
-@@ -1592,7 +1592,8 @@
- int xerrno;
- Lisp_Object proc;
- #ifdef HAVE_TIMEVAL
-- struct timeval timeout, end_time, garbage;
-+ struct timeval timeout, end_time;
-+ struct timezone garbage;
- #else
- long timeout, end_time, temp;
- #endif /* not HAVE_TIMEVAL */
-diff -ur emacs-18.59-orig/src/regex.c emacs-18.59/src/regex.c
---- emacs-18.59-orig/src/regex.c 1992-07-07 17:35:33.000000000 +0200
-+++ emacs-18.59/src/regex.c 2007-01-29 21:47:56.000000000 +0100
-@@ -90,7 +90,7 @@
-
- #ifndef NFAILURES
- #define NFAILURES 80
--#endif NFAILURES
-+#endif
-
- /* width of a byte in bits */
-
-@@ -536,7 +536,7 @@
- PATFETCH (c);
- PATPUSH (syntax_spec_code[c]);
- break;
--#endif emacs
-+#endif /* emacs */
-
- case 'w':
- laststart = b;
-@@ -833,7 +833,7 @@
- if (SYNTAX (j) != (enum syntaxcode) k)
- fastmap[j] = 1;
- break;
--#endif emacs
-+#endif /* emacs */
-
- case charset:
- for (j = *p++ * BYTEWIDTH - 1; j >= 0; j--)
-@@ -1475,7 +1475,7 @@
- PREFETCH;
- if (SYNTAX (*d++) != 0) goto fail;
- break;
--#endif not emacs
-+#endif /* not emacs */
-
- case begbuf:
- if (d == string1) /* Note, d cannot equal string2 */
-@@ -1722,4 +1722,4 @@
- exit (1);
- }
-
--#endif test
-+#endif /* test */
-diff -ur emacs-18.59-orig/src/s-linux.h emacs-18.59/src/s-linux.h
---- emacs-18.59-orig/src/s-linux.h 2004-03-09 08:34:05.000000000 +0100
-+++ emacs-18.59/src/s-linux.h 2007-01-29 21:47:56.000000000 +0100
-@@ -126,6 +126,11 @@
- \f
- /* Special hacks needed to make Emacs run on this system. */
-
-+#ifdef emacs
-+#include <stdlib.h>
-+#include <string.h>
-+#endif
-+
- /* On USG systems the system calls are interruptable by signals
- that the user program has elected to catch. Thus the system call
- must be retried in these cases. To handle this without massive
-@@ -224,6 +229,7 @@
- #define MAXNAMLEN NAME_MAX /* missing SYSV-ism */
- #endif
-
-+#undef SIGSYS
- #define SIGSYS SIGUNUSED /* rename to harmless work-alike */
- #define VSWTCH VSWTC /* mis-spelling in termios.h? */
-
-@@ -253,7 +259,7 @@
-
- #define C_COMPILER gcc
- #define C_DEBUG_SWITCH -g
--#define C_OPTIMIZE_SWITCH -O2 -malign-loops=2 -malign-jumps=2 -malign-functions=2
-+#define C_OPTIMIZE_SWITCH -O2 -falign-loops=2 -falign-jumps=2 -falign-functions=2
- #define OLDXMENU_OPTIONS CFLAGS=-O2 EXTRA=insque.o
- #define START_FILES pre-crt0.o /usr/lib/crt1.o /usr/lib/crti.o
- #define LIBS_DEBUG /* override in config.h to include -lg */
-diff -ur emacs-18.59-orig/src/sysdep.c emacs-18.59/src/sysdep.c
---- emacs-18.59-orig/src/sysdep.c 1998-05-31 05:34:43.000000000 +0200
-+++ emacs-18.59/src/sysdep.c 2007-01-29 21:47:56.000000000 +0100
-@@ -2051,8 +2051,6 @@
- #endif
- }
-
--typedef int (*signal_handler_t) ();
--
- signal_handler_t
- sys_signal (int signal_number, signal_handler_t action)
- {
-@@ -2063,7 +2061,7 @@
- #else
- sigemptyset (&new_action.sa_mask);
- new_action.sa_handler = action;
-- new_action.sa_flags = NULL;
-+ new_action.sa_flags = 0;
- sigaction (signal_number, &new_action, &old_action);
- return (old_action.sa_handler);
- #endif /* DGUX */
-diff -ur emacs-18.59-orig/src/terminfo.c emacs-18.59/src/terminfo.c
---- emacs-18.59-orig/src/terminfo.c 1991-01-08 19:09:05.000000000 +0100
-+++ emacs-18.59/src/terminfo.c 2007-01-29 21:47:56.000000000 +0100
-@@ -17,6 +17,8 @@
- along with GNU Emacs; see the file COPYING. If not, write to
- the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
-
-+#include "config.h"
-+
- /* Define these variables that serve as global parameters to termcap,
- so that we do not need to conditionalize the places in Emacs
- that set them. */
-diff -ur emacs-18.59-orig/src/x11fns.c emacs-18.59/src/x11fns.c
---- emacs-18.59-orig/src/x11fns.c 1992-07-15 21:38:49.000000000 +0200
-+++ emacs-18.59/src/x11fns.c 2007-01-29 21:47:56.000000000 +0100
-@@ -884,7 +884,7 @@
- rawshift = (((unsigned) (XINT (shift_mask))) & 15) << 11;
- XRebindCode (rawkey, rawshift, rawstring, strsize);
- }
--#endif notdef
-+#endif /* notdef */
- return Qnil;
- }
-
-@@ -918,11 +918,11 @@
- XRebindCode (rawkey, i << 11, rawstring, strsize);
- }
- }
--#endif notdef
-+#endif /* notdef */
- return Qnil;
- }
-
--#endif foobar
-+#endif /* foobar */
-
- XExitWithCoreDump ()
- {
-@@ -988,7 +988,7 @@
- defsubr (&Sx_set_font);
- #ifdef notdef
- defsubr (&Sx_set_icon);
--#endif notdef
-+#endif
- defsubr (&Scoordinates_in_window_p);
- defsubr (&Sx_mouse_events);
- defsubr (&Sx_proc_mouse_event);
-@@ -1012,7 +1012,7 @@
- #ifdef notdef
- defsubr (&Sx_rebind_key);
- defsubr (&Sx_rebind_keys);
--#endif notdef
-+#endif
- defsubr (&Sx_debug);
- }
-
-diff -ur emacs-18.59-orig/src/x11term.c emacs-18.59/src/x11term.c
---- emacs-18.59-orig/src/x11term.c 1992-10-24 05:31:56.000000000 +0100
-+++ emacs-18.59/src/x11term.c 2007-01-29 21:47:56.000000000 +0100
-@@ -33,1 +33,1 @@
--#endif lint
-+#endif
-@@ -1482,6 +1482,10 @@
- strcpy(mapping_buf,"\016");
- nbytes = 1;
- break;
-+ case XK_BackSpace:
-+ strcpy(mapping_buf,"\177");
-+ nbytes = 1;
-+ break;
- }
- #ifndef AIX
- }
-@@ -1715,7 +1719,6 @@
-
- extern char *getenv ();
- extern XTinterrupt_signal ();
-- extern char *malloc ();
- extern Lisp_Object Vxterm, Vxterm1, Qt;
- extern int XIgnoreError();
- int ix;
-diff -ur emacs-18.59-orig/src/xdisp.c emacs-18.59/src/xdisp.c
---- emacs-18.59-orig/src/xdisp.c 1992-07-24 21:08:13.000000000 +0200
-+++ emacs-18.59/src/xdisp.c 2007-01-29 21:47:56.000000000 +0100
-@@ -2107,7 +2107,7 @@
- Lisp_Object root_window;
- #ifndef COMPILER_REGISTER_BUG
- register
--#endif COMPILER_REGISTER_BUG
-+#endif
- struct window *mini_w;
-
- this_line_bufpos = 0;
-diff -ur emacs-18.59-orig/etc/ChangeLog emacs-18.59/etc/ChangeLog
---- emacs-18.59-orig/etc/ChangeLog 1998-05-31 05:34:34.000000000 +0200
-+++ emacs-18.59/etc/ChangeLog 2007-01-29 21:47:56.000000000 +0100
-@@ -1,3 +1,11 @@
-+2007-01-29 Ulrich Mueller <ulm@kph.uni-mainz.de>
-+
-+ * emacsclient.c, server.c: Check for HAVE_SOCKETS instead of BSD.
-+
-+ * cvtmail.c, emacsclient.c, env.c, etags.c, fakemail.c,
-+ make-docfile.c, movemail.c, server.c, sorted-doc.c,
-+ test-distrib.c, wakeup.c, yow.c: Fix GCC 4.1 compilation issues.
-+
- 1998-05-30 Noah Friedman <friedman@splode.com>
-
- * env.c (main): Declare sys_errlist if linux + glibc2.
-diff -ur emacs-18.59-orig/etc/cvtmail.c emacs-18.59/etc/cvtmail.c
---- emacs-18.59-orig/etc/cvtmail.c 1991-01-08 20:06:08.000000000 +0100
-+++ emacs-18.59/etc/cvtmail.c 2007-01-29 21:47:56.000000000 +0100
-@@ -36,7 +36,10 @@
-
-
- #include <stdio.h>
-+#include <stdlib.h>
-+#include <string.h>
-
-+void *xmalloc(), *xrealloc();
-
- main (argc, argv)
- int argc;
-@@ -109,22 +112,22 @@
- ;
- }
-
--int
-+void *
- xmalloc (size)
- int size;
- {
-- int result = malloc (size);
-+ void *result = malloc (size);
- if (!result)
- fatal ("virtual memory exhausted", 0);
- return result;
- }
-
--int
-+void *
- xrealloc (ptr, size)
- char *ptr;
- int size;
- {
-- int result = realloc (ptr, size);
-+ void *result = realloc (ptr, size);
- if (!result)
- fatal ("virtual memory exhausted");
- return result;
-diff -ur emacs-18.59-orig/etc/emacsclient.c emacs-18.59/etc/emacsclient.c
---- emacs-18.59-orig/etc/emacsclient.c 1992-08-22 09:09:47.000000000 +0200
-+++ emacs-18.59/etc/emacsclient.c 2007-01-29 21:47:56.000000000 +0100
-@@ -27,8 +27,10 @@
- #undef close
- #endif
-
-+#include <stdlib.h>
-+#include <string.h>
-
--#if !defined(BSD) && !defined(HAVE_SYSVIPC)
-+#if !defined(HAVE_SOCKETS) && !defined(HAVE_SYSVIPC)
- #include <stdio.h>
-
- main (argc, argv)
-@@ -41,9 +43,9 @@
- exit (1);
- }
-
--#else /* BSD or HAVE_SYSVIPC */
-+#else /* HAVE_SOCKETS or HAVE_SYSVIPC */
-
--#if defined(BSD) && ! defined (HAVE_SYSVIPC)
-+#if defined(HAVE_SOCKETS)
- /* BSD code is very different from SYSV IPC code */
-
- #include <sys/types.h>
-@@ -51,10 +53,10 @@
- #include <sys/un.h>
- #include <stdio.h>
- #include <errno.h>
-+#include <unistd.h>
- #include <sys/stat.h>
-
- extern int sys_nerr;
--extern char *sys_errlist[];
- extern int errno;
-
- main (argc, argv)
-@@ -69,8 +71,6 @@
- char string[BUFSIZ];
- struct stat statbfr;
-
-- char *getenv (), *getwd ();
--
- if (argc < 2)
- {
- fprintf (stderr, "Usage: %s filename\n", argv[0]);
-@@ -112,7 +112,8 @@
- strcat (server.sun_path, "/.emacs_server");
- #endif
-
-- if (connect (s, &server, strlen (server.sun_path) + 2) < 0)
-+ if (connect (s, (struct sockaddr *)&server,
-+ strlen (server.sun_path) + 2) < 0)
- {
- fprintf (stderr, "%s: ", argv[0]);
- perror ("connect");
-@@ -125,11 +126,11 @@
- exit (1);
- }
-
-- cwd = getwd (string);
-+ cwd = getcwd (string, sizeof string);
- if (cwd == 0)
- {
-- /* getwd puts message in STRING if it fails. */
-- fprintf (stderr, "%s: %s (%s)\n", argv[0], string,
-+ fprintf (stderr, "%s: %s (%s)\n", argv[0],
-+ "Cannot get current working directory",
- (errno < sys_nerr) ? sys_errlist[errno] : "unknown error");
- exit (1);
- }
-@@ -275,4 +276,4 @@
-
- #endif /* HAVE_SYSVIPC */
-
--#endif /* BSD or HAVE_SYSVIPC */
-+#endif /* HAVE_SOCKETS or HAVE_SYSVIPC */
-diff -ur emacs-18.59-orig/etc/env.c emacs-18.59/etc/env.c
---- emacs-18.59-orig/etc/env.c 1998-05-31 05:34:36.000000000 +0200
-+++ emacs-18.59/etc/env.c 2007-01-29 21:47:56.000000000 +0100
-@@ -89,6 +89,8 @@
-
- #include <stdio.h>
- #include <errno.h>
-+#include <stdlib.h>
-+#include <string.h>
-
- extern int execvp ();
- extern char *index ();
-@@ -102,7 +104,7 @@
- int nenv_size;
-
- char *progname;
--void setenv ();
-+void xsetenv ();
- void fatal ();
-
- main (argc, argv, envp)
-@@ -134,7 +136,7 @@
- if (tem)
- {
- *tem = '\000';
-- setenv (*envp, tem + 1);
-+ xsetenv (*envp, tem + 1);
- }
- }
-
-@@ -145,7 +147,7 @@
- /* If arg contains a "=" it specifies to set a variable */
- {
- *tem = '\000';
-- setenv (*argv, tem + 1);
-+ xsetenv (*argv, tem + 1);
- argc--; argv++;
- continue;
- }
-@@ -161,7 +163,7 @@
- /* Unset a variable */
- {
- argc--; argv++;
-- setenv (*argv, 0);
-+ xsetenv (*argv, 0);
- argc--; argv++;
- }
- else if (!strcmp (*argv, "-s") ||
-@@ -174,7 +176,7 @@
- fatal ("No value specified for variable \"%s\"",
- tem);
- argc--; argv++;
-- setenv (tem, *argv);
-+ xsetenv (tem, *argv);
- argc--; argv++;
- }
- else if (!strcmp (*argv, "-") || !strcmp (*argv, "--"))
-@@ -216,7 +218,7 @@
- }
-
- void
--setenv (var, val)
-+xsetenv (var, val)
- register char *var, *val;
- {
- register char **e;
-@@ -274,8 +276,6 @@
- }
-
- \f
--extern char *malloc (), *realloc ();
--
- void
- memory_fatal ()
- {
-diff -ur emacs-18.59-orig/etc/etags.c emacs-18.59/etc/etags.c
---- emacs-18.59-orig/etc/etags.c 1992-08-20 07:11:01.000000000 +0200
-+++ emacs-18.59/etc/etags.c 2007-01-29 21:47:56.000000000 +0100
-@@ -21,6 +21,8 @@
-
- #include <stdio.h>
- #include <ctype.h>
-+#include <stdlib.h>
-+#include <string.h>
-
- /* Define the symbol ETAGS to make the program "etags",
- which makes emacs-style tag tables by default.
-@@ -128,11 +130,10 @@
-
- char *savestr();
- char *savenstr ();
--char *rindex();
--char *index();
- char *concat ();
- void initbuffer ();
- long readline ();
-+void *xmalloc(), *xrealloc();
-
- /* A `struct linebuffer' is a structure which holds a line of text.
- `readline' reads a line from a stream into a linebuffer
-@@ -1380,7 +1381,6 @@
- char *defenv;
- {
- register char *env, *p;
-- extern char *savenstr (), *index ();
-
- struct TEX_tabent *tab;
- int size, i;
-@@ -1530,47 +1530,6 @@
- return dp;
- }
-
--/*
-- * Return the ptr in sp at which the character c last
-- * appears; NULL if not found
-- *
-- * Identical to v7 rindex, included for portability.
-- */
--
--char *
--rindex(sp, c)
-- register char *sp, c;
--{
-- register char *r;
--
-- r = NULL;
-- do
-- {
-- if (*sp == c)
-- r = sp;
-- } while (*sp++);
-- return(r);
--}
--
--/*
-- * Return the ptr in sp at which the character c first
-- * appears; NULL if not found
-- *
-- * Identical to v7 index, included for portability.
-- */
--
--char *
--index(sp, c)
-- register char *sp, c;
--{
-- do
-- {
-- if (*sp == c)
-- return (sp);
-- } while (*sp++);
-- return (NULL);
--}
--
- /* Print error message and exit. */
-
- fatal (s1, s2)
-@@ -1609,22 +1568,22 @@
-
- /* Like malloc but get fatal error if memory is exhausted. */
-
--int
-+void *
- xmalloc (size)
- int size;
- {
-- int result = malloc (size);
-+ void *result = malloc (size);
- if (!result)
- fatal ("virtual memory exhausted", 0);
- return result;
- }
-
--int
-+void *
- xrealloc (ptr, size)
- char *ptr;
- int size;
- {
-- int result = realloc (ptr, size);
-+ void *result = realloc (ptr, size);
- if (!result)
- fatal ("virtual memory exhausted");
- return result;
-diff -ur emacs-18.59-orig/etc/fakemail.c emacs-18.59/etc/fakemail.c
---- emacs-18.59-orig/etc/fakemail.c 1991-01-08 20:08:42.000000000 +0100
-+++ emacs-18.59/etc/fakemail.c 2007-01-29 21:47:56.000000000 +0100
-@@ -43,6 +43,7 @@
- #endif
-
- #include <stdio.h>
-+#include <stdlib.h>
- #include <string.h>
- #include <ctype.h>
- #include <time.h>
-@@ -123,16 +124,8 @@
-
- extern FILE *popen ();
- extern int fclose (), pclose ();
--extern char *malloc (), *realloc ();
-
--#ifdef CURRENT_USER
--extern struct passwd *getpwuid ();
--extern unsigned short geteuid ();
--static struct passwd *my_entry;
--#define cuserid(s) \
--(my_entry = getpwuid (((int) geteuid ())), \
-- my_entry->pw_name)
--#endif
-+#define cuserid(s) (getpwuid (geteuid ())->pw_name)
- \f
- /* Utilities */
-
-@@ -564,7 +557,6 @@
- return;
- }
- \f
--void
- main (argc, argv)
- int argc;
- char **argv;
-diff -ur emacs-18.59-orig/etc/make-docfile.c emacs-18.59/etc/make-docfile.c
---- emacs-18.59-orig/etc/make-docfile.c 1991-10-25 19:43:28.000000000 +0100
-+++ emacs-18.59/etc/make-docfile.c 2007-01-29 21:47:56.000000000 +0100
-@@ -32,6 +32,8 @@
- */
-
- #include <stdio.h>
-+#include <stdlib.h>
-+#include <string.h>
-
- FILE *outfile;
-
-diff -ur emacs-18.59-orig/etc/movemail.c emacs-18.59/etc/movemail.c
---- emacs-18.59-orig/etc/movemail.c 1992-05-07 22:11:16.000000000 +0200
-+++ emacs-18.59/etc/movemail.c 2007-01-29 21:47:56.000000000 +0100
-@@ -52,6 +52,9 @@
- #include <sys/stat.h>
- #include <sys/file.h>
- #include <errno.h>
-+#include <stdio.h>
-+#include <stdlib.h>
-+#include <string.h>
- #define NO_SHORTNAMES /* Tell config not to load remap.h */
- #include "../src/config.h"
-
-@@ -81,6 +84,7 @@
- #undef close
-
- char *concat ();
-+void *xmalloc ();
- extern int errno;
-
- /* Nonzero means this is name of a lock file to delete on fatal error. */
-@@ -320,7 +324,6 @@
- char *name;
- {
- extern int errno, sys_nerr;
-- extern char *sys_errlist[];
- char *s;
-
- if (errno < sys_nerr)
-@@ -334,7 +337,6 @@
- char *name;
- {
- extern int errno, sys_nerr;
-- extern char *sys_errlist[];
- char *s;
-
- if (errno < sys_nerr)
-@@ -365,11 +367,11 @@
-
- /* Like malloc but get fatal error if memory is exhausted. */
-
--int
-+void *
- xmalloc (size)
- int size;
- {
-- int result = malloc (size);
-+ void *result = malloc (size);
- if (!result)
- fatal ("virtual memory exhausted", 0);
- return result;
-@@ -704,7 +706,6 @@
- get_errmsg ()
- {
- extern int errno, sys_nerr;
-- extern char *sys_errlist[];
- char *s;
-
- if (errno < sys_nerr)
-diff -ur emacs-18.59-orig/etc/server.c emacs-18.59/etc/server.c
---- emacs-18.59-orig/etc/server.c 1992-03-23 05:06:08.000000000 +0100
-+++ emacs-18.59/etc/server.c 2007-01-29 21:47:56.000000000 +0100
-@@ -36,8 +36,10 @@
- #undef open
- #undef close
-
-+#include <stdlib.h>
-+#include <string.h>
-
--#if !defined(BSD) && !defined(HAVE_SYSVIPC)
-+#if !defined(HAVE_SOCKETS) && !defined(HAVE_SYSVIPC)
- #include <stdio.h>
-
- main ()
-@@ -47,9 +49,9 @@
- exit (1);
- }
-
--#else /* BSD or HAVE_SYSVIPC */
-+#else /* HAVE_SOCKETS or HAVE_SYSVIPC */
-
--#if defined (BSD) && ! defined (HAVE_SYSVIPC)
-+#if defined (HAVE_SOCKETS)
- /* BSD code is very different from SYSV IPC code */
-
- #include <sys/file.h>
-@@ -110,7 +112,7 @@
- unlink (server.sun_path);
- #endif
-
-- if (bind (s, &server, strlen (server.sun_path) + 2) < 0)
-+ if (bind (s, (struct sockaddr *)&server, strlen (server.sun_path) + 2) < 0)
- {
- perror ("bind");
- exit (1);
-@@ -128,14 +130,18 @@
- signal (SIGPIPE, SIG_IGN);
- for (;;)
- {
-- int rmask = (1 << s) + 1;
-+ fd_set rmask;
-+ FD_ZERO (&rmask);
-+ FD_SET (0, &rmask);
-+ FD_SET (s, &rmask);
- if (select (s + 1, &rmask, 0, 0, 0) < 0)
- perror ("select");
-- if (rmask & (1 << s)) /* client sends list of filenames */
-+ if (FD_ISSET (s, &rmask)) /* client sends list of filenames */
- {
- fromlen = sizeof (fromunix);
- fromunix.sun_family = AF_UNIX;
-- infd = accept (s, &fromunix, &fromlen); /* open socket fd */
-+ infd = accept (s, (struct sockaddr *)&fromunix, &fromlen);
-+ /* open socket fd */
- if (infd < 0)
- {
- if (errno == EMFILE || errno == ENFILE)
-@@ -184,7 +190,8 @@
- fflush (infile);
- continue;
- }
-- else if (rmask & 1) /* emacs sends codeword, fd, and string message */
-+ else if (FD_ISSET (0, &rmask))
-+ /* emacs sends codeword, fd, and string message */
- {
- /* Read command codeword and fd */
- clearerr (stdin);
-@@ -325,6 +332,4 @@
-
- #endif /* SYSV IPC */
-
--#endif /* BSD && IPC */
--
--
-+#endif /* HAVE_SOCKETS && IPC */
-diff -ur emacs-18.59-orig/etc/sorted-doc.c emacs-18.59/etc/sorted-doc.c
---- emacs-18.59-orig/etc/sorted-doc.c 1988-06-04 06:22:22.000000000 +0200
-+++ emacs-18.59/etc/sorted-doc.c 2007-01-29 21:47:56.000000000 +0100
-@@ -7,8 +7,9 @@
-
- #include <stdio.h>
- #include <ctype.h>
-+#include <stdlib.h>
-+#include <string.h>
-
--extern char *malloc ();
- char *xmalloc ();
-
- #define NUL '\0'
-diff -ur emacs-18.59-orig/etc/test-distrib.c emacs-18.59/etc/test-distrib.c
---- emacs-18.59-orig/etc/test-distrib.c 1987-05-22 06:15:12.000000000 +0200
-+++ emacs-18.59/etc/test-distrib.c 2007-01-29 21:47:56.000000000 +0100
-@@ -1,4 +1,5 @@
- #include <stdio.h>
-+#include <stdlib.h>
-
- /* Break string in two parts to avoid buggy C compilers that ignore characters
- after nulls in strings. */
-diff -ur emacs-18.59-orig/etc/wakeup.c emacs-18.59/etc/wakeup.c
---- emacs-18.59-orig/etc/wakeup.c 1991-07-30 23:03:39.000000000 +0200
-+++ emacs-18.59/etc/wakeup.c 2007-01-29 21:47:56.000000000 +0100
-@@ -2,6 +2,7 @@
-
- #include <stdio.h>
- #include <time.h>
-+#include <stdlib.h>
-
- struct tm *localtime ();
-
-diff -ur emacs-18.59-orig/etc/yow.c emacs-18.59/etc/yow.c
---- emacs-18.59-orig/etc/yow.c 1988-04-13 08:13:41.000000000 +0200
-+++ emacs-18.59/etc/yow.c 2007-01-29 21:47:56.000000000 +0100
-@@ -1,5 +1,7 @@
- #include <stdio.h>
- #include <ctype.h>
-+#include <stdlib.h>
-+#include <string.h>
- #include "../src/paths.h"
-
- /* zippy.c
+++ /dev/null
-Prereq: 2004-03-08
-diff -Nur emacs-18.59-orig/src/ChangeLog emacs-18.59/src/ChangeLog
---- emacs-18.59-orig/src/ChangeLog 2004-03-08 09:38:50.000000000 +0100
-+++ emacs-18.59/src/ChangeLog 2004-03-09 08:36:49.000000000 +0100
-@@ -1,3 +1,9 @@
-+2004-03-09 Ulrich Mueller <ulm@kph.uni-mainz.de>
-+
-+ * malloc.c (DONT_DEFINE_SIGNAL): Defined.
-+
-+ * s-linux.h (TERMINFO): Moved here from ymakefile.
-+
- 2004-03-08 Ulrich Mueller <ulm@kph.uni-mainz.de>
-
- * unexelf.c: Replaced with version from Emacs 21.3.
-diff -Nur emacs-18.59-orig/src/malloc.c emacs-18.59/src/malloc.c
---- emacs-18.59-orig/src/malloc.c 1992-03-23 05:09:07.000000000 +0100
-+++ emacs-18.59/src/malloc.c 2004-03-09 08:33:12.000000000 +0100
-@@ -59,6 +59,9 @@
- */
-
- #ifdef emacs
-+/* Inhibit macro definition of "signal" in m-*.h */
-+#define DONT_DEFINE_SIGNAL
-+
- /* config.h specifies which kind of system this is. */
- #include "config.h"
-
-diff -Nur emacs-18.59-orig/src/s-linux.h emacs-18.59/src/s-linux.h
---- emacs-18.59-orig/src/s-linux.h 1999-11-05 09:17:23.000000000 +0100
-+++ emacs-18.59/src/s-linux.h 2004-03-09 08:34:05.000000000 +0100
-@@ -164,6 +164,9 @@
- #define POSIX /* affects only getpagesize.h */
- #define POSIX_SIGNALS /* uses sigaction from sys_signal */
-
-+/* Use terminfo instead of termcap. */
-+#define TERMINFO
-+
- #ifdef HAVE_PTMX
-
- /* This change means that we don't loop through allocate_pty too many
-@@ -250,7 +253,7 @@
-
- #define C_COMPILER gcc
- #define C_DEBUG_SWITCH -g
--#define C_OPTIMIZE_SWITCH -O3 -malign-loops=2 -malign-jumps=2 -malign-functions=2
-+#define C_OPTIMIZE_SWITCH -O2 -malign-loops=2 -malign-jumps=2 -malign-functions=2
- #define OLDXMENU_OPTIONS CFLAGS=-O2 EXTRA=insque.o
- #define START_FILES pre-crt0.o /usr/lib/crt1.o /usr/lib/crti.o
- #define LIBS_DEBUG /* override in config.h to include -lg */
-diff -Nur emacs-18.59-orig/src/ymakefile emacs-18.59/src/ymakefile
---- emacs-18.59-orig/src/ymakefile 1999-11-05 09:19:47.000000000 +0100
-+++ emacs-18.59/src/ymakefile 2003-11-13 08:35:38.000000000 +0100
-@@ -191,7 +191,7 @@
- SHORT= shortnames
- #endif /* SHORTNAMES */
-
--CFLAGS= C_DEBUG_SWITCH C_OPTIMIZE_SWITCH -Demacs $(MYCPPFLAG) C_SWITCH_MACHINE C_SWITCH_SYSTEM C_SWITCH_X_MACHINE C_SWITCH_X_SYSTEM
-+CFLAGS= C_OPTIMIZE_SWITCH -Demacs $(MYCPPFLAG) C_SWITCH_MACHINE C_SWITCH_SYSTEM C_SWITCH_X_MACHINE C_SWITCH_X_SYSTEM
- /* DO NOT use -R. There is a special hack described in lastfile.c
- which is used instead. Some initialized data areas are modified
- at initial startup, then labeled as part of the text area when
-@@ -284,7 +284,6 @@
- process.o callproc.o $(environobj) \
- doprnt.o
-
--#define TERMINFO
- #ifdef TERMINFO
- /* Used to be -ltermcap here. If your machine needs that,
- define LIBS_TERMCAP in the m- file. */
-diff -Nur emacs-18.59-orig/lisp/ChangeLog emacs-18.59/lisp/ChangeLog
---- emacs-18.59-orig/lisp/ChangeLog 1992-10-31 01:32:00.000000000 +0100
-+++ emacs-18.59/lisp/ChangeLog 2004-03-08 09:37:21.000000000 +0100
-@@ -1,3 +1,9 @@
-+2004-03-08 Ulrich Mueller <ulm@kph.uni-mainz.de>
-+
-+ * term/linux.el: New file.
-+
-+ * term/xterm.el: Load vt200.el.
-+
- Fri Oct 30 19:36:38 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
-
- * Version 18.59 released.
-diff -Nur emacs-18.59-orig/lisp/term/linux.el emacs-18.59/lisp/term/linux.el
---- emacs-18.59-orig/lisp/term/linux.el 1970-01-01 01:00:00.000000000 +0100
-+++ emacs-18.59/lisp/term/linux.el 2003-11-29 21:37:15.000000000 +0100
-@@ -0,0 +1,2 @@
-+(load (concat term-file-prefix "vt200") nil t)
-+(enable-arrow-keys)
-diff -Nur emacs-18.59-orig/lisp/term/xterm.el emacs-18.59/lisp/term/xterm.el
---- emacs-18.59-orig/lisp/term/xterm.el 1989-04-27 03:52:39.000000000 +0200
-+++ emacs-18.59/lisp/term/xterm.el 2003-11-29 21:37:15.000000000 +0100
-@@ -1,2 +1,2 @@
--;; Don't send the `ti' string when screen is cleared.
--(setq reset-terminal-on-clear nil)
-+(load (concat term-file-prefix "vt200") nil t)
-+(enable-arrow-keys)
+++ /dev/null
-Prereq: 1999-11-05
-diff -Nur emacs-18.59-orig/src/ChangeLog emacs-18.59/src/ChangeLog
---- emacs-18.59-orig/src/ChangeLog 1999-11-05 09:19:56.000000000 +0100
-+++ emacs-18.59/src/ChangeLog 2004-03-08 09:38:50.000000000 +0100
-@@ -1,3 +1,7 @@
-+2004-03-08 Ulrich Mueller <ulm@kph.uni-mainz.de>
-+
-+ * unexelf.c: Replaced with version from Emacs 21.3.
-+
- 1999-11-05 Noah Friedman <friedman@splode.com>
-
- * ymakefile [LIBS_TERMCAP]: Use -lncurses, not -lcurses.
-diff -Nur emacs-18.59-orig/src/unexelf.c emacs-18.59/src/unexelf.c
---- emacs-18.59-orig/src/unexelf.c 1998-05-31 04:35:54.000000000 +0200
-+++ emacs-18.59/src/unexelf.c 2004-03-08 01:18:54.000000000 +0100
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1985, 1986, 1987, 1988, 1990, 1992
-+/* Copyright (C) 1985, 1986, 1987, 1988, 1990, 1992, 1999, 2000, 01, 02
- Free Software Foundation, Inc.
-
- This file is part of GNU Emacs.
-@@ -33,14 +33,14 @@
- * Modified heavily since then.
- *
- * Synopsis:
-- * unexec (new_name, a_name, data_start, bss_start, entry_address)
-- * char *new_name, *a_name;
-+ * unexec (new_name, old_name, data_start, bss_start, entry_address)
-+ * char *new_name, *old_name;
- * unsigned data_start, bss_start, entry_address;
- *
- * Takes a snapshot of the program and makes an a.out format file in the
- * file named by the string argument new_name.
-- * If a_name is non-NULL, the symbol table will be taken from the given file.
-- * On some machines, an existing a_name file is required.
-+ * If old_name is non-NULL, the symbol table will be taken from the given file.
-+ * On some machines, an existing old_name file is required.
- *
- * The boundaries within the a.out file may be adjusted with the data_start
- * and bss_start arguments. Either or both may be given as 0 for defaults.
-@@ -52,11 +52,6 @@
- * The value you specify may be rounded down to a suitable boundary
- * as required by the machine you are using.
- *
-- * Specifying zero for data_start means the boundary between text and data
-- * should not be the same as when the program was loaded.
-- * If NO_REMAP is defined, the argument data_start is ignored and the
-- * segment boundaries are never changed.
-- *
- * Bss_start indicates how much of the data segment is to be saved in the
- * a.out file and restored when the program is executed. It gives the lowest
- * unsaved address, and is rounded up to a page boundary. The default when 0
-@@ -66,9 +61,6 @@
- *
- * The new file is set up to start at entry_address.
- *
-- * If you make improvements I'd like to get them too.
-- * harpo!utah-cs!thomas, thomas@Utah-20
-- *
- */
-
- /* Even more heavily modified by james@bigtex.cactus.org of Dell Computer Co.
-@@ -412,22 +404,159 @@
-
- */
- \f
-+/*
-+ * Modified by rdh@yottayotta.com of Yotta Yotta Incorporated.
-+ *
-+ * The code originally used mmap() to create a memory image of the new
-+ * and old object files. This had a few handy features: (1) you get
-+ * to use a cool system call like mmap, (2) no need to explicitly
-+ * write out the new file before the close, and (3) no swap space
-+ * requirements. Unfortunately, mmap() often fails to work with
-+ * nfs-mounted file systems.
-+ *
-+ * So, instead of relying on the vm subsystem to do the file i/o for
-+ * us, it's now done explicitly. A buffer of the right size for the
-+ * file is dynamically allocated, and either the old_name is read into
-+ * it, or it is initialized with the correct new executable contents,
-+ * and then written to new_name.
-+ */
-+\f
-+#ifndef emacs
-+#define fatal(a, b, c) fprintf (stderr, a, b, c), exit (1)
-+#include <string.h>
-+#else
-+#include "config.h"
-+extern void fatal (char *, ...);
-+#endif
-+
- #include <sys/types.h>
- #include <stdio.h>
- #include <sys/stat.h>
- #include <memory.h>
--#include <string.h>
- #include <errno.h>
- #include <unistd.h>
- #include <fcntl.h>
-+#if !defined (__NetBSD__) && !defined (__OpenBSD__)
- #include <elf.h>
-+#endif
- #include <sys/mman.h>
--
--#ifndef emacs
--#define fatal(a, b, c) fprintf (stderr, a, b, c), exit (1)
-+#if defined (__sony_news) && defined (_SYSTYPE_SYSV)
-+#include <sys/elf_mips.h>
-+#include <sym.h>
-+#endif /* __sony_news && _SYSTYPE_SYSV */
-+#if __sgi
-+#include <syms.h> /* for HDRR declaration */
-+#endif /* __sgi */
-+
-+#ifndef MAP_ANON
-+#ifdef MAP_ANONYMOUS
-+#define MAP_ANON MAP_ANONYMOUS
- #else
--#include "config.h"
--extern void fatal (char *, ...);
-+#define MAP_ANON 0
-+#endif
-+#endif
-+
-+#ifndef MAP_FAILED
-+#define MAP_FAILED ((void *) -1)
-+#endif
-+
-+#if defined (__alpha__) && !defined (__NetBSD__) && !defined (__OpenBSD__)
-+/* Declare COFF debugging symbol table. This used to be in
-+ /usr/include/sym.h, but this file is no longer included in Red Hat
-+ 5.0 and presumably in any other glibc 2.x based distribution. */
-+typedef struct {
-+ short magic;
-+ short vstamp;
-+ int ilineMax;
-+ int idnMax;
-+ int ipdMax;
-+ int isymMax;
-+ int ioptMax;
-+ int iauxMax;
-+ int issMax;
-+ int issExtMax;
-+ int ifdMax;
-+ int crfd;
-+ int iextMax;
-+ long cbLine;
-+ long cbLineOffset;
-+ long cbDnOffset;
-+ long cbPdOffset;
-+ long cbSymOffset;
-+ long cbOptOffset;
-+ long cbAuxOffset;
-+ long cbSsOffset;
-+ long cbSsExtOffset;
-+ long cbFdOffset;
-+ long cbRfdOffset;
-+ long cbExtOffset;
-+} HDRR, *pHDRR;
-+#define cbHDRR sizeof(HDRR)
-+#define hdrNil ((pHDRR)0)
-+#endif
-+
-+#ifdef __NetBSD__
-+/*
-+ * NetBSD does not have normal-looking user-land ELF support.
-+ */
-+# if defined __alpha__ || defined __sparc_v9__
-+# define ELFSIZE 64
-+# else
-+# define ELFSIZE 32
-+# endif
-+# include <sys/exec_elf.h>
-+
-+# ifndef PT_LOAD
-+# define PT_LOAD Elf_pt_load
-+# if 0 /* was in pkgsrc patches for 20.7 */
-+# define SHT_PROGBITS Elf_sht_progbits
-+# endif
-+# define SHT_SYMTAB Elf_sht_symtab
-+# define SHT_DYNSYM Elf_sht_dynsym
-+# define SHT_NULL Elf_sht_null
-+# define SHT_NOBITS Elf_sht_nobits
-+# define SHT_REL Elf_sht_rel
-+# define SHT_RELA Elf_sht_rela
-+
-+# define SHN_UNDEF Elf_eshn_undefined
-+# define SHN_ABS Elf_eshn_absolute
-+# define SHN_COMMON Elf_eshn_common
-+# endif /* !PT_LOAD */
-+
-+# ifdef __alpha__
-+# include <sys/exec_ecoff.h>
-+# define HDRR struct ecoff_symhdr
-+# define pHDRR HDRR *
-+# endif /* __alpha__ */
-+
-+#ifdef __mips__ /* was in pkgsrc patches for 20.7 */
-+# define SHT_MIPS_DEBUG DT_MIPS_FLAGS
-+# define HDRR struct Elf_Shdr
-+#endif /* __mips__ */
-+#endif /* __NetBSD__ */
-+
-+#ifdef __OpenBSD__
-+# include <sys/exec_elf.h>
-+#endif
-+
-+#if __GNU_LIBRARY__ - 0 >= 6
-+# include <link.h> /* get ElfW etc */
-+#endif
-+
-+#ifndef ElfW
-+# ifdef __STDC__
-+# define ElfBitsW(bits, type) Elf##bits##_##type
-+# else
-+# define ElfBitsW(bits, type) Elf/**/bits/**/_/**/type
-+# endif
-+# ifdef _LP64
-+# define ELFSIZE 64
-+# else
-+# define ELFSIZE 32
-+# endif
-+ /* This macro expands `bits' before invoking ElfBitsW. */
-+# define ElfExpandBitsW(bits, type) ElfBitsW (bits, type)
-+# define ElfW(type) ElfExpandBitsW (ELFSIZE, type)
- #endif
-
- #ifndef ELF_BSS_SECTION_NAME
-@@ -462,13 +591,13 @@
- */
-
- #define OLD_SECTION_H(n) \
-- (*(Elf32_Shdr *) ((byte *) old_section_h + old_file_h->e_shentsize * (n)))
-+ (*(ElfW(Shdr) *) ((byte *) old_section_h + old_file_h->e_shentsize * (n)))
- #define NEW_SECTION_H(n) \
-- (*(Elf32_Shdr *) ((byte *) new_section_h + new_file_h->e_shentsize * (n)))
-+ (*(ElfW(Shdr) *) ((byte *) new_section_h + new_file_h->e_shentsize * (n)))
- #define OLD_PROGRAM_H(n) \
-- (*(Elf32_Phdr *) ((byte *) old_program_h + old_file_h->e_phentsize * (n)))
-+ (*(ElfW(Phdr) *) ((byte *) old_program_h + old_file_h->e_phentsize * (n)))
- #define NEW_PROGRAM_H(n) \
-- (*(Elf32_Phdr *) ((byte *) new_program_h + new_file_h->e_phentsize * (n)))
-+ (*(ElfW(Phdr) *) ((byte *) new_program_h + new_file_h->e_phentsize * (n)))
-
- #define PATCH_INDEX(n) \
- do { \
-@@ -478,9 +607,9 @@
-
- /* Round X up to a multiple of Y. */
-
--int
-+static ElfW(Addr)
- round_up (x, y)
-- int x, y;
-+ ElfW(Addr) x, y;
- {
- int rem = x % y;
- if (rem == 0)
-@@ -488,6 +617,45 @@
- return x - rem + y;
- }
-
-+/* Return the index of the section named NAME.
-+ SECTION_NAMES, FILE_NAME and FILE_H give information
-+ about the file we are looking in.
-+
-+ If we don't find the section NAME, that is a fatal error
-+ if NOERROR is 0; we return -1 if NOERROR is nonzero. */
-+
-+static int
-+find_section (name, section_names, file_name, old_file_h, old_section_h, noerror)
-+ char *name;
-+ char *section_names;
-+ char *file_name;
-+ ElfW(Ehdr) *old_file_h;
-+ ElfW(Shdr) *old_section_h;
-+ int noerror;
-+{
-+ int idx;
-+
-+ for (idx = 1; idx < old_file_h->e_shnum; idx++)
-+ {
-+#ifdef DEBUG
-+ fprintf (stderr, "Looking for %s - found %s\n", name,
-+ section_names + OLD_SECTION_H (idx).sh_name);
-+#endif
-+ if (!strcmp (section_names + OLD_SECTION_H (idx).sh_name,
-+ name))
-+ break;
-+ }
-+ if (idx == old_file_h->e_shnum)
-+ {
-+ if (noerror)
-+ return -1;
-+ else
-+ fatal ("Can't find %s in %s.\n", name, file_name);
-+ }
-+
-+ return idx;
-+}
-+
- /* ****************************************************************
- * unexec
- *
-@@ -507,25 +675,36 @@
- /* Pointers to the base of the image of the two files. */
- caddr_t old_base, new_base;
-
-+#if MAP_ANON == 0
-+ int mmap_fd;
-+#else
-+# define mmap_fd -1
-+#endif
-+
- /* Pointers to the file, program and section headers for the old and new
- * files.
- */
-- Elf32_Ehdr *old_file_h, *new_file_h;
-- Elf32_Phdr *old_program_h, *new_program_h;
-- Elf32_Shdr *old_section_h, *new_section_h;
-+ ElfW(Ehdr) *old_file_h, *new_file_h;
-+ ElfW(Phdr) *old_program_h, *new_program_h;
-+ ElfW(Shdr) *old_section_h, *new_section_h;
-
- /* Point to the section name table in the old file */
- char *old_section_names;
-
-- Elf32_Addr old_bss_addr, new_bss_addr;
-- Elf32_Word old_bss_size, new_data2_size;
-- Elf32_Off new_data2_offset;
-- Elf32_Addr new_data2_addr;
--
-- int n, nn, old_bss_index, old_data_index, new_data2_index;
-+ ElfW(Addr) old_bss_addr, new_bss_addr;
-+ ElfW(Word) old_bss_size, new_data2_size;
-+ ElfW(Off) new_data2_offset;
-+ ElfW(Addr) new_data2_addr;
-+
-+ int n, nn;
-+ int old_bss_index, old_sbss_index;
-+ int old_data_index, new_data2_index;
-+ int old_mdebug_index;
- struct stat stat_buf;
-+ int old_file_size;
-
-- /* Open the old file & map it into the address space. */
-+ /* Open the old file, allocate a buffer of the right size, and read
-+ * in the file contents. */
-
- old_file = open (old_name, O_RDONLY);
-
-@@ -535,52 +714,80 @@
- if (fstat (old_file, &stat_buf) == -1)
- fatal ("Can't fstat (%s): errno %d\n", old_name, errno);
-
-- old_base = mmap (0, stat_buf.st_size, PROT_READ, MAP_SHARED, old_file, 0);
-+#if MAP_ANON == 0
-+ mmap_fd = open ("/dev/zero", O_RDONLY);
-+ if (mmap_fd < 0)
-+ fatal ("Can't open /dev/zero for reading: errno %d\n", errno);
-+#endif
-
-- if (old_base == (caddr_t) -1)
-- fatal ("Can't mmap (%s): errno %d\n", old_name, errno);
-+ /* We cannot use malloc here because that may use sbrk. If it does,
-+ we'd dump our temporary buffers with Emacs, and we'd have to be
-+ extra careful to use the correct value of sbrk(0) after
-+ allocating all buffers in the code below, which we aren't. */
-+ old_file_size = stat_buf.st_size;
-+ old_base = mmap (NULL, old_file_size, PROT_READ | PROT_WRITE,
-+ MAP_ANON | MAP_PRIVATE, mmap_fd, 0);
-+ if (old_base == MAP_FAILED)
-+ fatal ("Can't allocate buffer for %s\n", old_name);
-
--#ifdef DEBUG
-- fprintf (stderr, "mmap (%s, %x) -> %x\n", old_name, stat_buf.st_size,
-- old_base);
--#endif
-+ if (read (old_file, old_base, stat_buf.st_size) != stat_buf.st_size)
-+ fatal ("Didn't read all of %s: errno %d\n", old_name, errno);
-
- /* Get pointers to headers & section names */
-
-- old_file_h = (Elf32_Ehdr *) old_base;
-- old_program_h = (Elf32_Phdr *) ((byte *) old_base + old_file_h->e_phoff);
-- old_section_h = (Elf32_Shdr *) ((byte *) old_base + old_file_h->e_shoff);
-+ old_file_h = (ElfW(Ehdr) *) old_base;
-+ old_program_h = (ElfW(Phdr) *) ((byte *) old_base + old_file_h->e_phoff);
-+ old_section_h = (ElfW(Shdr) *) ((byte *) old_base + old_file_h->e_shoff);
- old_section_names = (char *) old_base
- + OLD_SECTION_H (old_file_h->e_shstrndx).sh_offset;
-
-+ /* Find the mdebug section, if any. */
-+
-+ old_mdebug_index = find_section (".mdebug", old_section_names,
-+ old_name, old_file_h, old_section_h, 1);
-+
- /* Find the old .bss section. Figure out parameters of the new
- * data2 and bss sections.
- */
-
-- for (old_bss_index = 1; old_bss_index < (int) old_file_h->e_shnum;
-- old_bss_index++)
-+ old_bss_index = find_section (".bss", old_section_names,
-+ old_name, old_file_h, old_section_h, 0);
-+
-+ old_sbss_index = find_section (".sbss", old_section_names,
-+ old_name, old_file_h, old_section_h, 1);
-+ if (old_sbss_index != -1)
-+ if (OLD_SECTION_H (old_sbss_index).sh_type == SHT_PROGBITS)
-+ old_sbss_index = -1;
-+
-+ if (old_sbss_index == -1)
- {
--#ifdef DEBUG
-- fprintf (stderr, "Looking for .bss - found %s\n",
-- old_section_names + OLD_SECTION_H (old_bss_index).sh_name);
--#endif
-- if (!strcmp (old_section_names + OLD_SECTION_H (old_bss_index).sh_name,
-- ELF_BSS_SECTION_NAME))
-- break;
-+ old_bss_addr = OLD_SECTION_H (old_bss_index).sh_addr;
-+ old_bss_size = OLD_SECTION_H (old_bss_index).sh_size;
-+ new_data2_index = old_bss_index;
-+ }
-+ else
-+ {
-+ old_bss_addr = OLD_SECTION_H (old_sbss_index).sh_addr;
-+ old_bss_size = OLD_SECTION_H (old_bss_index).sh_size
-+ + OLD_SECTION_H (old_sbss_index).sh_size;
-+ new_data2_index = old_sbss_index;
- }
-- if (old_bss_index == old_file_h->e_shnum)
-- fatal ("Can't find .bss in %s.\n", old_name, 0);
-
-- old_bss_addr = OLD_SECTION_H (old_bss_index).sh_addr;
-- old_bss_size = OLD_SECTION_H (old_bss_index).sh_size;
--#if defined(emacs) || !defined(DEBUG)
-- new_bss_addr = (Elf32_Addr) sbrk (0);
-+ /* Find the old .data section. Figure out parameters of
-+ the new data2 and bss sections. */
-+
-+ old_data_index = find_section (".data", old_section_names,
-+ old_name, old_file_h, old_section_h, 0);
-+
-+#if defined (emacs) || !defined (DEBUG)
-+ new_bss_addr = (ElfW(Addr)) sbrk (0);
- #else
- new_bss_addr = old_bss_addr + old_bss_size + 0x1234;
- #endif
- new_data2_addr = old_bss_addr;
- new_data2_size = new_bss_addr - old_bss_addr;
-- new_data2_offset = OLD_SECTION_H (old_bss_index).sh_offset;
-+ new_data2_offset = OLD_SECTION_H (old_data_index).sh_offset +
-+ (new_data2_addr - OLD_SECTION_H (old_data_index).sh_addr);
-
- #ifdef DEBUG
- fprintf (stderr, "old_bss_index %d\n", old_bss_index);
-@@ -595,9 +802,9 @@
- if ((unsigned) new_bss_addr < (unsigned) old_bss_addr + old_bss_size)
- fatal (".bss shrank when undumping???\n", 0, 0);
-
-- /* Set the output file to the right size and mmap it. Set
-- * pointers to various interesting objects. stat_buf still has
-- * old_file data.
-+ /* Set the output file to the right size. Allocate a buffer to hold
-+ * the image of the new file. Set pointers to various interesting
-+ * objects. stat_buf still has old_file data.
- */
-
- new_file = open (new_name, O_RDWR | O_CREAT, 0666);
-@@ -609,20 +816,14 @@
- if (ftruncate (new_file, new_file_size))
- fatal ("Can't ftruncate (%s): errno %d\n", new_name, errno);
-
--#ifdef UNEXEC_USE_MAP_PRIVATE
-- new_base = mmap (0, new_file_size, PROT_READ | PROT_WRITE, MAP_PRIVATE,
-- new_file, 0);
--#else
-- new_base = mmap (0, new_file_size, PROT_READ | PROT_WRITE, MAP_SHARED,
-- new_file, 0);
--#endif
--
-- if (new_base == (caddr_t) -1)
-- fatal ("Can't mmap (%s): errno %d\n", new_name, errno);
--
-- new_file_h = (Elf32_Ehdr *) new_base;
-- new_program_h = (Elf32_Phdr *) ((byte *) new_base + old_file_h->e_phoff);
-- new_section_h = (Elf32_Shdr *)
-+ new_base = mmap (NULL, new_file_size, PROT_READ | PROT_WRITE,
-+ MAP_ANON | MAP_PRIVATE, mmap_fd, 0);
-+ if (new_base == MAP_FAILED)
-+ fatal ("Can't allocate buffer for %s\n", old_name);
-+
-+ new_file_h = (ElfW(Ehdr) *) new_base;
-+ new_program_h = (ElfW(Phdr) *) ((byte *) new_base + old_file_h->e_phoff);
-+ new_section_h = (ElfW(Shdr) *)
- ((byte *) new_base + old_file_h->e_shoff + new_data2_size);
-
- /* Make our new file, program and section headers as copies of the
-@@ -661,12 +862,22 @@
- for (n = new_file_h->e_phnum - 1; n >= 0; n--)
- {
- /* Compute maximum of all requirements for alignment of section. */
-- int alignment = (NEW_PROGRAM_H (n)).p_align;
-+ ElfW(Word) alignment = (NEW_PROGRAM_H (n)).p_align;
- if ((OLD_SECTION_H (old_bss_index)).sh_addralign > alignment)
- alignment = OLD_SECTION_H (old_bss_index).sh_addralign;
-
-- if (NEW_PROGRAM_H (n).p_vaddr + NEW_PROGRAM_H (n).p_filesz > old_bss_addr)
-- fatal ("Program segment above .bss in %s\n", old_name, 0);
-+#ifdef __sgi
-+ /* According to r02kar@x4u2.desy.de (Karsten Kuenne)
-+ and oliva@gnu.org (Alexandre Oliva), on IRIX 5.2, we
-+ always get "Program segment above .bss" when dumping
-+ when the executable doesn't have an sbss section. */
-+ if (old_sbss_index != -1)
-+#endif /* __sgi */
-+ if (NEW_PROGRAM_H (n).p_vaddr + NEW_PROGRAM_H (n).p_filesz
-+ > (old_sbss_index == -1
-+ ? old_bss_addr
-+ : round_up (old_bss_addr, alignment)))
-+ fatal ("Program segment above .bss in %s\n", old_name, 0);
-
- if (NEW_PROGRAM_H (n).p_type == PT_LOAD
- && (round_up ((NEW_PROGRAM_H (n)).p_vaddr
-@@ -678,7 +889,9 @@
- if (n < 0)
- fatal ("Couldn't find segment next to .bss in %s\n", old_name, 0);
-
-- NEW_PROGRAM_H (n).p_filesz += new_data2_size;
-+ /* Make sure that the size includes any padding before the old .bss
-+ section. */
-+ NEW_PROGRAM_H (n).p_filesz = new_bss_addr - NEW_PROGRAM_H (n).p_vaddr;
- NEW_PROGRAM_H (n).p_memsz = NEW_PROGRAM_H (n).p_filesz;
-
- #if 0 /* Maybe allow section after data2 - does this ever happen? */
-@@ -712,12 +925,14 @@
- for (n = 1, nn = 1; n < (int) old_file_h->e_shnum; n++, nn++)
- {
- caddr_t src;
-- /* If it is bss section, insert the new data2 section before it. */
-- if (n == old_bss_index)
-+ /* If it is (s)bss section, insert the new data2 section before it. */
-+ /* new_data2_index is the index of either old_sbss or old_bss, that was
-+ chosen as a section for new_data2. */
-+ if (n == new_data2_index)
- {
- /* Steal the data section header for this data2 section. */
- memcpy (&NEW_SECTION_H (nn), &OLD_SECTION_H (old_data_index),
-- new_file_h->e_shentsize);
-+ new_file_h->e_shentsize);
-
- NEW_SECTION_H (nn).sh_addr = new_data2_addr;
- NEW_SECTION_H (nn).sh_offset = new_data2_offset;
-@@ -737,13 +952,17 @@
- memcpy (&NEW_SECTION_H (nn), &OLD_SECTION_H (n),
- old_file_h->e_shentsize);
-
-- /* The new bss section's size is zero, and its file offset and virtual
-- address should be off by NEW_DATA2_SIZE. */
-- if (n == old_bss_index)
-+ if (n == old_bss_index
-+ /* The new bss and sbss section's size is zero, and its file offset
-+ and virtual address should be off by NEW_DATA2_SIZE. */
-+ || n == old_sbss_index
-+ )
- {
-- /* NN should be `old_bss_index + 1' at this point. */
-- NEW_SECTION_H (nn).sh_offset += new_data2_size;
-- NEW_SECTION_H (nn).sh_addr += new_data2_size;
-+ /* NN should be `old_s?bss_index + 1' at this point. */
-+ NEW_SECTION_H (nn).sh_offset =
-+ NEW_SECTION_H (new_data2_index).sh_offset + new_data2_size;
-+ NEW_SECTION_H (nn).sh_addr =
-+ NEW_SECTION_H (new_data2_index).sh_addr + new_data2_size;
- /* Let the new bss section address alignment be the same as the
- section address alignment followed the old bss section, so
- this section will be placed in exactly the same place. */
-@@ -767,7 +986,9 @@
- >= OLD_SECTION_H (old_bss_index-1).sh_offset)
- NEW_SECTION_H (nn).sh_offset += new_data2_size;
- #else
-- if (NEW_SECTION_H (nn).sh_offset >= new_data2_offset)
-+ if (round_up (NEW_SECTION_H (nn).sh_offset,
-+ OLD_SECTION_H (old_bss_index).sh_addralign)
-+ >= new_data2_offset)
- NEW_SECTION_H (nn).sh_offset += new_data2_size;
- #endif
- /* Any section that was originally placed after the section
-@@ -787,18 +1008,54 @@
- if (NEW_SECTION_H (nn).sh_type != SHT_SYMTAB
- && NEW_SECTION_H (nn).sh_type != SHT_DYNSYM)
- PATCH_INDEX (NEW_SECTION_H (nn).sh_info);
-+
-+ if (old_sbss_index != -1)
-+ if (!strcmp (old_section_names + NEW_SECTION_H (nn).sh_name, ".sbss"))
-+ {
-+ NEW_SECTION_H (nn).sh_offset =
-+ round_up (NEW_SECTION_H (nn).sh_offset,
-+ NEW_SECTION_H (nn).sh_addralign);
-+ NEW_SECTION_H (nn).sh_type = SHT_PROGBITS;
-+ }
-
- /* Now, start to copy the content of sections. */
- if (NEW_SECTION_H (nn).sh_type == SHT_NULL
- || NEW_SECTION_H (nn).sh_type == SHT_NOBITS)
- continue;
-
-- /* Write out the sections. .data and .data1 (and data2, called
-+ /* Write out the sections. .data and .data1 (and data2, called
- ".data" in the strings table) get copied from the current process
- instead of the old file. */
- if (!strcmp (old_section_names + NEW_SECTION_H (n).sh_name, ".data")
- || !strcmp ((old_section_names + NEW_SECTION_H (n).sh_name),
-- ".data1"))
-+ ".sdata")
-+ || !strcmp ((old_section_names + NEW_SECTION_H (n).sh_name),
-+ ".lit4")
-+ || !strcmp ((old_section_names + NEW_SECTION_H (n).sh_name),
-+ ".lit8")
-+ /* The conditional bit below was in Oliva's original code
-+ (1999-08-25) and seems to have been dropped by mistake
-+ subsequently. It prevents a crash at startup under X in
-+ `IRIX64 6.5 6.5.17m' with c_dev 7.3.1.3m. It causes no
-+ trouble on the other ELF platforms I could test (Irix
-+ 6.5.15m, Solaris 8, Debian Potato x86, Debian Woody
-+ SPARC); however, it's reported to cause crashes under
-+ some version of GNU/Linux. It's not yet clear what's
-+ changed in that Irix version to cause the problem, or why
-+ the fix sometimes fails under GNU/Linux. There's
-+ probably no good reason to have something Irix-specific
-+ here, but this will have to do for now. IRIX6_5 is the
-+ most specific macro we have to test. -- fx 2002-10-01 */
-+#ifdef IRIX6_5
-+ || !strcmp ((old_section_names + NEW_SECTION_H (n).sh_name),
-+ ".got")
-+#endif
-+ || !strcmp ((old_section_names + NEW_SECTION_H (n).sh_name),
-+ ".sdata1")
-+ || !strcmp ((old_section_names + NEW_SECTION_H (n).sh_name),
-+ ".data1")
-+ || !strcmp ((old_section_names + NEW_SECTION_H (n).sh_name),
-+ ".sbss"))
- src = (caddr_t) OLD_SECTION_H (n).sh_addr;
- else
- src = old_base + OLD_SECTION_H (n).sh_offset;
-@@ -806,13 +1063,114 @@
- memcpy (NEW_SECTION_H (nn).sh_offset + new_base, src,
- NEW_SECTION_H (nn).sh_size);
-
-+#ifdef __alpha__
-+ /* Update Alpha COFF symbol table: */
-+ if (strcmp (old_section_names + OLD_SECTION_H (n).sh_name, ".mdebug")
-+ == 0)
-+ {
-+ pHDRR symhdr = (pHDRR) (NEW_SECTION_H (nn).sh_offset + new_base);
-+
-+ symhdr->cbLineOffset += new_data2_size;
-+ symhdr->cbDnOffset += new_data2_size;
-+ symhdr->cbPdOffset += new_data2_size;
-+ symhdr->cbSymOffset += new_data2_size;
-+ symhdr->cbOptOffset += new_data2_size;
-+ symhdr->cbAuxOffset += new_data2_size;
-+ symhdr->cbSsOffset += new_data2_size;
-+ symhdr->cbSsExtOffset += new_data2_size;
-+ symhdr->cbFdOffset += new_data2_size;
-+ symhdr->cbRfdOffset += new_data2_size;
-+ symhdr->cbExtOffset += new_data2_size;
-+ }
-+#endif /* __alpha__ */
-+
-+#if defined (__sony_news) && defined (_SYSTYPE_SYSV)
-+ if (NEW_SECTION_H (nn).sh_type == SHT_MIPS_DEBUG
-+ && old_mdebug_index != -1)
-+ {
-+ int diff = NEW_SECTION_H(nn).sh_offset
-+ - OLD_SECTION_H(old_mdebug_index).sh_offset;
-+ HDRR *phdr = (HDRR *)(NEW_SECTION_H (nn).sh_offset + new_base);
-+
-+ if (diff)
-+ {
-+ phdr->cbLineOffset += diff;
-+ phdr->cbDnOffset += diff;
-+ phdr->cbPdOffset += diff;
-+ phdr->cbSymOffset += diff;
-+ phdr->cbOptOffset += diff;
-+ phdr->cbAuxOffset += diff;
-+ phdr->cbSsOffset += diff;
-+ phdr->cbSsExtOffset += diff;
-+ phdr->cbFdOffset += diff;
-+ phdr->cbRfdOffset += diff;
-+ phdr->cbExtOffset += diff;
-+ }
-+ }
-+#endif /* __sony_news && _SYSTYPE_SYSV */
-+
-+#if __sgi
-+ /* Adjust the HDRR offsets in .mdebug and copy the
-+ line data if it's in its usual 'hole' in the object.
-+ Makes the new file debuggable with dbx.
-+ patches up two problems: the absolute file offsets
-+ in the HDRR record of .mdebug (see /usr/include/syms.h), and
-+ the ld bug that gets the line table in a hole in the
-+ elf file rather than in the .mdebug section proper.
-+ David Anderson. davea@sgi.com Jan 16,1994. */
-+ if (n == old_mdebug_index)
-+ {
-+#define MDEBUGADJUST(__ct,__fileaddr) \
-+ if (n_phdrr->__ct > 0) \
-+ { \
-+ n_phdrr->__fileaddr += movement; \
-+ }
-+
-+ HDRR * o_phdrr = (HDRR *)((byte *)old_base + OLD_SECTION_H (n).sh_offset);
-+ HDRR * n_phdrr = (HDRR *)((byte *)new_base + NEW_SECTION_H (nn).sh_offset);
-+ unsigned movement = new_data2_size;
-+
-+ MDEBUGADJUST (idnMax, cbDnOffset);
-+ MDEBUGADJUST (ipdMax, cbPdOffset);
-+ MDEBUGADJUST (isymMax, cbSymOffset);
-+ MDEBUGADJUST (ioptMax, cbOptOffset);
-+ MDEBUGADJUST (iauxMax, cbAuxOffset);
-+ MDEBUGADJUST (issMax, cbSsOffset);
-+ MDEBUGADJUST (issExtMax, cbSsExtOffset);
-+ MDEBUGADJUST (ifdMax, cbFdOffset);
-+ MDEBUGADJUST (crfd, cbRfdOffset);
-+ MDEBUGADJUST (iextMax, cbExtOffset);
-+ /* The Line Section, being possible off in a hole of the object,
-+ requires special handling. */
-+ if (n_phdrr->cbLine > 0)
-+ {
-+ if (o_phdrr->cbLineOffset > (OLD_SECTION_H (n).sh_offset
-+ + OLD_SECTION_H (n).sh_size))
-+ {
-+ /* line data is in a hole in elf. do special copy and adjust
-+ for this ld mistake.
-+ */
-+ n_phdrr->cbLineOffset += movement;
-+
-+ memcpy (n_phdrr->cbLineOffset + new_base,
-+ o_phdrr->cbLineOffset + old_base, n_phdrr->cbLine);
-+ }
-+ else
-+ {
-+ /* somehow line data is in .mdebug as it is supposed to be. */
-+ MDEBUGADJUST (cbLine, cbLineOffset);
-+ }
-+ }
-+ }
-+#endif /* __sgi */
-+
- /* If it is the symbol table, its st_shndx field needs to be patched. */
- if (NEW_SECTION_H (nn).sh_type == SHT_SYMTAB
- || NEW_SECTION_H (nn).sh_type == SHT_DYNSYM)
- {
-- Elf32_Shdr *spt = &NEW_SECTION_H (nn);
-+ ElfW(Shdr) *spt = &NEW_SECTION_H (nn);
- unsigned int num = spt->sh_size / spt->sh_entsize;
-- Elf32_Sym * sym = (Elf32_Sym *) (NEW_SECTION_H (nn).sh_offset +
-+ ElfW(Sym) * sym = (ElfW(Sym) *) (NEW_SECTION_H (nn).sh_offset +
- new_base);
- for (; num--; sym++)
- {
-@@ -830,7 +1188,7 @@
- for (n = new_file_h->e_shnum - 1; n; n--)
- {
- byte *symnames;
-- Elf32_Sym *symp, *symendp;
-+ ElfW(Sym) *symp, *symendp;
-
- if (NEW_SECTION_H (n).sh_type != SHT_DYNSYM
- && NEW_SECTION_H (n).sh_type != SHT_SYMTAB)
-@@ -838,12 +1196,14 @@
-
- symnames = ((byte *) new_base
- + NEW_SECTION_H (NEW_SECTION_H (n).sh_link).sh_offset);
-- symp = (Elf32_Sym *) (NEW_SECTION_H (n).sh_offset + new_base);
-- symendp = (Elf32_Sym *) ((byte *)symp + NEW_SECTION_H (n).sh_size);
-+ symp = (ElfW(Sym) *) (NEW_SECTION_H (n).sh_offset + new_base);
-+ symendp = (ElfW(Sym) *) ((byte *)symp + NEW_SECTION_H (n).sh_size);
-
- for (; symp < symendp; symp ++)
- if (strcmp ((char *) (symnames + symp->st_name), "_end") == 0
-- || strcmp ((char *) (symnames + symp->st_name), "_edata") == 0)
-+ || strcmp ((char *) (symnames + symp->st_name), "end") == 0
-+ || strcmp ((char *) (symnames + symp->st_name), "_edata") == 0
-+ || strcmp ((char *) (symnames + symp->st_name), "edata") == 0)
- memcpy (&symp->st_value, &new_bss_addr, sizeof (new_bss_addr));
- }
-
-@@ -851,7 +1211,7 @@
- that it can undo relocations performed by the runtime linker. */
- for (n = new_file_h->e_shnum - 1; n; n--)
- {
-- Elf32_Shdr section = NEW_SECTION_H (n);
-+ ElfW(Shdr) section = NEW_SECTION_H (n);
- switch (section.sh_type) {
- default:
- break;
-@@ -863,37 +1223,65 @@
- nn = section.sh_info;
- if (!strcmp (old_section_names + NEW_SECTION_H (nn).sh_name, ".data")
- || !strcmp ((old_section_names + NEW_SECTION_H (nn).sh_name),
-+ ".sdata")
-+ || !strcmp ((old_section_names + NEW_SECTION_H (nn).sh_name),
-+ ".lit4")
-+ || !strcmp ((old_section_names + NEW_SECTION_H (nn).sh_name),
-+ ".lit8")
-+#ifdef IRIX6_5 /* see above */
-+ || !strcmp ((old_section_names + NEW_SECTION_H (nn).sh_name),
-+ ".got")
-+#endif
-+ || !strcmp ((old_section_names + NEW_SECTION_H (nn).sh_name),
-+ ".sdata1")
-+ || !strcmp ((old_section_names + NEW_SECTION_H (nn).sh_name),
- ".data1"))
- {
-- Elf32_Addr offset = NEW_SECTION_H (nn).sh_addr -
-+ ElfW(Addr) offset = NEW_SECTION_H (nn).sh_addr -
- NEW_SECTION_H (nn).sh_offset;
- caddr_t reloc = old_base + section.sh_offset, end;
- for (end = reloc + section.sh_size; reloc < end;
- reloc += section.sh_entsize)
- {
-- Elf32_Addr addr = ((Elf32_Rel *) reloc)->r_offset - offset;
-- memcpy (new_base + addr, old_base + addr, 4);
-- }
-+ ElfW(Addr) addr = ((ElfW(Rel) *) reloc)->r_offset - offset;
-+#ifdef __alpha__
-+ /* The Alpha ELF binutils currently have a bug that
-+ sometimes results in relocs that contain all
-+ zeroes. Work around this for now... */
-+ if (((ElfW(Rel) *) reloc)->r_offset == 0)
-+ continue;
-+#endif
-+ memcpy (new_base + addr, old_base + addr, sizeof(ElfW(Addr)));
-+ }
- }
- break;
- }
- }
-
--#ifdef UNEXEC_USE_MAP_PRIVATE
-- if (lseek (new_file, 0, SEEK_SET) == -1)
-- fatal ("Can't rewind (%s): errno %d\n", new_name, errno);
-+ /* Write out new_file, close it, and free the buffer containing its
-+ * contents */
-
- if (write (new_file, new_base, new_file_size) != new_file_size)
-- fatal ("Can't write (%s): errno %d\n", new_name, errno);
--#endif
-+ fatal ("Didn't write %d bytes to %s: errno %d\n",
-+ new_file_size, new_base, errno);
-+
-+ if (close (new_file))
-+ fatal ("Can't close (%s): errno %d\n", new_name, errno);
-+
-+ munmap (new_base, new_file_size);
-
-- /* Close the files and make the new file executable. */
-+ /* Close old_file, and free the corresponding buffer */
-+
-+#if MAP_ANON == 0
-+ close (mmap_fd);
-+#endif
-
- if (close (old_file))
- fatal ("Can't close (%s): errno %d\n", old_name, errno);
-
-- if (close (new_file))
-- fatal ("Can't close (%s): errno %d\n", new_name, errno);
-+ munmap (old_base, old_file_size);
-+
-+ /* Make the new file executable */
-
- if (stat (new_name, &stat_buf) == -1)
- fatal ("Can't stat (%s): errno %d\n", new_name, errno);