Fix the MSDOS build.
authorEli Zaretskii <eliz@gnu.org>
Wed, 16 Apr 2014 13:27:28 +0000 (16:27 +0300)
committerEli Zaretskii <eliz@gnu.org>
Wed, 16 Apr 2014 13:27:28 +0000 (16:27 +0300)
 src/unexcoff.c [MSDOS]: Include libc/atexit.h.
 (copy_text_and_data): Zero out the atexit chain pointer before
 dumping Emacs.
 src/termhooks.h (encode_terminal_code): Update prototype.
 src/term.c (encode_terminal_code) [DOS_NT]: Make it externally
 visible for all DOS_NT ports, not just WINDOWSNT.
 (syms_of_term) [!MSDOS]: Don't define 'tty-menu-*' symbols on MSDOS.
 src/sysdep.c (emacs_sigaction_init, init_signals): Don't use SIGCHLD
 unless it is defined.
 (emacs_pipe) [MSDOS]: Redirect to 'pipe'.
 src/process.c (close_on_exec, accept4, process_socket): Move into
 the "ifdef subprocesses" part.
 (catch_child_signal): Condition by "ifdef subprocesses".
 (syms_of_process) <Qinternal_default_process_sentinel>
 <Qinternal_default_process_filter>: Condition by "ifdef subprocesses".
 src/msdos.h: Add prototypes for new functions.
 (EINPROGRESS): Define.
 (O_CLOEXEC): Define to zero.
 src/msdos.c (check_window_system): Remove unnecessary an
 incompatible duplicate function.
 (sys_opendir, readlinkat, faccessat, fstatat, unsetenv): New
 functions in support of new functionality.
 src/menu.c (single_menu_item): Add visual indication  of submenu
 also for menus on MSDOS frames.
 (Fx_popup_menu) [!MSDOS]: Do not call tty_menu_show on MSDOS.
 src/lisp.h (CHECK_PROCESS) [!subprocesses]: Do not define
 when async subprocesses aren't supported.
 src/font.h (FONT_WIDTH) [MSDOS]: MSDOS-specific definition.
 src/emacs.c (close_output_streams): Zero out errno before calling
 close_stream.
 src/dired.c [MSDOS]: Include msdos.h.
 src/conf_post.h (opendir) [MSDOS]: Redirect to sys_opendir.
 (DATA_START) [MSDOS]: Define.
 (SYSTEM_PURESIZE_EXTRA) [MSDOS]: Enlarge by 25K.
 src/callproc.c (block_child_signal, unblock_child_signal) [MSDOS]:
 Ifdef away for MSDOS.
 (record_kill_process) [MSDOS]: Ifdef away the entire body for MSDOS.
 (call_process_cleanup) [MSDOS]: Ifdef away portions not relevant
 for MSDOS.
 (call_process) [MSDOS]: Fix call sequence of dostounix_filename.
 Use temporary file template that is compatible with mkostemp.
 Move vfork-related portions under #ifndef MSDOS.
 (syms_of_callproc): Unify templates of MSDOS and WINDOWSNT.

 lisp/term/pc-win.el (x-list-fonts, x-get-selection-value): Provide
 doc strings, as required by snarf-documentation.

 msdos/sedlisp.inp:
 msdos/sedlibmk.inp:
 msdos/sedleim.inp:
 msdos/sed3v2.inp:
 msdos/sed2v2.inp:
 msdos/sed1v2.inp: Update Sed scripts for Emacs 24.4.
 msdos/inttypes.h: Add PRIdMAX.
 msdos/INSTALL: Update for Emacs 24.4.
 msdos/sedadmin.inp: New file.

31 files changed:
ChangeLog
config.bat
lib-src/ChangeLog
lib-src/update-game-score.c
lisp/ChangeLog
lisp/term/pc-win.el
msdos/ChangeLog
msdos/INSTALL
msdos/inttypes.h
msdos/sed1v2.inp
msdos/sed2v2.inp
msdos/sed3v2.inp
msdos/sed6.inp
msdos/sedleim.inp
msdos/sedlibmk.inp
msdos/sedlisp.inp
src/ChangeLog
src/callproc.c
src/conf_post.h
src/dired.c
src/emacs.c
src/font.h
src/lisp.h
src/menu.c
src/msdos.c
src/msdos.h
src/process.c
src/sysdep.c
src/term.c
src/termhooks.h
src/unexcoff.c

index f70e461..e23703e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2014-04-16  Eli Zaretskii  <eliz@gnu.org>
+
+       * config.bat: Update for Emacs 24.4.
+
 2014-04-13  Paul Eggert  <eggert@cs.ucla.edu>
 
        Port to IRIX 6.5 (Bug#9684).
 2014-04-13  Paul Eggert  <eggert@cs.ucla.edu>
 
        Port to IRIX 6.5 (Bug#9684).
index 8af3756..cc35447 100644 (file)
@@ -264,8 +264,14 @@ cd lib
 Rem Rename files like djtar on plain DOS filesystem would.\r
 If Exist build-aux\snippet\c++defs.h update build-aux/snippet/c++defs.h build-aux/snippet/cxxdefs.h\r
 If Exist alloca.in.h update alloca.in.h alloca.in-h\r
 Rem Rename files like djtar on plain DOS filesystem would.\r
 If Exist build-aux\snippet\c++defs.h update build-aux/snippet/c++defs.h build-aux/snippet/cxxdefs.h\r
 If Exist alloca.in.h update alloca.in.h alloca.in-h\r
+If Exist byteswap.in.h update byteswap.in.h byteswap.in-h\r
+If Exist dirent.in.h update dirent.in.h dirent.in-h\r
+If Exist errno.in.h update errno.in.h errno.in-h\r
 If Exist execinfo.in.h update execinfo.in.h execinfo.in-h\r
 If Exist execinfo.in.h update execinfo.in.h execinfo.in-h\r
+If Exist fcntl.in.h update fcntl.in.h fcntl.in-h\r
 If Exist getopt.in.h update getopt.in.h getopt.in-h\r
 If Exist getopt.in.h update getopt.in.h getopt.in-h\r
+If Exist inttypes.in.h update inttypes.in.h inttypes.in-h\r
+If Exist stdarg.in.h update stdarg.in.h stdarg.in-h\r
 If Exist stdalign.in.h update stdalign.in.h stdalign.in-h\r
 If Exist stdbool.in.h update stdbool.in.h stdbool.in-h\r
 If Exist signal.in.h update signal.in.h signal.in-h\r
 If Exist stdalign.in.h update stdalign.in.h stdalign.in-h\r
 If Exist stdbool.in.h update stdbool.in.h stdbool.in-h\r
 If Exist signal.in.h update signal.in.h signal.in-h\r
@@ -274,8 +280,11 @@ If Exist stddef.in.h update stddef.in.h  stddef.in-h
 If Exist stdint.in.h update stdint.in.h  stdint.in-h\r
 If Exist stdio.in.h update stdio.in.h stdio.in-h\r
 If Exist stdlib.in.h update stdlib.in.h stdlib.in-h\r
 If Exist stdint.in.h update stdint.in.h  stdint.in-h\r
 If Exist stdio.in.h update stdio.in.h stdio.in-h\r
 If Exist stdlib.in.h update stdlib.in.h stdlib.in-h\r
+If Exist string.in.h update string.in.h string.in-h\r
+If Exist sys_select.in.h update sys_select.in.h sys_select.in-h\r
 If Exist sys_stat.in.h update sys_stat.in.h sys_stat.in-h\r
 If Exist sys_types.in.h update sys_types.in.h sys_types.in-h\r
 If Exist sys_stat.in.h update sys_stat.in.h sys_stat.in-h\r
 If Exist sys_types.in.h update sys_types.in.h sys_types.in-h\r
+If Exist sys_time.in.h update sys_time.in.h sys_time.in-h\r
 If Exist time.in.h update time.in.h time.in-h\r
 If Exist unistd.in.h update unistd.in.h unistd.in-h\r
 If Exist Makefile.in sed -f ../msdos/sedlibcf.inp < Makefile.in > makefile.tmp\r
 If Exist time.in.h update time.in.h time.in-h\r
 If Exist unistd.in.h update unistd.in.h unistd.in-h\r
 If Exist Makefile.in sed -f ../msdos/sedlibcf.inp < Makefile.in > makefile.tmp\r
@@ -294,13 +303,18 @@ If Exist gnus\.dir-locals.el update gnus/.dir-locals.el gnus/_dir-locals.el
 sed -f ../msdos/sedlisp.inp < Makefile.in > Makefile\r
 cd ..\r
 rem   ----------------------------------------------------------------------\r
 sed -f ../msdos/sedlisp.inp < Makefile.in > Makefile\r
 cd ..\r
 rem   ----------------------------------------------------------------------\r
-If not Exist leim\quail\latin-pre.el goto maindir\r
 Echo Configuring the leim directory...\r
 cd leim\r
 sed -f ../msdos/sedleim.inp < Makefile.in > Makefile\r
 cd ..\r
 rem   ----------------------------------------------------------------------\r
 Echo Configuring the leim directory...\r
 cd leim\r
 sed -f ../msdos/sedleim.inp < Makefile.in > Makefile\r
 cd ..\r
 rem   ----------------------------------------------------------------------\r
-:maindir\r
+If Not Exist admin\unidata goto noadmin\r
+Echo Configuring the admin/unidata directory...\r
+cd admin\unidata\r
+sed -f ../../msdos/sedadmin.inp < Makefile.in > Makefile\r
+cd ..\..\r
+:noadmin\r
+rem   ----------------------------------------------------------------------\r
 Echo Configuring the main directory...\r
 If Exist .dir-locals.el update .dir-locals.el _dir-locals.el\r
 If Exist src\.dbxinit update src/.dbxinit src/_dbxinit\r
 Echo Configuring the main directory...\r
 If Exist .dir-locals.el update .dir-locals.el _dir-locals.el\r
 If Exist src\.dbxinit update src/.dbxinit src/_dbxinit\r
index 7e7f6bf..5a783d3 100644 (file)
@@ -1,3 +1,8 @@
+2014-04-16  Eli Zaretskii  <eliz@gnu.org>
+
+       * update-game-score.c (write_scores): Condition fchmod call on
+       DOS_NT, not WINDOWSNT.
+
 2014-03-10  Juanma Barranquero  <lekktu@gmail.com>
 
        * emacsclient.c (main): #ifdef out previous change on Windows.
 2014-03-10  Juanma Barranquero  <lekktu@gmail.com>
 
        * emacsclient.c (main): #ifdef out previous change on Windows.
index ad591cc..cb6fdf7 100644 (file)
@@ -443,7 +443,7 @@ write_scores (const char *filename, const struct score_entry *scores,
   fd = mkostemp (tempfile, 0);
   if (fd < 0)
     return -1;
   fd = mkostemp (tempfile, 0);
   if (fd < 0)
     return -1;
-#ifndef WINDOWSNT
+#ifndef DOS_NT
   if (fchmod (fd, 0644) != 0)
     return -1;
 #endif
   if (fchmod (fd, 0644) != 0)
     return -1;
 #endif
@@ -459,7 +459,7 @@ write_scores (const char *filename, const struct score_entry *scores,
     return -1;
   if (rename (tempfile, filename) != 0)
     return -1;
     return -1;
   if (rename (tempfile, filename) != 0)
     return -1;
-#ifdef WINDOWSNT
+#ifdef DOS_NT
   if (chmod (filename, 0644) < 0)
     return -1;
 #endif
   if (chmod (filename, 0644) < 0)
     return -1;
 #endif
index d8e6642..50dcc78 100644 (file)
@@ -1,3 +1,8 @@
+2014-04-16  Eli Zaretskii  <eliz@gnu.org>
+
+       * term/pc-win.el (x-list-fonts, x-get-selection-value): Provide
+       doc strings, as required by snarf-documentation.
+
 2014-04-15  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * ps-def.el (ps-generate-postscript-with-faces1): Use the new `sorted'
 2014-04-15  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * ps-def.el (ps-generate-postscript-with-faces1): Use the new `sorted'
index 00b860f..f24a54f 100644 (file)
@@ -165,6 +165,27 @@ created."
 
 ;; From src/xfns.c
 (defun x-list-fonts (_pattern &optional _face _frame _maximum width)
 
 ;; From src/xfns.c
 (defun x-list-fonts (_pattern &optional _face _frame _maximum width)
+  "Return a list of the names of available fonts matching PATTERN.
+If optional arguments FACE and FRAME are specified, return only fonts
+the same size as FACE on FRAME.
+
+PATTERN should be a string containing a font name in the XLFD,
+Fontconfig, or GTK format.  A font name given in the XLFD format may
+contain wildcard characters:
+  the * character matches any substring, and
+  the ? character matches any single character.
+  PATTERN is case-insensitive.
+
+The return value is a list of strings, suitable as arguments to
+\`set-face-font'.
+
+Fonts Emacs can't use may or may not be excluded
+even if they match PATTERN and FACE.
+The optional fourth argument MAXIMUM sets a limit on how many
+fonts to match.  The first MAXIMUM fonts are reported.
+The optional fifth argument WIDTH, if specified, is a number of columns
+occupied by a character of a font.  In that case, return only fonts
+the WIDTH times as wide as FACE on FRAME."
   (if (or (null width) (and (numberp width) (= width 1)))
       (list "ms-dos")
     (list "no-such-font")))
   (if (or (null width) (and (numberp width) (= width 1)))
       (list "ms-dos")
     (list "no-such-font")))
@@ -232,9 +253,9 @@ is not used)."
       (w16-set-clipboard-data text))
   (setq x-last-selected-text text))
 
       (w16-set-clipboard-data text))
   (setq x-last-selected-text text))
 
-;;; Return the value of the current selection.
-;;; Consult the selection.  Treat empty strings as if they were unset.
 (defun x-get-selection-value ()
 (defun x-get-selection-value ()
+  "Return the value of the current selection.
+Consult the selection.  Treat empty strings as if they were unset."
   (if x-select-enable-clipboard
       (let (text)
        ;; Don't die if x-get-selection signals an error.
   (if x-select-enable-clipboard
       (let (text)
        ;; Don't die if x-get-selection signals an error.
index 65122a0..f1d6c32 100644 (file)
@@ -1,3 +1,18 @@
+2014-04-16  Eli Zaretskii  <eliz@gnu.org>
+
+       * sedlisp.inp:
+       * sedlibmk.inp:
+       * sedleim.inp:
+       * sed3v2.inp:
+       * sed2v2.inp:
+       * sed1v2.inp: Update Sed scripts for Emacs 24.4.
+
+       * inttypes.h: Add PRIdMAX.
+
+       * INSTALL: Update for Emacs 24.4.
+
+       * sedadmin.inp: New file.
+
 2013-12-24  Paul Eggert  <eggert@cs.ucla.edu>
 
        * autogen/Makefile.in: Update copyright year.
 2013-12-24  Paul Eggert  <eggert@cs.ucla.edu>
 
        * autogen/Makefile.in: Update copyright year.
index 815da38..de950b8 100644 (file)
@@ -4,18 +4,19 @@ Copyright (C) 1992, 1994, 1996-1997, 2000-2014 Free Software Foundation,
 Inc.
 See the end of the file for license conditions.
 
 Inc.
 See the end of the file for license conditions.
 
-The DJGPP port of GNU Emacs builds and runs on plain DOS and also on
-all versions of MS-Windows from version 3.X on, including Windows XP,
-Vista, and Windows 7 (however, see below for issues with Windows Vista
-and 7).
+The DJGPP port of GNU Emacs builds and runs on all versions of
+MS-Windows from version 3.X on, including Windows XP, Vista, and
+Windows 7 (however, see below for issues with Windows Vista and 7).
+Building on plain MS-DOS is supported only if long file names are
+supported (e.g., with a specialized driver such as doslfn).
 
 To build and install the DJGPP port, you need to have the DJGPP ports
 
 To build and install the DJGPP port, you need to have the DJGPP ports
-of GCC (the GNU C compiler), GNU Make, rm, mv, and sed.  See the
+of GCC (the GNU C compiler), GNU Make, rm, mv, cp, and sed.  See the
 remarks in CONFIG.BAT for more information about locations and
 remarks in CONFIG.BAT for more information about locations and
-versions.  The Emacs FAQ (see info/efaq) includes pointers to Internet
-sites where you can find the necessary utilities; search for "MS-DOS".
-The configuration step (see below) will test for these utilities and
-will refuse to continue if any of them isn't found.
+versions.  The Emacs FAQ (see info/efaq.info) includes pointers to
+Internet sites where you can find the necessary utilities; search for
+"MS-DOS".  The configuration step (see below) will test for these
+utilities and will refuse to continue if any of them isn't found.
 
 Bootstrapping Emacs or recompiling Lisp files in the `lisp'
 subdirectory using the various targets in the lisp/Makefile file
 
 Bootstrapping Emacs or recompiling Lisp files in the `lisp'
 subdirectory using the various targets in the lisp/Makefile file
@@ -27,18 +28,14 @@ are distributed in byte-compiled form as well.  As for bootstrapping
 itself, you will only need that if you check-out development sources
 from the Emacs source repository.
 
 itself, you will only need that if you check-out development sources
 from the Emacs source repository.
 
-If you are building the DJGPP version of Emacs on a DOS-like system
-which supports long file names (e.g. Windows 9X or Windows XP), you
-need to make sure that long file names are handled consistently both
-when you unpack the distribution and compile it.  With DJGPP v2.0 or
-later, long file names support is by default, so you need to unpack
-Emacs distribution in a way that doesn't truncate the original long
-filenames to the DOS 8.3 namespace; the easiest way to do this is to
-use djtar program which comes with DJGPP, since it will behave
-consistently with the rest of DJGPP tools.  Alternatively, you can
-build Emacs with LFN=n, if some of your tools don't support long file
-names: just ensure that LFN is set to `n' during both unpacking and
-compiling.
+Building the DJGPP version of Emacs is currently supported only on
+systems which support long file names (e.g. Windows 9X or Windows XP).
+You need to unpack Emacs distribution in a way that doesn't truncate
+the original long filenames to the DOS 8.3 namespace; the easiest way
+to do this is to use djtar program which comes with DJGPP, since it
+will behave consistently with the rest of DJGPP tools.  Do _not_
+disable the DJGPP long-file-name support (a.k.a. "LFN") while building
+Emacs.
 
 (By the time you read this, you have already unpacked the Emacs
 distribution, but if the explanations above imply that you should have
 
 (By the time you read this, you have already unpacked the Emacs
 distribution, but if the explanations above imply that you should have
@@ -46,18 +43,6 @@ done it differently, it's safer to delete the directory tree created
 by the unpacking program and unpack Emacs again, than to risk running
 into strange problems during the build process.)
 
 by the unpacking program and unpack Emacs again, than to risk running
 into strange problems during the build process.)
 
-It is important to understand that the runtime support of long file
-names by the Emacs binary is NOT affected by the LFN setting during
-compilation; Emacs compiled with DJGPP v2.0 or later will always
-support long file names on Windows no matter what was the setting
-of LFN at compile time.  However, if you compiled with LFN disabled
-and want to enable LFN support after Emacs was already built, you need
-to make sure that the support files in the lisp, etc and info
-directories are called by their original long names as found in the
-distribution.  You can do this either by renaming the files manually,
-or by extracting them from the original distribution archive with
-djtar after you set LFN=y in the environment.
-
 To unpack Emacs with djtar, type this command:
 
     djtar -x emacs.tgz
 To unpack Emacs with djtar, type this command:
 
     djtar -x emacs.tgz
@@ -68,13 +53,6 @@ your system.)
 When unpacking Emacs is done, a directory called `emacs-XX.YY' will be
 created, where XX.YY is the Emacs version.
 
 When unpacking Emacs is done, a directory called `emacs-XX.YY' will be
 created, where XX.YY is the Emacs version.
 
-On plain DOS, unpacking can complain about several directories and
-files in the `nextstep' subdirectory of the `emacs-XX.YY' top-level
-directory.  This is because the names of these files overflow the
-67-character limit on the file-name length imposed by DOS filesystems.
-When prompted by `djtar' for a different name for these files, just
-press [Enter] to skip them: they are not needed for the DJGPP build.
-
 If you want to print international characters, install the intlfonts
 distribution.  For this, create a directory called `fonts' under the
 `emacs-XX.YY' top-level directory created by unpacking emacs.tgz,
 If you want to print international characters, install the intlfonts
 distribution.  For this, create a directory called `fonts' under the
 `emacs-XX.YY' top-level directory created by unpacking emacs.tgz,
index 9f59d4e..7469ea0 100644 (file)
@@ -32,6 +32,7 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 #define strtoumax strtoull
 #define strtoimax strtoll
 #define PRIuMAX   "llu"
 #define strtoumax strtoull
 #define strtoimax strtoll
 #define PRIuMAX   "llu"
+#define PRIdMAX   "lld"
 #endif /* __DJGPP__ < 2.04 */
 
 #endif
 #endif /* __DJGPP__ < 2.04 */
 
 #endif
index c7e770c..77c74fe 100644 (file)
@@ -48,12 +48,16 @@ s/\.h\.in/.h-in/
 /^LD_SWITCH_SYSTEM_TEMACS *=/s/@LD_SWITCH_SYSTEM_TEMACS@//
 /^LD_SWITCH_X_SITE_AUX *=/s/@LD_SWITCH_X_SITE_AUX@//
 /^LD_SWITCH_X_SITE_AUX_RPATH *=/s/@LD_SWITCH_X_SITE_AUX_RPATH@//
 /^LD_SWITCH_SYSTEM_TEMACS *=/s/@LD_SWITCH_SYSTEM_TEMACS@//
 /^LD_SWITCH_X_SITE_AUX *=/s/@LD_SWITCH_X_SITE_AUX@//
 /^LD_SWITCH_X_SITE_AUX_RPATH *=/s/@LD_SWITCH_X_SITE_AUX_RPATH@//
+/^LD_SWITCH_X_SITE_RPATH *=/s/@LD_SWITCH_X_SITE_RPATH@//
 /^LD_SWITCH_SYSTEM *=/s/@LD_SWITCH_SYSTEM@//
 /^LIBS_SYSTEM *=/s/@LIBS_SYSTEM@//
 /^LIB_GCC *=/s/@LIB_GCC@//
 /^LIB_STANDARD *=/s/@LIB_STANDARD@//
 /^LIB_MATH *=/s/@LIB_MATH@/-lm/
 /^LIB_PTHREAD *=/s/@LIB_PTHREAD@//
 /^LD_SWITCH_SYSTEM *=/s/@LD_SWITCH_SYSTEM@//
 /^LIBS_SYSTEM *=/s/@LIBS_SYSTEM@//
 /^LIB_GCC *=/s/@LIB_GCC@//
 /^LIB_STANDARD *=/s/@LIB_STANDARD@//
 /^LIB_MATH *=/s/@LIB_MATH@/-lm/
 /^LIB_PTHREAD *=/s/@LIB_PTHREAD@//
+/^LIB_ACL *=/s/@LIB_ACL@//
+/^LIB_EACCESS *=/s/@LIB_EACCESS@//
+/^LIB_FDATASYNC *=/s/@LIB_FDATASYNC@//
 s/ *@LIBTIFF@//
 s/ *@LIBJPEG@//
 s/ *@LIBPNG@//
 s/ *@LIBTIFF@//
 s/ *@LIBJPEG@//
 s/ *@LIBPNG@//
@@ -71,8 +75,10 @@ s/ *@LIBXPM@//
 /^DBUS_CFLAGS *=/s/@DBUS_CFLAGS@//
 /^DBUS_LIBS *=/s/@DBUS_LIBS@//
 /^DBUS_OBJ *=/s/@DBUS_OBJ@//
 /^DBUS_CFLAGS *=/s/@DBUS_CFLAGS@//
 /^DBUS_LIBS *=/s/@DBUS_LIBS@//
 /^DBUS_OBJ *=/s/@DBUS_OBJ@//
+/^NOTIFY_OBJ *=/s/@NOTIFY_OBJ@//
 /^SETTINGS_CFLAGS *=/s/@SETTINGS_CFLAGS@//
 /^SETTINGS_LIBS *=/s/@SETTINGS_LIBS@//
 /^SETTINGS_CFLAGS *=/s/@SETTINGS_CFLAGS@//
 /^SETTINGS_LIBS *=/s/@SETTINGS_LIBS@//
+/^GFILENOTIFY_LIBS *=/s/@GFILENOTIFY_LIBS@//
 /^GTK_OBJ *=/s/@GTK_OBJ@//
 /^LIBS_TERMCAP *=/s/@LIBS_TERMCAP@//
 /^TERMCAP_OBJ *=/s/@TERMCAP_OBJ@/termcap.o tparam.o/
 /^GTK_OBJ *=/s/@GTK_OBJ@//
 /^LIBS_TERMCAP *=/s/@LIBS_TERMCAP@//
 /^TERMCAP_OBJ *=/s/@TERMCAP_OBJ@/termcap.o tparam.o/
@@ -83,6 +89,7 @@ s/ *@LIBXPM@//
 /^OLDXMENU_TARGET *=/s/@OLDXMENU_TARGET@//
 /^OLDXMENU_DEPS *=/s/@OLDXMENU_DEPS@//
 /^XOBJ *=/s/@XOBJ@//
 /^OLDXMENU_TARGET *=/s/@OLDXMENU_TARGET@//
 /^OLDXMENU_DEPS *=/s/@OLDXMENU_DEPS@//
 /^XOBJ *=/s/@XOBJ@//
+/^XGSELOBJ *=/s/@XGSELOBJ@//
 /^TOOLKIT_LIBW *=/s/@TOOLKIT_LIBW@//
 /^LIBSOUND *=/s/@LIBSOUND@//
 /^LIBS_GNUSTEP *=/s/@LIBS_GNUSTEP@//
 /^TOOLKIT_LIBW *=/s/@TOOLKIT_LIBW@//
 /^LIBSOUND *=/s/@LIBSOUND@//
 /^LIBS_GNUSTEP *=/s/@LIBS_GNUSTEP@//
@@ -114,12 +121,19 @@ s/ *@LIBXPM@//
 /^XMENU_OBJ *=/s/@XMENU_OBJ@/xmenu.o/
 /^FONT_OBJ *=/s/@FONT_OBJ@//
 /^LIBGPM *=/s/@LIBGPM@//
 /^XMENU_OBJ *=/s/@XMENU_OBJ@/xmenu.o/
 /^FONT_OBJ *=/s/@FONT_OBJ@//
 /^LIBGPM *=/s/@LIBGPM@//
+/^LIBZ *=/s/@LIBZ@//
 /^EXEEXT *=/s/@EXEEXT@/.exe/
 /^EXEEXT *=/s/@EXEEXT@/.exe/
+/^MKDIR_P *=/s/@MKDIR_P@/gmkdir -p/
 /^OLDXMENU *=/s/@OLDXMENU@/nothing/
 /^LIBXMENU *=/s/@LIBXMENU@//
 /^LIBX_OTHER *=/s/@LIBX_OTHER@//
 /^OLDXMENU *=/s/@OLDXMENU@/nothing/
 /^LIBXMENU *=/s/@LIBXMENU@//
 /^LIBX_OTHER *=/s/@LIBX_OTHER@//
+/^XRANDR_LIBS *=/s/@XRANDR_LIBS@//
+/^XRANDR_CFLAGS *=/s/@XRANDR_CFLAGS@//
+/^XINERAMA_LIBS *=/s/@XINERAMA_LIBS@//
+/^XINERAMA_CFLAGS *=/s/@XINERAMA_CFLAGS@//
 /^GMALLOC_OBJ *=/s/@GMALLOC_OBJ@/gmalloc.o/
 /^VMLIMIT_OBJ *=/s/@VMLIMIT_OBJ@/vm-limit.o/
 /^GMALLOC_OBJ *=/s/@GMALLOC_OBJ@/gmalloc.o/
 /^VMLIMIT_OBJ *=/s/@VMLIMIT_OBJ@/vm-limit.o/
+/^FIRSTFILE_OBJ *=/s/@FIRSTFILE_OBJ@//
 /^RALLOC_OBJ *=/s/@RALLOC_OBJ@/ralloc.o/
 /^PRE_ALLOC_OBJ *=/s/@PRE_ALLOC_OBJ@/lastfile.o/
 /^POST_ALLOC_OBJ *=/s/@POST_ALLOC_OBJ@/$(vmlimitobj)/
 /^RALLOC_OBJ *=/s/@RALLOC_OBJ@/ralloc.o/
 /^PRE_ALLOC_OBJ *=/s/@PRE_ALLOC_OBJ@/lastfile.o/
 /^POST_ALLOC_OBJ *=/s/@POST_ALLOC_OBJ@/$(vmlimitobj)/
@@ -130,9 +144,15 @@ s/ *@LIBXPM@//
 /^W32_OBJ *=/s/@W32_OBJ@//
 /^W32_LIBS *=/s/@W32_LIBS@//
 /^version *=/s/@[^@\n]*@//
 /^W32_OBJ *=/s/@W32_OBJ@//
 /^W32_LIBS *=/s/@W32_LIBS@//
 /^version *=/s/@[^@\n]*@//
+/^EMACSRES *=/s/@EMACSRES@//
+/^EMACS_MANIFEST *=/s/@EMACS_MANIFEST@//
+/^W32_RES_LINK *=/s/@W32_RES_LINK@//
+/^CM_OBJ *=/s/@CM_OBJ@/cm.o/
 /^@SET_MAKE@$/s/@SET_MAKE@//
 /^@SET_MAKE@$/s/@SET_MAKE@//
+/^TEMACS_POST_LINK *=/s/@TEMACS_POST_LINK@/stubedit temacs.exe minstack=1024k/
+/^ADDSECTION *=/s/@ADDSECTION@//
 /^     [       ]*\$(libsrc)\/make-docfile.*>.*\/DOC/s!make-docfile!make-docfile -o $(etc)/DOC!
 /^     [       ]*\$(libsrc)\/make-docfile.*>.*\/DOC/s!make-docfile!make-docfile -o $(etc)/DOC!
-/^     [       ]*\$(libsrc)\/make-docfile.*>.*gl-tmp/s!make-docfile!make-docfile -o gl-tmp!
+/^     [       ]*\$(libsrc)\/make-docfile.*>.*gl.tmp/s!make-docfile!make-docfile -o gl.tmp!
 /^.\$(libsrc)\/make-doc/s!>.*$!!
 /^     [       ]*\$(libsrc)\/make-docfile /s!`[^`]*`!$(lisp); cd ../src!
 /^[\f   ]*$/d
 /^.\$(libsrc)\/make-doc/s!>.*$!!
 /^     [       ]*\$(libsrc)\/make-docfile /s!`[^`]*`!$(lisp); cd ../src!
 /^[\f   ]*$/d
@@ -142,6 +162,7 @@ s/ *@LIBXPM@//
 /^      *test "X\$(PAXCTL)" = X/d
 /^      *test "\$(CANNOT_DUMP)" = "yes"/d
 /^     if test "\$(CANNOT_DUMP)" =/,/^ else /d
 /^      *test "X\$(PAXCTL)" = X/d
 /^      *test "\$(CANNOT_DUMP)" = "yes"/d
 /^     if test "\$(CANNOT_DUMP)" =/,/^ else /d
+/^      *\$(SETFATTR) -n/d
 /^     -\{0,1\} *ln /s/bootstrap-emacs\$(EXEEXT).*$/bootstrap-emacs$(EXEEXT)/
 /^     fi/d
 /^      *LC_ALL=C \$(RUN_TEMACS)/i\
 /^     -\{0,1\} *ln /s/bootstrap-emacs\$(EXEEXT).*$/bootstrap-emacs$(EXEEXT)/
 /^     fi/d
 /^      *LC_ALL=C \$(RUN_TEMACS)/i\
@@ -156,15 +177,17 @@ s/ @true *$/ @rem/
 s/^    [^      ]*move-if-change /      update /
 /^     echo[   ][      ]*timestamp/s/echo /djecho /
 /^     .*djecho timestamp/a\
 s/^    [^      ]*move-if-change /      update /
 /^     echo[   ][      ]*timestamp/s/echo /djecho /
 /^     .*djecho timestamp/a\
-       @rm -f gl-tmp
-/^     cd \$(leimdir) && \$(MAKE)/i\
+       @rm -f gl.tmp
+/^     cd ..\/leim && \$(MAKE)/i\
        $(RUN_TEMACS) -batch -l loadup dump\
        stubify emacs\
        stubedit emacs.exe minstack=2048k\
        rm -f b-emacs$(EXEEXT)\
        cp emacs$(EXEEXT) b-emacs$(EXEEXT)
        $(RUN_TEMACS) -batch -l loadup dump\
        stubify emacs\
        stubedit emacs.exe minstack=2048k\
        rm -f b-emacs$(EXEEXT)\
        cp emacs$(EXEEXT) b-emacs$(EXEEXT)
-/^     cd \$(leimdir) && \$(MAKE)/c\
-       $(MAKE) $(MFLAGS) -C $(leimdir) leim-list.el EMACS=$(bootstrap_exe)
+/^     cd ..\/leim && \$(MAKE)/c\
+       $(MAKE) $(MFLAGS) -C ../leim leim-list.el EMACS=$(bootstrap_exe)
+/^     cd ..\/admin\/unidata && \$(MAKE)/c\
+       $(MAKE) $(MFLAGS) -C ../admin/unidata all EMACS="../$(bootstrap_exe)"
 /^     cd \$(lib) && \$(MAKE)/c\
        $(MAKE) $(MFLAGS) -C $(lib) libgnu.a
 /^RUN_TEMACS *=/s|`/bin/pwd`|.|
 /^     cd \$(lib) && \$(MAKE)/c\
        $(MAKE) $(MFLAGS) -C $(lib) libgnu.a
 /^RUN_TEMACS *=/s|`/bin/pwd`|.|
@@ -199,6 +222,10 @@ s/echo.*buildobj.lst/dj&/
 /^     @\{0,1\}cd ..\/lisp;.*[^\]$/s|$|\; cd ../src|
 /^      *THEFILE=/s|$|\; cd ../src|
 /^     echo.* buildobj.h/s|echo |djecho |
 /^     @\{0,1\}cd ..\/lisp;.*[^\]$/s|$|\; cd ../src|
 /^      *THEFILE=/s|$|\; cd ../src|
 /^     echo.* buildobj.h/s|echo |djecho |
+/^buildobj\.h:/,/^     mv /{
+  /^    *for /,/^       *done /c\
+       djecho "$(ALLOBJS)" | sed -e 's/^ */"/' -e 's/ *$$/"/' -e 's/  */", "/g' >>$@.tmp
+}
 # Make the GCC command line fit one screen line
 /^[    ][      ]*\$(GNUSTEP_CFLAGS)/d
 /^[    ][      ]*\$(GCONF_CFLAGS)/d
 # Make the GCC command line fit one screen line
 /^[    ][      ]*\$(GNUSTEP_CFLAGS)/d
 /^[    ][      ]*\$(GCONF_CFLAGS)/d
index 421ccd4..806e2b4 100644 (file)
@@ -132,6 +132,7 @@ s/^#undef HAVE_STRTOULL *$/#define HAVE_STRTOULL 1/
 #else\
 #undef HAVE_SNPRINTF\
 #endif
 #else\
 #undef HAVE_SNPRINTF\
 #endif
+s/^#undef PENDING_OUTPUT_N_BYTES *$/#define PENDING_OUTPUT_N_BYTES fp->_ptr - fp->_base/
 
 # Comment out any remaining undef directives, because some of them
 # might be defined in sys/config.h we include at the top of config.h.
 
 # Comment out any remaining undef directives, because some of them
 # might be defined in sys/config.h we include at the top of config.h.
index dcc09dd..09f2f08 100644 (file)
@@ -42,9 +42,17 @@ s/-DVERSION[^ ]* //
 /^C_SWITCH_MACHINE *=/s/@C_SWITCH_MACHINE@//
 /^WARN_CFLAGS *=/s/@WARN_CFLAGS@//
 /^WERROR_CFLAGS *=/s/@WERROR_CFLAGS@//
 /^C_SWITCH_MACHINE *=/s/@C_SWITCH_MACHINE@//
 /^WARN_CFLAGS *=/s/@WARN_CFLAGS@//
 /^WERROR_CFLAGS *=/s/@WERROR_CFLAGS@//
+/^UPDATE_MANIFEST *=/s/@UPDATE_MANIFEST@//
 /^PROFILING_CFLAGS *=/s/@PROFILING_CFLAGS@//
 /^ALLOCA *=/s!@ALLOCA@!!
 /^PROFILING_CFLAGS *=/s/@PROFILING_CFLAGS@//
 /^ALLOCA *=/s!@ALLOCA@!!
-/^EXEEXT *=/s!@EXEEXT@!!
+/^EXEEXT *=/s!@EXEEXT@!.exe!
+/^CLIENTW *=/s/@CLIENTW@//
+/^LIB_FDATASYNC *=/s/@LIB_FDATASYNC@//
+/^LIB_WSOCK32 *=/s/@LIB_WSOCK32@//
+/^LIBS_ECLIENT *=/s/@LIBS_ECLIENT@//
+/^NTLIB *=/s/@NTLIB@//
+/^CLIENTRES *=/s/@CLIENTRES@//
+/^WINDRES *=/s/@WINDRES@//
 /^GETOPT_H *=/s!@GETOPT_H@!getopt.h!
 /^GETOPTOBJS *=/s!@GETOPTOBJS@!getopt.o getopt1.o!
 /^INSTALLABLES/s/emacsclient[^ ]* *//
 /^GETOPT_H *=/s!@GETOPT_H@!getopt.h!
 /^GETOPTOBJS *=/s!@GETOPTOBJS@!getopt.o getopt1.o!
 /^INSTALLABLES/s/emacsclient[^ ]* *//
index 32f39dd..a15f423 100644 (file)
@@ -42,5 +42,5 @@ export MAKEINFO := $(MAKEINFO) $(MAKEINFO_OPTS)
   s/^  for file in $(INFO_TARGETS)\; do rm -f.*$/      rm -f $(INFO_TARGETS)/
 }
 
   s/^  for file in $(INFO_TARGETS)\; do rm -f.*$/      rm -f $(INFO_TARGETS)/
 }
 
-/^mkinfodir *=/s| @.*$|@command.com /c if not exist ..\\..\\info\\emacs mkdir ..\\..\\info|
+/^mkinfodir *=/s| @.*$|@command.com /c if not exist ..\\..\\info\\emacs$(INFO_EXT) mkdir ..\\..\\info|
 
 
index 07aa3c6..fab8094 100644 (file)
 SHELL=/xyzzy/command\
 MAKESHELL=/xyzzy/command
 
 SHELL=/xyzzy/command\
 MAKESHELL=/xyzzy/command
 
-/^version=/d
-/^prefix=/d
-/^datadir=/s|@datadir@|../..|
 /^srcdir=/s|srcdir=@srcdir@|srcdir := $(subst \\,/,$(shell cd))|
 
 /^srcdir=/s|srcdir=@srcdir@|srcdir := $(subst \\,/,$(shell cd))|
 
-/^INSTALLDIR=/c\
-INSTALLDIR=.
+# Need a relative directory name for the md command, otherwise it
+# chokes, perhaps due to multiple dots in emacs-XX.YY.NN name.
+/^leimdir *=/a\
+rel_leimdir = ..\\lisp\\leim
 
 
-/touch stamp-subdir/s|touch|djecho "stamp-subdir" >|
 s|\([  ]\)echo|\1djecho|g
 /^     @true *$/d
 
 /RUN_EMACS *=/,/^$/c\
 s|\([  ]\)echo|\1djecho|g
 /^     @true *$/d
 
 /RUN_EMACS *=/,/^$/c\
-export EMACSLOADPATH=${buildlisppath}\
-RUN_EMACS = ${EMACS} -batch --no-site-file
+export EMACSLOADPATH=\
+RUN_EMACS = ${EMACS} -batch --no-site-file --no-site-lisp
 
 
-/^MKDIR_P *=/s,@MKDIR_P@,command.com /c md,
-
-/^     cd ../c\
-       ${MAKE} -C ../src ${MFLAGS} emacs
-
-/if \[ -f $@ \]\; then true/d
-/fi$/s/; fi$//
-
-/^leim-list.el:/,/^$/ {
-       /^      if/d
-       /^      else/,/^        fi/d
-       s|       *|     |
-       /^      --eval/,/; \\$/s|\; \\||
-}
-
-/^setwins=/,/^$/d
-/^\.PHONY: compile-targets/d
-/^compile-targets:/d
-/^compile-main:/,/^$/c\
-compile-main: ${TIT_MISC}\
-       $(MAKE) $(MFLAGS) $(foreach f,$(wildcard ja-dic/*.el),$(basename $f).elc)\
-       $(MAKE) $(MFLAGS) $(foreach f,$(wildcard quail/*.el),$(basename $f).elc)\
-
-
-/^install:/,/^$/c\
-install: all\
-
-/^bootstrap-clean:/,/^$/c\
-bootstrap-clean: clean\
-       rm -f ja-dic/*.elc quail/*.elc\
-
-
-/^     if test -f/d
-/^distclean:/,/^$/ {
-       s|\(rm -f Makefile\)|\1 stamp-subdir|
-}
+/^MKDIR_P *=/s,@MKDIR_P@,-command.com /c md,
 
 
+/MKDIR_P.* \${leimdir}\/.*$/s|\${leimdir}/|$(rel_leimdir)\\|
+/MKDIR_P.* \$(leimdir)\/.*$/s|\$(leimdir)/|$(rel_leimdir)\\|
index 40737fa..badb30b 100644 (file)
 #
 # Checklist to add a new gnulib module:
 #
 #
 # Checklist to add a new gnulib module:
 #
-#  . If the module includes source files that need to be compiled, add
-#    the corresponding .o file names to the list that gets assigned to
-#    the gl_LIBOBJS variable.
+#  . If the module includes source files that need to be compiled, and
+#    does not appear in the am_libgnu_a_OBJECTS list, add the
+#    corresponding .o file names to the list that gets assigned to the
+#    gl_LIBOBJS variable.
+#
+#  . If a module appears in am_libgnu_a_OBJECTS that is not required
+#    for the MSDOS build, edit it out by adding an appropriate command
+#    to the set that edits the am_libgnu_a_OBJECTS block.
 #
 #  . If the module defines functions that need to replace DJGPP
 #
 #  . If the module defines functions that need to replace DJGPP
-#    functions, edit the appropriate REPLACE_foo variables to 1;
-#    otherwise edit them to zero:
+#    functions, edit the appropriate REPLACE_foo variables to 1:
+#
+#     /^REPLACE_CALLOC *=/s/@REPLACE_CALLOC@/1/
 #
 #
-#     /^REPLACE_CALLOC *=/s/@REPLACE_CALLOC@/0/
+#    Note that this file already has a command to edit all the
+#    REPLACE_foo variables to zero, so if some gnulib replacement
+#    function is ever needed, the corresponding editing command such
+#    as above should be placed before that catchall rule (search for
+#    "REPLACE_" below).
 #
 #  . If the module is a header or adds headers, edit the corresponding
 #    variable to either an empty value or to the name of the header.
 #
 #  . If the module is a header or adds headers, edit the corresponding
 #    variable to either an empty value or to the name of the header.
 #       s/^@GL_GENERATE_STDBOOL_H_TRUE@/\#/
 #       s/^@GL_GENERATE_STDBOOL_H_FALSE@//
 #
 #       s/^@GL_GENERATE_STDBOOL_H_TRUE@/\#/
 #       s/^@GL_GENERATE_STDBOOL_H_FALSE@//
 #
-#  . Also edit the NEXT_foo and NEXT_AS_FIRST_DIRECTIVE_foo_H variable
-#    as appropriately: to an empty value if the gnulib header is not
-#    used, and to the corresponding DJGPP header name otherwise.
-#    Examples:
+#  . Also edit the NEXT_foo_H and NEXT_AS_FIRST_DIRECTIVE_foo_H
+#    variables as appropriately: to an empty value if the gnulib
+#    header is not used, and to the corresponding DJGPP header name
+#    otherwise.  Examples:
 #
 #     /^NEXT_STDDEF_H *=/s/@[^@\n]*@//
 #     /^NEXT_STDINT_H *=/s/@[^@\n]*@/<stdint.h>/
 #
 #     /^NEXT_STDDEF_H *=/s/@[^@\n]*@//
 #     /^NEXT_STDINT_H *=/s/@[^@\n]*@/<stdint.h>/
@@ -57,7 +67,7 @@
 #
 #  . Note that some gnulib headers cannot be left unused: those for
 #    which there's no corresponding foo_H variable in
 #
 #  . Note that some gnulib headers cannot be left unused: those for
 #    which there's no corresponding foo_H variable in
-#    autogen/Makefile.in (example: stdio.h).  For these the "not
+#    msdos/autogen/Makefile.in (example: stdio.h).  For these the "not
 #    needed" path is not applicable.
 #
 #  . If the header is needed, edit all the variables it uses as
 #    needed" path is not applicable.
 #
 #  . If the header is needed, edit all the variables it uses as
 #    variable should be edited to zero and the corresponding
 #    GNULIB_foo variable should be edited to 1 if the gnulib
 #    replacement can work for DJGPP (a rare phenomenon), zero
 #    variable should be edited to zero and the corresponding
 #    GNULIB_foo variable should be edited to 1 if the gnulib
 #    replacement can work for DJGPP (a rare phenomenon), zero
-#    otherwise.
+#    otherwise.  Note that by default all HAVE_foo and GNULIB_foo
+#    variables that don't have a specific editing rule will be edited
+#    to zero.
 #
 #  . Some gnulib header files have more complex recipes in
 #
 #  . Some gnulib header files have more complex recipes in
-#    autogen/Makefile.in than others.  The tell-tale sign of such a
-#    recipe is that the input redirection from the .in.h file is not
-#    present at the end of the command, like this:
+#    msdos/autogen/Makefile.in than others.  The tell-tale sign of
+#    such a recipe is that the input redirection from the .in.h file
+#    is not present at the end of the command, like this:
 #
 #            -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \
 #      } > $@-t && \
 #
 #            -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \
 #      } > $@-t && \
 #       s/'\; \\ *$/' >> $@-t/
 #     }
 #
 #       s/'\; \\ *$/' >> $@-t/
 #     }
 #
+#    There's also a 3rd variety of script, which ends like this:
+#
+#             -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \
+#             < $(srcdir)/string.in.h; \
+#       } > $@-t && \
+#       mv $@-t $@
+#
+#    For these, you will need Sed commands like those used for
+#    string.h, see below.
+#
 #  . If the recipe for generating a header file uses 'cat', replace it with
 #
 #      sed -e ''
 #  . If the recipe for generating a header file uses 'cat', replace it with
 #
 #      sed -e ''
 #     this).
 #
 # The following Awk script is useful for editing portions of
 #     this).
 #
 # The following Awk script is useful for editing portions of
-# autogen/Makefile.in into Sed commands that define the corresponding
-# variables to zero (which is what is required in the absolute
-# majority of cases):
+# msdos/autogen/Makefile.in into Sed commands that define the
+# corresponding variables to zero (which is what is required in the
+# absolute majority of cases):
 #
 #   { printf "/^%s *=/s/%s/0/\n",$1,$3}
 #
 #
 #   { printf "/^%s *=/s/%s/0/\n",$1,$3}
 #
 s/@PACKAGE@/emacs/
 /^am__cd *=/c\
 am__cd = cd
 s/@PACKAGE@/emacs/
 /^am__cd *=/c\
 am__cd = cd
+/^@BUILDING_FOR_WINDOWSNT_TRUE@/s/@[^@\n]*@/#/
+/^@BUILDING_FOR_WINDOWSNT_FALSE@/s/@[^@\n]*@//
 /^ALLOCA *=/s/@[^@\n]*@//
 /^ALSA_CFLAGS *=/s/@[^@\n]*@//
 /^ALSA_LIBS *=/s/@[^@\n]*@//
 /^ALLOCA *=/s/@[^@\n]*@//
 /^ALSA_CFLAGS *=/s/@[^@\n]*@//
 /^ALSA_LIBS *=/s/@[^@\n]*@//
@@ -133,6 +157,7 @@ am__cd = cd
 /^C_SWITCH_SYSTEM *=/s/@C_SWITCH_SYSTEM@//
 /^GNUSTEP_CFLAGS *=/s/@GNUSTEP_CFLAGS@//
 /^C_SWITCH_X_SITE *=/s/@C_SWITCH_X_SITE@//
 /^C_SWITCH_SYSTEM *=/s/@C_SWITCH_SYSTEM@//
 /^GNUSTEP_CFLAGS *=/s/@GNUSTEP_CFLAGS@//
 /^C_SWITCH_X_SITE *=/s/@C_SWITCH_X_SITE@//
+/^PROFILING_CFLAGS *=/s/@PROFILING_CFLAGS@//
 /^GNULIB_WARN_CFLAGS *=/s/@GNULIB_WARN_CFLAGS@//
 /^WARN_CFLAGS *=/s/@WARN_CFLAGS@//
 /^WERROR_CFLAGS *=/s/@WERROR_CFLAGS@//
 /^GNULIB_WARN_CFLAGS *=/s/@GNULIB_WARN_CFLAGS@//
 /^WARN_CFLAGS *=/s/@WARN_CFLAGS@//
 /^WERROR_CFLAGS *=/s/@WERROR_CFLAGS@//
@@ -152,303 +177,86 @@ am__cd = cd
 /^BITSIZEOF_WINT_T *=/s/@BITSIZEOF_WINT_T@/32/
 /^APPLE_UNIVERSAL_BUILD *=/s/@APPLE_UNIVERSAL_BUILD@/0/
 #
 /^BITSIZEOF_WINT_T *=/s/@BITSIZEOF_WINT_T@/32/
 /^APPLE_UNIVERSAL_BUILD *=/s/@APPLE_UNIVERSAL_BUILD@/0/
 #
-# Some GNULIB_* are replaced with zero even though DJGPP does not have
+# Most GNULIB_* are replaced with zero even though DJGPP does not have
 # these features.  That's because the gnulib replacements cannot
 # possibly work for DJGPP, so we prefer to fail the link than have a
 # these features.  That's because the gnulib replacements cannot
 # possibly work for DJGPP, so we prefer to fail the link than have a
-# subtly botched executable.
+# subtly botched executable.  Those replacements that _are_ needed
+# should be before the last catch-all rule.
 /^GNULIB_ATOLL *=/s/@GNULIB_ATOLL@/1/
 /^GNULIB_ATOLL *=/s/@GNULIB_ATOLL@/1/
-/^GNULIB_CALLOC_POSIX *=/s/@GNULIB_CALLOC_POSIX@/0/
-/^GNULIB_CANONICALIZE_FILE_NAME *=/s/@GNULIB_CANONICALIZE_FILE_NAME@/0/
-/^GNULIB_CHDIR *=/s/@GNULIB_CHDIR@/0/
-/^GNULIB_CHOWN *=/s/@GNULIB_CHOWN@/0/
-/^GNULIB_CLOSE *=/s/@GNULIB_CLOSE@/0/
-/^GNULIB_DPRINTF *=/s/@GNULIB_DPRINTF@/0/
-/^GNULIB_DUP *=/s/@GNULIB_DUP@/0/
-/^GNULIB_DUP2 *=/s/@GNULIB_DUP2@/0/
 /^GNULIB_DUP3 *=/s/@GNULIB_DUP3@/1/
 /^GNULIB_ENVIRON *=/s/@GNULIB_ENVIRON@/1/
 /^GNULIB_DUP3 *=/s/@GNULIB_DUP3@/1/
 /^GNULIB_ENVIRON *=/s/@GNULIB_ENVIRON@/1/
-/^GNULIB_EUIDACCESS *=/s/@GNULIB_EUIDACCESS@/0/
-/^GNULIB_FACCESSAT *=/s/@GNULIB_FACCESSAT@/0/
-/^GNULIB_FCHDIR *=/s/@GNULIB_FCHDIR@/0/
-/^GNULIB_FCHOWNAT *=/s/@GNULIB_FCHOWNAT@/0/
-/^GNULIB_FCHMODAT *=/s/@GNULIB_FCHMODAT@/0/
-/^GNULIB_FCLOSE *=/s/@GNULIB_FCLOSE@/0/
-/^GNULIB_FDATASYNC *=/s/@GNULIB_FDATASYNC@/0/
-/^GNULIB_FDOPEN *=/s/@GNULIB_FDOPEN@/0/
-/^GNULIB_FFLUSH *=/s/@GNULIB_FFLUSH@/0/
-/^GNULIB_FGETC *=/s/@GNULIB_FGETC@/0/
-/^GNULIB_FGETS *=/s/@GNULIB_FGETS@/0/
-/^GNULIB_FOPEN *=/s/@GNULIB_FOPEN@/0/
-/^GNULIB_FPRINTF *=/s/@GNULIB_FPRINTF@/0/
-/^GNULIB_FPRINTF_POSIX *=/s/@GNULIB_FPRINTF_POSIX@/0/
-/^GNULIB_FPURGE *=/s/@GNULIB_FPURGE@/0/
-/^GNULIB_FPUTC *=/s/@GNULIB_FPUTC@/0/
-/^GNULIB_FPUTS *=/s/@GNULIB_FPUTS@/0/
-/^GNULIB_FREAD *=/s/@GNULIB_FREAD@/0/
-/^GNULIB_FREOPEN *=/s/@GNULIB_FREOPEN@/0/
-/^GNULIB_FSCANF *=/s/@GNULIB_FSCANF@/0/
-/^GNULIB_FSEEK *=/s/@GNULIB_FSEEK@/0/
-/^GNULIB_FSEEKO *=/s/@GNULIB_FSEEKO@/0/
-/^GNULIB_FSTAT *=/s/@GNULIB_FSTAT@/0/
-/^GNULIB_FSTATAT *=/s/@GNULIB_FSTATAT@/0/
-/^GNULIB_FSYNC *=/s/@GNULIB_FSYNC@/0/
-/^GNULIB_FTELL *=/s/@GNULIB_FTELL@/0/
-/^GNULIB_FTELLO *=/s/@GNULIB_FTELLO@/0/
-/^GNULIB_FTRUNCATE *=/s/@GNULIB_FTRUNCATE@/0/
-/^GNULIB_FUTIMENS *=/s/@GNULIB_FUTIMENS@/0/
-/^GNULIB_FWRITE *=/s/@GNULIB_FWRITE@/0/
-/^GNULIB_GETC *=/s/@GNULIB_GETC@/0/
-/^GNULIB_GETCHAR *=/s/@GNULIB_GETCHAR@/0/
-/^GNULIB_GETCWD *=/s/@GNULIB_GETCWD@/0/
-/^GNULIB_GETDELIM *=/s/@GNULIB_GETDELIM@/0/
-/^GNULIB_GETDOMAINNAME *=/s/@GNULIB_GETDOMAINNAME@/0/
-/^GNULIB_GETDTABLESIZE *=/s/@GNULIB_GETDTABLESIZE@/0/
-/^GNULIB_GETGROUPS *=/s/@GNULIB_GETGROUPS@/0/
-/^GNULIB_GETHOSTNAME *=/s/@GNULIB_GETHOSTNAME@/0/
-/^GNULIB_GETLINE *=/s/@GNULIB_GETLINE@/0/
+/^GNULIB_FDATASYNC *=/s/@GNULIB_FDATASYNC@/1/
 /^GNULIB_GETLOADAVG *=/s/@GNULIB_GETLOADAVG@/1/
 /^GNULIB_GETLOADAVG *=/s/@GNULIB_GETLOADAVG@/1/
-/^GNULIB_GETLOGIN *=/s/@GNULIB_GETLOGIN@/0/
-/^GNULIB_GETLOGIN_R *=/s/@GNULIB_GETLOGIN_R@/0/
-/^GNULIB_GETPAGESIZE *=/s/@GNULIB_GETPAGESIZE@/0/
 /^GNULIB_GL_UNISTD_H_GETOPT *=/s/@GNULIB_GL_UNISTD_H_GETOPT@/1/
 /^GNULIB_GL_UNISTD_H_GETOPT *=/s/@GNULIB_GL_UNISTD_H_GETOPT@/1/
-/^GNULIB_GETSUBOPT *=/s/@GNULIB_GETSUBOPT@/0/
-/^GNULIB_GETTIMEOFDAY *=/s/@GNULIB_GETTIMEOFDAY@/0/
-/^GNULIB_GETUSERSHELL *=/s/@GNULIB_GETUSERSHELL@/0/
-/^GNULIB_GRANTPT *=/s/@GNULIB_GRANTPT@/0/
-/^GNULIB_GROUP_MEMBER *=/s/@GNULIB_GROUP_MEMBER@/0/
-/^GNULIB_ISATTY *=/s/@GNULIB_ISATTY@/0/
-/^GNULIB_LCHMOD *=/s/@GNULIB_LCHMOD@/0/
-/^GNULIB_LCHOWN *=/s/@GNULIB_LCHOWN@/0/
-/^GNULIB_LINK *=/s/@GNULIB_LINK@/0/
-/^GNULIB_LINKAT *=/s/@GNULIB_LINKAT@/0/
-/^GNULIB_LSEEK *=/s/@GNULIB_LSEEK@/0/
-/^GNULIB_LSTAT *=/s/@GNULIB_LSTAT@/0/
-/^GNULIB_MALLOC_POSIX *=/s/@GNULIB_MALLOC_POSIX@/0/
-/^GNULIB_MBTOWC *=/s/@GNULIB_MBTOWC@/0/
-/^GNULIB_MKDIRAT *=/s/@GNULIB_MKDIRAT@/0/
-/^GNULIB_MKDTEMP *=/s/@GNULIB_MKDTEMP@/0/
-/^GNULIB_MKFIFO *=/s/@GNULIB_MKFIFO@/0/
-/^GNULIB_MKFIFOAT *=/s/@GNULIB_MKFIFOAT@/0/
-/^GNULIB_MKNOD *=/s/@GNULIB_MKNOD@/0/
-/^GNULIB_MKNODAT *=/s/@GNULIB_MKNODAT@/0/
-/^GNULIB_MKOSTEMP *=/s/@GNULIB_MKOSTEMP@/0/
-/^GNULIB_MKOSTEMPS *=/s/@GNULIB_MKOSTEMPS@/0/
-/^GNULIB_MKSTEMP *=/s/@GNULIB_MKSTEMP@/0/
-/^GNULIB_MKSTEMPS *=/s/@GNULIB_MKSTEMPS@/0/
-/^GNULIB_MKTIME *=/s/@GNULIB_MKTIME@/0/
-/^GNULIB_NANOSLEEP *=/s/@GNULIB_NANOSLEEP@/0/
-/^GNULIB_OBSTACK_PRINTF *=/s/@GNULIB_OBSTACK_PRINTF@/0/
-/^GNULIB_OBSTACK_PRINTF_POSIX *=/s/@GNULIB_OBSTACK_PRINTF_POSIX@/0/
-/^GNULIB_PCLOSE *=/s/@GNULIB_PCLOSE@/0/
-/^GNULIB_PERROR *=/s/@GNULIB_PERROR@/0/
-/^GNULIB_PIPE *=/s/@GNULIB_PIPE@/0/
-/^GNULIB_PIPE2 *=/s/@GNULIB_PIPE2@/0/
-/^GNULIB_POPEN *=/s/@GNULIB_POPEN@/0/
-/^GNULIB_POSIX_OPENPT *=/s/@GNULIB_POSIX_OPENPT@/0/
-/^GNULIB_PREAD *=/s/@GNULIB_PREAD@/0/
-/^GNULIB_PRINTF *=/s/@GNULIB_PRINTF@/0/
-/^GNULIB_PRINTF_POSIX *=/s/@GNULIB_PRINTF_POSIX@/0/
-/^GNULIB_PSELECT *=/s/@GNULIB_PSELECT@/0/
-/^GNULIB_PTHREAD_SIGMASK *=/s/@GNULIB_PTHREAD_SIGMASK@/0/
-/^GNULIB_PTSNAME *=/s/@GNULIB_PTSNAME@/0/
-/^GNULIB_PTSNAME_R *=/s/@GNULIB_PTSNAME_R@/0/
-/^GNULIB_PUTC *=/s/@GNULIB_PUTC@/0/
-/^GNULIB_PUTCHAR *=/s/@GNULIB_PUTCHAR@/0/
-/^GNULIB_PUTENV *=/s/@GNULIB_PUTENV@/0/
-/^GNULIB_PUTS *=/s/@GNULIB_PUTS@/0/
-/^GNULIB_PWRITE *=/s/@GNULIB_PWRITE@/0/
-/^GNULIB_RAISE *=/s/@GNULIB_RAISE@/0/
-/^GNULIB_RANDOM *=/s/@GNULIB_RANDOM@/0/
-/^GNULIB_RANDOM_R *=/s/@GNULIB_RANDOM_R@/0/
-/^GNULIB_READ *=/s/@GNULIB_READ@/0/
-/^GNULIB_READLINK *=/s/@GNULIB_READLINK@/0/
-/^GNULIB_READLINKAT *=/s/@GNULIB_READLINKAT@/0/
-/^GNULIB_REALLOC_POSIX *=/s/@GNULIB_REALLOC_POSIX@/0/
-/^GNULIB_REALPATH *=/s/@GNULIB_REALPATH@/0/
-/^GNULIB_REMOVE *=/s/@GNULIB_REMOVE@/0/
-/^GNULIB_RENAME *=/s/@GNULIB_RENAME@/0/
-/^GNULIB_RENAMEAT *=/s/@GNULIB_RENAMEAT@/0/
-/^GNULIB_RMDIR *=/s/@GNULIB_RMDIR@/0/
-/^GNULIB_RPMATCH *=/s/@GNULIB_RPMATCH@/0/
-/^GNULIB_SCANF *=/s/@GNULIB_SCANF@/0/
-/^GNULIB_SECURE_GETENV *=/s/@GNULIB_SECURE_GETENV@/0/
-/^GNULIB_SELECT *=/s/@GNULIB_SELECT@/0/
-/^GNULIB_SETENV *=/s/@GNULIB_SETENV@/0/
-/^GNULIB_SETHOSTNAME *=/s/@GNULIB_SETHOSTNAME@/0/
-/^GNULIB_SIGACTION *=/s/@GNULIB_SIGACTION@/0/
-/^GNULIB_SIGNAL_H_SIGPIPE *=/s/@GNULIB_SIGNAL_H_SIGPIPE@/0/
-/^GNULIB_SIGPROCMASK *=/s/@GNULIB_SIGPROCMASK@/0/
-/^GNULIB_SLEEP *=/s/@GNULIB_SLEEP@/0/
-/^GNULIB_SNPRINTF *=/s/@GNULIB_SNPRINTF@/0/
-/^GNULIB_SPRINTF_POSIX *=/s/@GNULIB_SPRINTF_POSIX@/0/
-/^GNULIB_STAT *=/s/@GNULIB_STAT@/0/
-/^GNULIB_STDIO_H_NONBLOCKING *=/s/@GNULIB_STDIO_H_NONBLOCKING@/0/
-/^GNULIB_STDIO_H_SIGPIPE *=/s/@GNULIB_STDIO_H_SIGPIPE@/0/
-/^GNULIB_STRPTIME *=/s/@GNULIB_STRPTIME@/0/
-/^GNULIB_STRTOD *=/s/@GNULIB_STRTOD@/0/
-/^GNULIB_STRTOLL *=/s/@GNULIB_STRTOLL@/0/
-/^GNULIB_STRTOULL *=/s/@GNULIB_STRTOULL@/0/
-/^GNULIB_SYMLINK *=/s/@GNULIB_SYMLINK@/0/
-/^GNULIB_SYMLINKAT *=/s/@GNULIB_SYMLINKAT@/0/
-/^GNULIB_SYSTEM_POSIX *=/s/@GNULIB_SYSTEM_POSIX@/0/
-/^GNULIB_TIMEGM *=/s/@GNULIB_TIMEGM@/0/
+/^GNULIB_MEMRCHR *=/s/@GNULIB_MEMRCHR@/1/
+/^GNULIB_MKOSTEMP *=/s/@GNULIB_MKOSTEMP@/1/
 /^GNULIB_TIME_R *=/s/@GNULIB_TIME_R@/1/
 /^GNULIB_TIME_R *=/s/@GNULIB_TIME_R@/1/
-/^GNULIB_TMPFILE *=/s/@GNULIB_TMPFILE@/0/
-/^GNULIB_TTYNAME_R *=/s/@GNULIB_TTYNAME_R@/0/
-/^GNULIB_UNISTD_H_NONBLOCKING *=/s/@GNULIB_UNISTD_H_NONBLOCKING@/0/
-/^GNULIB_UNISTD_H_SIGPIPE *=/s/@GNULIB_UNISTD_H_SIGPIPE@/0/
-/^GNULIB_UNLINK *=/s/@GNULIB_UNLINK@/0/
-/^GNULIB_UNLINKAT *=/s/@GNULIB_UNLINKAT@/0/
-/^GNULIB_UNLOCKPT *=/s/@GNULIB_UNLOCKPT@/0/
 /^GNULIB_UNSETENV *=/s/@GNULIB_UNSETENV@/1/
 /^GNULIB_UNSETENV *=/s/@GNULIB_UNSETENV@/1/
-/^GNULIB_USLEEP *=/s/@GNULIB_USLEEP@/0/
-/^GNULIB_UTIMENSAT *=/s/@GNULIB_UTIMENSAT@/0/
-/^GNULIB_VASPRINTF *=/s/@GNULIB_VASPRINTF@/0/
-/^GNULIB_VDPRINTF *=/s/@GNULIB_VDPRINTF@/0/
-/^GNULIB_VFPRINTF *=/s/@GNULIB_VFPRINTF@/0/
-/^GNULIB_VFPRINTF_POSIX *=/s/@GNULIB_VFPRINTF_POSIX@/0/
-/^GNULIB_VFSCANF *=/s/@GNULIB_VFSCANF@/0/
-/^GNULIB_VPRINTF *=/s/@GNULIB_VPRINTF@/0/
-/^GNULIB_VPRINTF_POSIX *=/s/@GNULIB_VPRINTF_POSIX@/0/
-/^GNULIB_VSCANF *=/s/@GNULIB_VSCANF@/0/
-/^GNULIB_VSNPRINTF *=/s/@GNULIB_VSNPRINTF@/0/
-/^GNULIB_VSPRINTF_POSIX *=/s/@GNULIB_VSPRINTF_POSIX@/0/
-/^GNULIB_WCTOMB *=/s/@GNULIB_WCTOMB@/0/
-/^GNULIB_WRITE *=/s/@GNULIB_WRITE@/0/
-/^GNULIB__EXIT *=/s/@GNULIB__EXIT@/0/
+/^GNULIB_[^ =]* *= *@/s/@[^@\n]*@/0/
 /^GSETTINGS_CFLAGS *=/s/@[^@\n]*@//
 /^GSETTINGS_LIBS *=/s/@[^@\n]*@//
 /^GSETTINGS_CFLAGS *=/s/@[^@\n]*@//
 /^GSETTINGS_LIBS *=/s/@[^@\n]*@//
+#
+# Edit the HAVE_foo variables
 /^HAVE_ATOLL *=/s/@HAVE_ATOLL@/0/
 /^HAVE_ATOLL *=/s/@HAVE_ATOLL@/0/
-/^HAVE_CANONICALIZE_FILE_NAME *=/s/@HAVE_CANONICALIZE_FILE_NAME@/0/
 /^HAVE_CHOWN *=/s/@HAVE_CHOWN@/1/
 /^HAVE_CHOWN *=/s/@HAVE_CHOWN@/1/
-/^HAVE_DECL_ENVIRON *=/s/@HAVE_DECL_ENVIRON@/0/
-/^HAVE_DECL_FCHDIR *=/s/@HAVE_DECL_FCHDIR@/0/
-/^HAVE_DECL_FDATASYNC *=/s/@HAVE_DECL_FDATASYNC@/0/
-/^HAVE_DECL_FPURGE *=/s/@HAVE_DECL_FPURGE@//
-/^HAVE_DECL_FSEEKO *=/s/@HAVE_DECL_FSEEKO@/0/
-/^HAVE_DECL_FTELLO *=/s/@HAVE_DECL_FTELLO@/0/
-/^HAVE_DECL_GETDELIM *=/s/@HAVE_DECL_GETDELIM@/0/
-/^HAVE_DECL_GETDOMAINNAME *=/s/@HAVE_DECL_GETDOMAINNAME@/0/
-/^HAVE_DECL_GETLINE *=/s/@HAVE_DECL_GETLINE@/0/
-/^HAVE_DECL_GETLOADAVG *=/s/@HAVE_DECL_GETLOADAVG@/0/
-/^HAVE_DECL_GETLOGIN_R *=/s/@HAVE_DECL_GETLOGIN_R@/0/
+/^HAVE_CLOSEDIR *=/s/@HAVE_CLOSEDIR@/1/
 /^HAVE_DECL_GETPAGESIZE *=/s/@HAVE_DECL_GETPAGESIZE@/1/
 /^HAVE_DECL_GETPAGESIZE *=/s/@HAVE_DECL_GETPAGESIZE@/1/
-/^HAVE_DECL_GETUSERSHELL *=/s/@HAVE_DECL_GETUSERSHELL@/0/
-/^HAVE_DECL_LOCALTIME_R *=/s/@HAVE_DECL_LOCALTIME_R@/0/
-/^HAVE_DECL_OBSTACK_PRINTF *=/s/@HAVE_DECL_OBSTACK_PRINTF@/0/
-/^HAVE_DECL_SETHOSTNAME *=/s/@HAVE_DECL_SETHOSTNAME@/0/
 /^HAVE_DECL_SETENV *=/s/@HAVE_DECL_SETENV@/1/
 /^HAVE_DECL_SETENV *=/s/@HAVE_DECL_SETENV@/1/
-/^HAVE_DECL_SNPRINTF *=/s/@HAVE_DECL_SNPRINTF@/0/
-/^HAVE_DECL_TTYNAME_R *=/s/@HAVE_DECL_TTYNAME_R@/0/
-/^HAVE_DECL_UNSETENV *=/s/@HAVE_DECL_UNSETENV@/0/
-/^HAVE_DECL_VSNPRINTF *=/s/@HAVE_DECL_VSNPRINTF@/0/
-/^HAVE_DPRINTF *=/s/@HAVE_DPRINTF@/0/
+/^HAVE_DECL_STRDUP *=/s/@HAVE_DECL_STRDUP@/1/
+# The following two rely on msdos/inttypes.h redirections
+/^HAVE_DECL_STRTOIMAX *=/s/@HAVE_DECL_STRTOIMAX@/1/
+/^HAVE_DECL_STRTOUMAX *=/s/@HAVE_DECL_STRTOUMAX@/1/
+/^HAVE_DIRENT_H *=/s/@HAVE_DIRENT_H@/1/
 /^HAVE_DUP2 *=/s/@HAVE_DUP2@/1/
 /^HAVE_DUP2 *=/s/@HAVE_DUP2@/1/
-/^HAVE_DUP3 *=/s/@HAVE_DUP3@/0/
-/^HAVE_EUIDACCESS *=/s/@HAVE_EUIDACCESS@/0/
-/^HAVE_FACCESSAT *=/s/@HAVE_FACCESSAT@/0/
-/^HAVE_FCHDIR *=/s/@HAVE_FCHDIR@/0/
-/^HAVE_FCHMODAT *=/s/@HAVE_FCHMODAT@/0/
-/^HAVE_FCHOWNAT *=/s/@HAVE_FCHOWNAT@/0/
-/^HAVE_FDATASYNC *=/s/@HAVE_FDATASYNC@/0/
-/^HAVE_FSEEKO *=/s/@HAVE_FSEEKO@/0/
-/^HAVE_FSTATAT *=/s/@HAVE_FSTATAT@/0/
 /^HAVE_FSYNC *=/s/@HAVE_FSYNC@/1/
 /^HAVE_FSYNC *=/s/@HAVE_FSYNC@/1/
-/^HAVE_FTELLO *=/s/@HAVE_FTELLO@/0/
 /^HAVE_FTRUNCATE *=/s/@HAVE_FTRUNCATE@/1/
 /^HAVE_FTRUNCATE *=/s/@HAVE_FTRUNCATE@/1/
-/^HAVE_FUTIMENS *=/s/@HAVE_FUTIMENS@/0/
-/^HAVE_GETDTABLESIZE *=/s/@HAVE_GETDTABLESIZE@/0/
-/^HAVE_GETGROUPS *=/s/@HAVE_GETGROUPS@/0/
 /^HAVE_GETHOSTNAME *=/s/@HAVE_GETHOSTNAME@/1/
 /^HAVE_GETLOGIN *=/s/@HAVE_GETLOGIN@/1/
 /^HAVE_GETHOSTNAME *=/s/@HAVE_GETHOSTNAME@/1/
 /^HAVE_GETLOGIN *=/s/@HAVE_GETLOGIN@/1/
-/^HAVE_GETOPT_H *=/s/@HAVE_GETOPT_H@/0/
 /^HAVE_GETPAGESIZE *=/s/@HAVE_GETPAGESIZE@/1/
 /^HAVE_GETPAGESIZE *=/s/@HAVE_GETPAGESIZE@/1/
-/^HAVE_GETSUBOPT *=/s/@HAVE_GETSUBOPT@/0/
-/^HAVE_GRANTPT *=/s/@HAVE_GRANTPT@/0/
-/^HAVE_GROUP_MEMBER *=/s/@HAVE_GROUP_MEMBER@/0/
-/^HAVE_LCHOWN *=/s/@HAVE_LCHOWN@/0/
 /^HAVE_INTTYPES_H *=/s/@HAVE_INTTYPES_H@/HAVE_INTTYPES_H/
 /^HAVE_INTTYPES_H *=/s/@HAVE_INTTYPES_H@/HAVE_INTTYPES_H/
-/^HAVE_LCHMOD *=/s/@HAVE_LCHMOD@/0/
 /^HAVE_LINK *=/s/@HAVE_LINK@/1/
 /^HAVE_LINK *=/s/@HAVE_LINK@/1/
-/^HAVE_LINKAT *=/s/@HAVE_LINKAT@/0/
 /^HAVE_LONG_LONG_INT *=/s/@HAVE_LONG_LONG_INT@/1/
 /^HAVE_LSTAT *=/s/@HAVE_LSTAT@/HAVE_LSTAT/
 /^HAVE_MAKEINFO *=/s/@HAVE_MAKEINFO@/yes/
 /^HAVE_LONG_LONG_INT *=/s/@HAVE_LONG_LONG_INT@/1/
 /^HAVE_LSTAT *=/s/@HAVE_LSTAT@/HAVE_LSTAT/
 /^HAVE_MAKEINFO *=/s/@HAVE_MAKEINFO@/yes/
-/^HAVE_MKDIRAT *=/s/@HAVE_MKDIRAT@/0/
-/^HAVE_MKDTEMP *=/s/@HAVE_MKDTEMP@/0/
+/^HAVE_MEMCHR *=/s/@HAVE_MEMCHR@/1/
 /^HAVE_MKFIFO *=/s/@HAVE_MKFIFO@/1/
 /^HAVE_MKFIFO *=/s/@HAVE_MKFIFO@/1/
-/^HAVE_MKFIFOAT *=/s/@HAVE_MKFIFOAT@/0/
 /^HAVE_MKNOD *=/s/@HAVE_MKNOD@/1/
 /^HAVE_MKNOD *=/s/@HAVE_MKNOD@/1/
-/^HAVE_MKNODAT *=/s/@HAVE_MKNODAT@/0/
-/^HAVE_MKOSTEMP *=/s/@HAVE_MKOSTEMP@/0/
-/^HAVE_MKOSTEMPS *=/s/@HAVE_MKOSTEMPS@/0/
 /^HAVE_MKSTEMP *=/s/@HAVE_MKSTEMP@/1/
 /^HAVE_MKSTEMP *=/s/@HAVE_MKSTEMP@/1/
-/^HAVE_MKSTEMPS *=/s/@HAVE_MKSTEMPS@/0/
-/^HAVE_NANOSLEEP *=/s/@HAVE_NANOSLEEP@/0/
-/^HAVE_OS_H *=/s/@HAVE_OS_H@/0/
-/^HAVE_PIPE *=/s/@HAVE_PIPE@/0/
+/^HAVE_OPENDIR *=/s/@HAVE_OPENDIR@/1/
 /^HAVE_PCLOSE *=/s/@HAVE_PCLOSE@/1/
 /^HAVE_PCLOSE *=/s/@HAVE_PCLOSE@/1/
-/^HAVE_PIPE2 *=/s/@HAVE_PIPE2@/0/
 /^HAVE_POPEN *=/s/@HAVE_POPEN@/1/
 /^HAVE_POSIX_SIGNALBLOCKING *=/s/@HAVE_POSIX_SIGNALBLOCKING@/1/
 /^HAVE_POPEN *=/s/@HAVE_POPEN@/1/
 /^HAVE_POSIX_SIGNALBLOCKING *=/s/@HAVE_POSIX_SIGNALBLOCKING@/1/
-/^HAVE_POSIX_OPENPT *=/s/@HAVE_POSIX_OPENPT@/0/
-/^HAVE_PREAD *=/s/@HAVE_PREAD@/0/
-/^HAVE_PTSNAME *=/s/@HAVE_PTSNAME@/0/
-/^HAVE_PTSNAME_R *=/s/@HAVE_PTSNAME_R@/0/
-/^HAVE_PTHREAD_SIGMASK *=/s/@HAVE_PTHREAD_SIGMASK@/0/
-/^HAVE_PWRITE *=/s/@HAVE_PWRITE@/0/
 /^HAVE_RANDOM_H *=/s/@HAVE_RANDOM_H@/1/
 /^HAVE_RAISE *=/s/@HAVE_RAISE@/1/
 /^HAVE_RANDOM *=/s/@HAVE_RANDOM@/1/
 /^HAVE_RANDOM_H *=/s/@HAVE_RANDOM_H@/1/
 /^HAVE_RAISE *=/s/@HAVE_RAISE@/1/
 /^HAVE_RANDOM *=/s/@HAVE_RANDOM@/1/
-/^HAVE_RANDOM_R *=/s/@HAVE_RANDOM_R@/0/
-/^HAVE_READLINK *=/s/@HAVE_READLINK@/0/
-/^HAVE_READLINKAT *=/s/@HAVE_READLINKAT@/0/
-/^HAVE_REALPATH *=/s/@HAVE_REALPATH@/0/
-/^HAVE_RENAMEAT *=/s/@HAVE_RENAMEAT@/0/
-/^HAVE_RPMATCH *=/s/@HAVE_RPMATCH@/0/
-/^HAVE_SECURE_GETENV *=/s/@HAVE_SECURE_GETENV@/0/
+/^HAVE_READDIR *=/s/@HAVE_READDIR@/1/
+/^HAVE_REWINDDIR *=/s/@HAVE_REWINDDIR@/1/
 /^HAVE_SETENV *=/s/@HAVE_SETENV@/1/
 /^HAVE_SETENV *=/s/@HAVE_SETENV@/1/
-/^HAVE_SETHOSTNAME *=/s/@HAVE_SETHOSTNAME@/0/
 /^HAVE_SIGACTION *=/s/@HAVE_SIGACTION@/1/
 /^HAVE_SIGACTION *=/s/@HAVE_SIGACTION@/1/
-/^HAVE_SIGHANDLER_T *=/s/@HAVE_SIGHANDLER_T@/0/
-/^HAVE_SIGINFO_T *=/s/@HAVE_SIGINFO_T@/0/
 /^HAVE_SIGNED_SIG_ATOMIC_T *=/s/@HAVE_SIGNED_SIG_ATOMIC_T@/1/
 /^HAVE_SIGNED_SIG_ATOMIC_T *=/s/@HAVE_SIGNED_SIG_ATOMIC_T@/1/
-/^HAVE_SIGNED_WCHAR_T *=/s/@HAVE_SIGNED_WCHAR_T@/0/
 /^HAVE_SIGNED_WINT_T *=/s/@HAVE_SIGNED_WINT_T@/1/
 /^HAVE_SIGSET_T *=/s/@HAVE_SIGSET_T@/1/
 /^HAVE_SLEEP *=/s/@HAVE_SLEEP@/1/
 /^HAVE_STDINT_H *=/s/@HAVE_STDINT_H@/HAVE_STDINT_H/
 /^HAVE_SIGNED_WINT_T *=/s/@HAVE_SIGNED_WINT_T@/1/
 /^HAVE_SIGSET_T *=/s/@HAVE_SIGSET_T@/1/
 /^HAVE_SLEEP *=/s/@HAVE_SLEEP@/1/
 /^HAVE_STDINT_H *=/s/@HAVE_STDINT_H@/HAVE_STDINT_H/
-/^HAVE_STRPTIME *=/s/@HAVE_STRPTIME@/0/
+/^HAVE_STRPBRK *=/s/@HAVE_STRPBRK@/1/
+/^HAVE_STRSEP *=/s/@HAVE_STRSEP@/1/
 /^HAVE_STRTOD *=/s/@HAVE_STRTOD@/1/
 /^HAVE_STRTOLL *=/s/@HAVE_STRTOLL@/1/
 /^HAVE_STRTOULL *=/s/@HAVE_STRTOULL@/1/
 /^HAVE_STRTOD *=/s/@HAVE_STRTOD@/1/
 /^HAVE_STRTOLL *=/s/@HAVE_STRTOLL@/1/
 /^HAVE_STRTOULL *=/s/@HAVE_STRTOULL@/1/
-/^HAVE_STRUCT_SIGACTION_SA_SIGACTION *=/s/@HAVE_STRUCT_SIGACTION_SA_SIGACTION@/0/
-/^HAVE_STRUCT_RANDOM_DATA *=/s/@HAVE_STRUCT_RANDOM_DATA@/0/
 /^HAVE_STRUCT_TIMEVAL *=/s/@HAVE_STRUCT_TIMEVAL@/1/
 /^HAVE_SYMLINK *=/s/@HAVE_SYMLINK@/1/
 /^HAVE_STRUCT_TIMEVAL *=/s/@HAVE_STRUCT_TIMEVAL@/1/
 /^HAVE_SYMLINK *=/s/@HAVE_SYMLINK@/1/
-/^HAVE_SYMLINKAT *=/s/@HAVE_SYMLINKAT@/0/
-/^HAVE_SYS_BITYPES_H *=/s/@HAVE_SYS_BITYPES_H@/0/
-/^HAVE_SYS_INTTYPES_H *=/s/@HAVE_SYS_INTTYPES_H@/0/
-/^HAVE_SYS_LOADAVG_H *=/s/@HAVE_SYS_LOADAVG_H@/0/
 /^HAVE_SYS_PARAM_H *=/s/@HAVE_SYS_PARAM_H@/1/
 /^HAVE_SYS_PARAM_H *=/s/@HAVE_SYS_PARAM_H@/1/
-/^HAVE_SYS_SELECT_H *=/s/@HAVE_SYS_SELECT_H@/0/
 /^HAVE_SYS_TIME_H *=/s/@HAVE_SYS_TIME_H@/1/
 /^HAVE_SYS_TYPES_H *=/s/@HAVE_SYS_TYPES_H@/1/
 /^HAVE_SYS_TIME_H *=/s/@HAVE_SYS_TIME_H@/1/
 /^HAVE_SYS_TYPES_H *=/s/@HAVE_SYS_TYPES_H@/1/
-/^HAVE_TIMEGM *=/s/@HAVE_TIMEGM@/0/
 /^HAVE_TYPE_VOLATILE_SIG_ATOMIC_T *=/s/@HAVE_TYPE_VOLATILE_SIG_ATOMIC_T@/1/
 /^HAVE_UNISTD_H *=/s/@HAVE_UNISTD_H@/1/
 /^HAVE_TYPE_VOLATILE_SIG_ATOMIC_T *=/s/@HAVE_TYPE_VOLATILE_SIG_ATOMIC_T@/1/
 /^HAVE_UNISTD_H *=/s/@HAVE_UNISTD_H@/1/
-/^HAVE_UNLINKAT *=/s/@HAVE_UNLINKAT@/0/
-/^HAVE_UNLOCKPT *=/s/@HAVE_UNLOCKPT@/0/
 /^HAVE_UNSIGNED_LONG_LONG_INT *=/s/@HAVE_UNSIGNED_LONG_LONG_INT@/1/
 /^HAVE_USLEEP *=/s/@HAVE_USLEEP@/1/
 /^HAVE_UNSIGNED_LONG_LONG_INT *=/s/@HAVE_UNSIGNED_LONG_LONG_INT@/1/
 /^HAVE_USLEEP *=/s/@HAVE_USLEEP@/1/
-/^HAVE_UTIMENSAT *=/s/@HAVE_UTIMENSAT@/0/
-/^HAVE_VASPRINTF *=/s/@HAVE_VASPRINTF@/0/
-/^HAVE_VDPRINTF *=/s/@HAVE_VDPRINTF@/0/
 /^HAVE_WCHAR_H *=/s/@HAVE_WCHAR_H@/1/
 /^HAVE_WCHAR_T *=/s/@HAVE_WCHAR_T@/1/
 /^HAVE_WCHAR_H *=/s/@HAVE_WCHAR_H@/1/
 /^HAVE_WCHAR_T *=/s/@HAVE_WCHAR_T@/1/
-/^HAVE_XSERVER *=/s/@HAVE_XSERVER@/0/
 /^HAVE__BOOL *=/s/@HAVE__BOOL@/1/
 /^HAVE__EXIT *=/s/@HAVE__EXIT@/1/
 /^HAVE__BOOL *=/s/@HAVE__BOOL@/1/
 /^HAVE__EXIT *=/s/@HAVE__EXIT@/1/
+/^HAVE_[^ =]* *= *@/s/@[^@\n]*@/0/
 /^INCLUDE_NEXT *=/s/@INCLUDE_NEXT@/include_next/
 /^INCLUDE_NEXT_AS_FIRST_DIRECTIVE *=/s/@[^@\n]*@/include_next/
 /^LDFLAGS *=/s/@[^@\n]*@//
 /^INCLUDE_NEXT *=/s/@INCLUDE_NEXT@/include_next/
 /^INCLUDE_NEXT_AS_FIRST_DIRECTIVE *=/s/@[^@\n]*@/include_next/
 /^LDFLAGS *=/s/@[^@\n]*@//
@@ -459,6 +267,9 @@ am__cd = cd
 /^MAKEINFO *=/s/@MAKEINFO@/makeinfo/
 # MKDIR_P lines are edited further below
 /^MKDIR_P *=/s/@MKDIR_P@//
 /^MAKEINFO *=/s/@MAKEINFO@/makeinfo/
 # MKDIR_P lines are edited further below
 /^MKDIR_P *=/s/@MKDIR_P@//
+/^NEXT_AS_FIRST_DIRECTIVE_DIRENT_H *=/s/@[^@\n]*@/<dirent.h>/
+/^NEXT_AS_FIRST_DIRECTIVE_ERRNO_H *=/s/@[^@\n]*@//
+/^NEXT_AS_FIRST_DIRECTIVE_FCNTL_H *=/s/@[^@\n]*@/<fcntl.h>/
 /^NEXT_AS_FIRST_DIRECTIVE_GETOPT_H *=/s/@[^@\n]*@/<getopt.h>/
 /^NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H *=/s/@[^@\n]*@/<signal.h>/
 /^NEXT_AS_FIRST_DIRECTIVE_STDARG_H *=/s/@[^@\n]*@//
 /^NEXT_AS_FIRST_DIRECTIVE_GETOPT_H *=/s/@[^@\n]*@/<getopt.h>/
 /^NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H *=/s/@[^@\n]*@/<signal.h>/
 /^NEXT_AS_FIRST_DIRECTIVE_STDARG_H *=/s/@[^@\n]*@//
@@ -466,12 +277,16 @@ am__cd = cd
 /^NEXT_AS_FIRST_DIRECTIVE_STDINT_H *=/s/@[^@\n]*@/<stdint.h>/
 /^NEXT_AS_FIRST_DIRECTIVE_STDIO_H *=/s/@[^@\n]*@/<stdio.h>/
 /^NEXT_AS_FIRST_DIRECTIVE_STDLIB_H *=/s/@[^@\n]*@/<stdlib.h>/
 /^NEXT_AS_FIRST_DIRECTIVE_STDINT_H *=/s/@[^@\n]*@/<stdint.h>/
 /^NEXT_AS_FIRST_DIRECTIVE_STDIO_H *=/s/@[^@\n]*@/<stdio.h>/
 /^NEXT_AS_FIRST_DIRECTIVE_STDLIB_H *=/s/@[^@\n]*@/<stdlib.h>/
+/^NEXT_AS_FIRST_DIRECTIVE_STRING_H *=/s/@[^@\n]*@/<string.h>/
 /^NEXT_AS_FIRST_DIRECTIVE_SYS_SELECT_H *=/s/@[^@\n]*@//
 /^NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H *=/s!@[^@\n]*@!<sys/stat.h>!
 /^NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H *=/s/@[^@\n]*@//
 /^NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H *=/s!@[^@\n]*@!<sys/types.h>!
 /^NEXT_AS_FIRST_DIRECTIVE_TIME_H *=/s/@[^@\n]*@/<time.h>/
 /^NEXT_AS_FIRST_DIRECTIVE_UNISTD_H *=/s/@[^@\n]*@/<unistd.h>/
 /^NEXT_AS_FIRST_DIRECTIVE_SYS_SELECT_H *=/s/@[^@\n]*@//
 /^NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H *=/s!@[^@\n]*@!<sys/stat.h>!
 /^NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H *=/s/@[^@\n]*@//
 /^NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H *=/s!@[^@\n]*@!<sys/types.h>!
 /^NEXT_AS_FIRST_DIRECTIVE_TIME_H *=/s/@[^@\n]*@/<time.h>/
 /^NEXT_AS_FIRST_DIRECTIVE_UNISTD_H *=/s/@[^@\n]*@/<unistd.h>/
+/^NEXT_DIRENT_H *=/s/@[^@\n]*@/<dirent.h>/
+/^NEXT_ERRNO_H *=/s/@[^@\n]*@//
+/^NEXT_FCNTL_H *=/s/@[^@\n]*@/<fcntl.h>/
 /^NEXT_GETOPT_H *=/s/@[^@\n]*@/<getopt.h>/
 /^NEXT_STDARG_H *=/s/@[^@\n]*@//
 /^NEXT_SIGNAL_H *=/s/@[^@\n]*@/<signal.h>/
 /^NEXT_GETOPT_H *=/s/@[^@\n]*@/<getopt.h>/
 /^NEXT_STDARG_H *=/s/@[^@\n]*@//
 /^NEXT_SIGNAL_H *=/s/@[^@\n]*@/<signal.h>/
@@ -479,6 +294,7 @@ am__cd = cd
 /^NEXT_STDIO_H *=/s/@[^@\n]*@/<stdio.h>/
 /^NEXT_STDINT_H *=/s/@[^@\n]*@/<stdint.h>/
 /^NEXT_STDLIB_H *=/s/@[^@\n]*@/<stdlib.h>/
 /^NEXT_STDIO_H *=/s/@[^@\n]*@/<stdio.h>/
 /^NEXT_STDINT_H *=/s/@[^@\n]*@/<stdint.h>/
 /^NEXT_STDLIB_H *=/s/@[^@\n]*@/<stdlib.h>/
+/^NEXT_STRING_H *=/s/@[^@\n]*@/<string.h>/
 /^NEXT_SYS_SELECT_H *=/s/@[^@\n]*@//
 /^NEXT_SYS_STAT_H *=/s!@[^@\n]*@!<sys/stat.h>!
 /^NEXT_SYS_TIME_H *=/s/@[^@\n]*@//
 /^NEXT_SYS_SELECT_H *=/s/@[^@\n]*@//
 /^NEXT_SYS_STAT_H *=/s!@[^@\n]*@!<sys/stat.h>!
 /^NEXT_SYS_TIME_H *=/s/@[^@\n]*@//
@@ -491,104 +307,14 @@ am__cd = cd
 /^PTHREAD_H_DEFINES_STRUCT_TIMESPEC *=/s/@[^@\n]*@/0/
 /^PTRDIFF_T_SUFFIX *=/s/@[^@\n]*@//
 /^RANLIB *=/s/@[^@\n]*@/ranlib/
 /^PTHREAD_H_DEFINES_STRUCT_TIMESPEC *=/s/@[^@\n]*@/0/
 /^PTRDIFF_T_SUFFIX *=/s/@[^@\n]*@//
 /^RANLIB *=/s/@[^@\n]*@/ranlib/
-/^REPLACE_CALLOC *=/s/@REPLACE_CALLOC@/0/
-/^REPLACE_CANONICALIZE_FILE_NAME *=/s/@REPLACE_CANONICALIZE_FILE_NAME@/0/
-/^REPLACE_CHOWN *=/s/@REPLACE_CHOWN@/0/
-/^REPLACE_CLOSE *=/s/@REPLACE_CLOSE@/0/
-/^REPLACE_DPRINTF *=/s/@REPLACE_DPRINTF@/0/
-/^REPLACE_DUP *=/s/@REPLACE_DUP@/0/
-/^REPLACE_DUP2 *=/s/@REPLACE_DUP2@/0/
-/^REPLACE_FCHOWNAT *=/s/@REPLACE_FCHOWNAT@/0/
-/^REPLACE_FCLOSE *=/s/@REPLACE_FCLOSE@/0/
-/^REPLACE_FDOPEN *=/s/@REPLACE_FDOPEN@/0/
-/^REPLACE_FFLUSH *=/s/@REPLACE_FFLUSH@/0/
-/^REPLACE_FOPEN *=/s/@REPLACE_FOPEN@/0/
-/^REPLACE_FPRINTF *=/s/@REPLACE_FPRINTF@/0/
-/^REPLACE_FPURGE *=/s/@REPLACE_FPURGE@/0/
-/^REPLACE_FREOPEN *=/s/@REPLACE_FREOPEN@/0/
-/^REPLACE_FSEEK *=/s/@REPLACE_FSEEK@/0/
-/^REPLACE_FSEEKO *=/s/@REPLACE_FSEEKO@/0/
-/^REPLACE_FSTAT *=/s/@REPLACE_FSTAT@/0/
-/^REPLACE_FSTATAT *=/s/@REPLACE_FSTATAT@/0/
-/^REPLACE_FTELL *=/s/@REPLACE_FTELL@/0/
-/^REPLACE_FTELLO *=/s/@REPLACE_FTELLO@/0/
-/^REPLACE_FTRUNCATE *=/s/@REPLACE_FTRUNCATE@/0/
-/^REPLACE_GETCWD *=/s/@REPLACE_GETCWD@/0/
-/^REPLACE_GETDELIM *=/s/@REPLACE_GETDELIM@/0/
-/^REPLACE_GETDOMAINNAME *=/s/@REPLACE_GETDOMAINNAME@/0/
-/^REPLACE_GETGROUPS *=/s/@REPLACE_GETGROUPS@/0/
-/^REPLACE_GETLINE *=/s/@REPLACE_GETLINE@/0/
-/^REPLACE_GETLOGIN_R *=/s/@REPLACE_GETLOGIN_R@/0/
-/^REPLACE_GETPAGESIZE *=/s/@REPLACE_GETPAGESIZE@/0/
-/^REPLACE_GETTIMEOFDAY *=/s/@REPLACE_GETTIMEOFDAY@/0/
-/^REPLACE_ISATTY *=/s/@REPLACE_ISATTY@/0/
-/^REPLACE_LCHOWN *=/s/@REPLACE_LCHOWN@/0/
-/^REPLACE_LINK *=/s/@REPLACE_LINK@/0/
-/^REPLACE_LINKAT *=/s/@REPLACE_LINKAT@/0/
-/^REPLACE_LOCALTIME_R *=/s/@REPLACE_LOCALTIME_R@/0/
-/^REPLACE_LSEEK *=/s/@REPLACE_LSEEK@/0/
-/^REPLACE_LSTAT *=/s/@REPLACE_LSTAT@/0/
-/^REPLACE_MALLOC *=/s/@REPLACE_MALLOC@/0/
-/^REPLACE_MBTOWC *=/s/@REPLACE_MBTOWC@/0/
-/^REPLACE_MKDIR *=/s/@REPLACE_MKDIR@/0/
-/^REPLACE_MKFIFO *=/s/@REPLACE_MKFIFO@/0/
-/^REPLACE_MKNOD *=/s/@REPLACE_MKNOD@/0/
-/^REPLACE_MKSTEMP *=/s/@REPLACE_MKSTEMP@/0/
-/^REPLACE_MKTIME *=/s/@REPLACE_MKTIME@/0/
-/^REPLACE_NANOSLEEP *=/s/@REPLACE_NANOSLEEP@/0/
-/^REPLACE_NULL *=/s/@REPLACE_NULL@/0/
-/^REPLACE_OBSTACK_PRINTF *=/s/@REPLACE_OBSTACK_PRINTF@/0/
-/^REPLACE_PERROR *=/s/@REPLACE_PERROR@/0/
-/^REPLACE_POPEN *=/s/@REPLACE_POPEN@/0/
-/^REPLACE_PREAD *=/s/@REPLACE_PREAD@/0/
-/^REPLACE_PRINTF *=/s/@REPLACE_PRINTF@/0/
-/^REPLACE_PTHREAD_SIGMASK *=/s/@REPLACE_PTHREAD_SIGMASK@/0/
-/^REPLACE_PTSNAME *=/s/@REPLACE_PTSNAME@/0/
-/^REPLACE_PSELECT *=/s/@REPLACE_PSELECT@/0/
-/^REPLACE_PTSNAME *=/s/@REPLACE_PTSNAME@/0/
-/^REPLACE_PTSNAME_R *=/s/@REPLACE_PTSNAME_R@/0/
-/^REPLACE_PUTENV *=/s/@REPLACE_PUTENV@/0/
-/^REPLACE_PWRITE *=/s/@REPLACE_PWRITE@/0/
-/^REPLACE_RANDOM_R *=/s/@REPLACE_RANDOM_R@/0/
-/^REPLACE_READ *=/s/@REPLACE_READ@/0/
-/^REPLACE_RAISE *=/s/@REPLACE_RAISE@/0/
-/^REPLACE_READLINK *=/s/@REPLACE_READLINK@/0/
-/^REPLACE_REALLOC *=/s/@REPLACE_REALLOC@/0/
-/^REPLACE_REALPATH *=/s/@REPLACE_REALPATH@/0/
-/^REPLACE_REMOVE *=/s/@REPLACE_REMOVE@/0/
-/^REPLACE_RENAME *=/s/@REPLACE_RENAME@/0/
-/^REPLACE_RENAMEAT *=/s/@REPLACE_RENAMEAT@/0/
-/^REPLACE_RMDIR *=/s/@REPLACE_RMDIR@/0/
-/^REPLACE_SETENV *=/s/@REPLACE_SETENV@/0/
-/^REPLACE_SLEEP *=/s/@REPLACE_SLEEP@/0/
-/^REPLACE_SNPRINTF *=/s/@REPLACE_SNPRINTF@/0/
-/^REPLACE_SPRINTF *=/s/@REPLACE_SPRINTF@/0/
-/^REPLACE_STAT *=/s/@REPLACE_STAT@/0/
-/^REPLACE_STDIO_READ_FUNCS *=/s/@REPLACE_STDIO_READ_FUNCS@/0/
-/^REPLACE_STDIO_WRITE_FUNCS *=/s/@REPLACE_STDIO_WRITE_FUNCS@/0/
-/^REPLACE_STRTOD *=/s/@REPLACE_STRTOD@/0/
-/^REPLACE_STRTOIMAX *=/s/@REPLACE_STRTOIMAX@/0/
-/^REPLACE_STRUCT_TIMEVAL *=/s/@REPLACE_STRUCT_TIMEVAL@/0/
-/^REPLACE_SYMLINK *=/s/@REPLACE_SYMLINK@/0/
-/^REPLACE_TIMEGM *=/s/@REPLACE_TIMEGM@/0/
-/^REPLACE_TMPFILE *=/s/@REPLACE_TMPFILE@/0/
-/^REPLACE_TTYNAME_R *=/s/@REPLACE_TTYNAME_R@/0/
-/^REPLACE_UNLINK *=/s/@REPLACE_UNLINK@/0/
-/^REPLACE_UNLINKAT *=/s/@REPLACE_UNLINKAT@/0/
-/^REPLACE_UNSETENV *=/s/@REPLACE_UNSETENV@/0/
-/^REPLACE_USLEEP *=/s/@REPLACE_USLEEP@/0/
-/^REPLACE_UTIMENSAT *=/s/@REPLACE_UTIMENSAT@/0/
-/^REPLACE_VASPRINTF *=/s/@REPLACE_VASPRINTF@/0/
-/^REPLACE_VDPRINTF *=/s/@REPLACE_VDPRINTF@/0/
-/^REPLACE_VFPRINTF *=/s/@REPLACE_VFPRINTF@/0/
-/^REPLACE_VPRINTF *=/s/@REPLACE_VPRINTF@/0/
-/^REPLACE_VSNPRINTF *=/s/@REPLACE_VSNPRINTF@/0/
-/^REPLACE_VSPRINTF *=/s/@REPLACE_VSPRINTF@/0/
-/^REPLACE_WCTOMB *=/s/@REPLACE_WCTOMB@/0/
-/^REPLACE_WRITE *=/s/@REPLACE_WRITE@/0/
+# We never want any gnulib replacement functions
+/^REPLACE_[^ =]* *= *@/s/@[^@\n]*@/0/
 /^SIG_ATOMIC_T_SUFFIX *=/s/@SIG_ATOMIC_T_SUFFIX@//
 /^SIZE_T_SUFFIX *=/s/@SIZE_T_SUFFIX@/u/
 /^ALLOCA_H *=/s/@[^@\n]*@/alloca.h/
 /^SIG_ATOMIC_T_SUFFIX *=/s/@SIG_ATOMIC_T_SUFFIX@//
 /^SIZE_T_SUFFIX *=/s/@SIZE_T_SUFFIX@/u/
 /^ALLOCA_H *=/s/@[^@\n]*@/alloca.h/
+/^BYTESWAP_H *=/s/@[^@\n]*@/byteswap.h/
+/^DIRENT_H *=/s/@[^@\n]*@//
+/^ERRNO_H *=/s/@[^@\n]*@//
 /^STDBOOL_H *=/s/@[^@\n]*@//
 /^STDALIGN_H *=/s/@[^@\n]*@/stdalign.h/
 /^STDARG_H *=/s/@[^@\n]*@//
 /^STDBOOL_H *=/s/@[^@\n]*@//
 /^STDALIGN_H *=/s/@[^@\n]*@/stdalign.h/
 /^STDARG_H *=/s/@[^@\n]*@//
@@ -598,21 +324,32 @@ am__cd = cd
 /^TIME_H_DEFINES_STRUCT_TIMESPEC *=/s/@[^@\n]*@/0/
 /^UNISTD_H_HAVE_WINSOCK2_H *=/s/@[^@\n]*@/0/
 /^UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS *=/s/@[^@\n]*@/0/
 /^TIME_H_DEFINES_STRUCT_TIMESPEC *=/s/@[^@\n]*@/0/
 /^UNISTD_H_HAVE_WINSOCK2_H *=/s/@[^@\n]*@/0/
 /^UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS *=/s/@[^@\n]*@/0/
+/^UNDEFINE_STRTOK_R *=/s/@UNDEFINE_STRTOK_R@/0/
 /^WCHAR_T_SUFFIX *=/s/@WCHAR_T_SUFFIX@/h/
 /^WINT_T_SUFFIX *=/s/@WINT_T_SUFFIX@//
 /^WINDOWS_64_BIT_OFF_T *=/s/@WINDOWS_64_BIT_OFF_T@/0/
 /^WINDOWS_64_BIT_ST_SIZE *=/s/@WINDOWS_64_BIT_ST_SIZE@/0/
 /^WCHAR_T_SUFFIX *=/s/@WCHAR_T_SUFFIX@/h/
 /^WINT_T_SUFFIX *=/s/@WINT_T_SUFFIX@//
 /^WINDOWS_64_BIT_OFF_T *=/s/@WINDOWS_64_BIT_OFF_T@/0/
 /^WINDOWS_64_BIT_ST_SIZE *=/s/@WINDOWS_64_BIT_ST_SIZE@/0/
-/am__append_1 *=.*gettext\.h/s/@[^@\n]*@/\#/
+# Tailor lists of files to what we need
+/am__append_[1-9][0-9]* *=.*gettext\.h/s/@[^@\n]*@/\#/
 /am__append_2 *=.*verify\.h/s/@[^@\n]*@//
 /am__append_2 *=.*verify\.h/s/@[^@\n]*@//
-/^gl_LIBOBJS *=/s/@[^@\n]*@/getopt.o getopt1.o strftime.o time_r.o getloadavg.o pthread_sigmask.o/
-/^BUILT_SOURCES *=/s/ *inttypes\.h//
-/^BUILT_SOURCES *=/,/^[^       ]/{
+/^@gl_GNULIB_ENABLED_tempname_TRUE@/s/@[^@\n]*@//
+/^gl_LIBOBJS *=/s/@[^@\n]*@/getopt.o getopt1.o memrchr.o sig2str.o time_r.o getloadavg.o pthread_sigmask.o mkostemp.o fpending.o fdatasync.o/
+/^am__append_[1-9][0-9]* *=/,/^[^      ]/{
+  s/ *inttypes\.h//
   s| *sys/select\.h||
   s| *sys/time\.h||
 }
 /^am_libgnu_a_OBJECTS *=/,/^[^         ]/{
   s/allocator\.\$(OBJEXT) //
   s| *sys/select\.h||
   s| *sys/time\.h||
 }
 /^am_libgnu_a_OBJECTS *=/,/^[^         ]/{
   s/allocator\.\$(OBJEXT) //
+  s/binary-io\.\$(OBJEXT) //
   s/careadlinkat\.\$(OBJEXT) //
   s/careadlinkat\.\$(OBJEXT) //
+  s/pipe2\.\$(OBJEXT) //
+  s/acl-errno-valid\.\$(OBJEXT) //
+  s/file-has-acl\.\$(OBJEXT) //
+  s/qcopy-acl\.\$(OBJEXT) //
+  s/qset-acl\.\$(OBJEXT) //
+  s/openat-die\.\$(OBJEXT) //
+  s/save-cwd\.\$(OBJEXT) //
 }
 /^srcdir *=/s/@[^@\n]*@/./
 /^top_srcdir *=/s/@[^@\n]*@/../
 }
 /^srcdir *=/s/@[^@\n]*@/./
 /^top_srcdir *=/s/@[^@\n]*@/../
@@ -623,7 +360,7 @@ s/@PRAGMA_COLUMNS@//
 # Delete the recipes we don't want to get in our way.
 /^\$(srcdir)\/Makefile\.in:/,/^[       ][      ]*\$(AUTOMAKE)/d
 /^Makefile:/,/^[       ][      ]*esac/d
 # Delete the recipes we don't want to get in our way.
 /^\$(srcdir)\/Makefile\.in:/,/^[       ][      ]*\$(AUTOMAKE)/d
 /^Makefile:/,/^[       ][      ]*esac/d
-/^\$(top_srcdir)\/configure:/,/^\$(ACLOCAL_M4)/d
+/^\$(top_srcdir)\/configure:/,/^\$(am__aclocal_m4_deps):/d
 /^\$(top_builddir)\/config.status:/,/^$/d
 #
 # Remove the dependencies on $(top_builddir)/config.status
 /^\$(top_builddir)\/config.status:/,/^$/d
 #
 # Remove the dependencies on $(top_builddir)/config.status
@@ -640,16 +377,22 @@ s/^@am__fastdepCC_FALSE@/\#/
 # Fix the *-clean rules, to not use a Unixy `test' command.  Empty
 # lists are replaced with a dummy file, to avoid an error message from
 # "rm -f" with no arguments.
 # Fix the *-clean rules, to not use a Unixy `test' command.  Empty
 # lists are replaced with a dummy file, to avoid an error message from
 # "rm -f" with no arguments.
+/^CLEANFILES *= *$/c\
+CLEANFILES = xyzzy
 /^CONFIG_CLEAN_FILES *= *$/c\
 CONFIG_CLEAN_FILES = xyzzy
 /^CONFIG_CLEAN_VPATH_FILES *= *$/c\
 CONFIG_CLEAN_VPATH_FILES = xyzzy
 s/^    -*test -z.*|| rm/        -rm/
 /^CONFIG_CLEAN_FILES *= *$/c\
 CONFIG_CLEAN_FILES = xyzzy
 /^CONFIG_CLEAN_VPATH_FILES *= *$/c\
 CONFIG_CLEAN_VPATH_FILES = xyzzy
 s/^    -*test -z.*|| rm/        -rm/
-s/@echo /@djecho/
+s/@echo /@djecho /
 #
 # Fix the recipes for header files
 s/^@GL_GENERATE_ALLOCA_H_TRUE@//
 s/^@GL_GENERATE_ALLOCA_H_FALSE@/\#/
 #
 # Fix the recipes for header files
 s/^@GL_GENERATE_ALLOCA_H_TRUE@//
 s/^@GL_GENERATE_ALLOCA_H_FALSE@/\#/
+s/^@GL_GENERATE_BYTESWAP_H_TRUE@//
+s/^@GL_GENERATE_BYTESWAP_H_FALSE@/\#/
+s/^@GL_GENERATE_ERRNO_H_TRUE@/\#/
+s/^@GL_GENERATE_ERRNO_H_FALSE@//
 s/^@GL_GENERATE_EXECINFO_H_TRUE@//
 s/^@GL_GENERATE_EXECINFO_H_FALSE@/\#/
 s/^@GL_GENERATE_STDBOOL_H_TRUE@/\#/
 s/^@GL_GENERATE_EXECINFO_H_TRUE@//
 s/^@GL_GENERATE_EXECINFO_H_FALSE@/\#/
 s/^@GL_GENERATE_STDBOOL_H_TRUE@/\#/
@@ -688,7 +431,16 @@ s/\.in-h\;  *\\$/.in-h >> $@-t/
 /^unistd\.h:/,/^       [       ]*mv /{
   s/'\; \\ *$/' >> $@-t/
 }
 /^unistd\.h:/,/^       [       ]*mv /{
   s/'\; \\ *$/' >> $@-t/
 }
+/^string\.h:/,/^       [       ]*mv /{
+  s/'\; \\ *$/' >> $@-t/
+  /< \$(srcdir)\/string\.in-h >>/d
+}
 s!\$(MKDIR_P)[         ][      ]*sys!command.com /c "if not exist sys\\stat.h md sys"!
 /^     @for dir in/,/^[^        ]/c\
        -rm -rf $(MOSTLYCLEANDIRS)
 /^      *-test . /d
 s!\$(MKDIR_P)[         ][      ]*sys!command.com /c "if not exist sys\\stat.h md sys"!
 /^     @for dir in/,/^[^        ]/c\
        -rm -rf $(MOSTLYCLEANDIRS)
 /^      *-test . /d
+#
+# Fix the Automake verbosity stuff
+/^      *\$(AM_V_at)/s/\$(AM_V_at)//
+/^      *\$(AM_V_AR)/s/\$(AM_V_AR)//
+/^      *\$(AM_V_CC)/s/\$(AM_V_CC)//
index caf8e0c..332630c 100644 (file)
@@ -19,8 +19,9 @@
 /^SHELL *=/i\
 export FNCASE=y
 
 /^SHELL *=/i\
 export FNCASE=y
 
+/^SHELL *=/s|@SHELL@|/bin/sh|
 /^lisp *=/s|\$(srcdir)|$(CURDIR)|
 /^srcdir *=/s|@srcdir@|.|
 /^top_srcdir *=/s|@top_srcdir@|./..|
 /^lisp *=/s|\$(srcdir)|$(CURDIR)|
 /^srcdir *=/s|@srcdir@|.|
 /^top_srcdir *=/s|@top_srcdir@|./..|
-/^abs_top_builddir *=/s|@abs_top_builddir@|$(CURDIR)/..|
+/^XARGS_LIMIT *=/s|@XARGS_LIMIT@||
 
 
index 51861c6..1899eda 100644 (file)
@@ -1,3 +1,62 @@
+2014-04-16  Eli Zaretskii  <eliz@gnu.org>
+
+       * unexcoff.c [MSDOS]: Include libc/atexit.h.
+       (copy_text_and_data): Zero out the atexit chain pointer before
+       dumping Emacs.
+
+       * termhooks.h (encode_terminal_code): Update prototype.
+
+       * term.c (encode_terminal_code) [DOS_NT]: Make it externally
+       visible for all DOS_NT ports, not just WINDOWSNT.
+       (syms_of_term) [!MSDOS]: Don't define 'tty-menu-*' symbols on MSDOS.
+
+       * sysdep.c (emacs_sigaction_init, init_signals): Don't use SIGCHLD
+       unless it is defined.
+       (emacs_pipe) [MSDOS]: Redirect to 'pipe'.
+
+       * process.c (close_on_exec, accept4, process_socket): Move into
+       the "ifdef subprocesses" part.
+       (catch_child_signal): Condition by "ifdef subprocesses".
+       (syms_of_process) <Qinternal_default_process_sentinel>
+       <Qinternal_default_process_filter>: Condition by "ifdef subprocesses".
+
+       * msdos.h: Add prototypes for new functions.
+       (EINPROGRESS): Define.
+       (O_CLOEXEC): Define to zero.
+
+       * msdos.c (check_window_system): Remove unnecessary an
+       incompatible duplicate function.
+       (sys_opendir, readlinkat, faccessat, fstatat, unsetenv): New
+       functions in support of new functionality.
+
+       * menu.c (single_menu_item): Add visual indication  of submenu
+       also for menus on MSDOS frames.
+       (Fx_popup_menu) [!MSDOS]: Do not call tty_menu_show on MSDOS.
+
+       * lisp.h (CHECK_PROCESS) [!subprocesses]: Do not define
+       when async subprocesses aren't supported.
+
+       * font.h (FONT_WIDTH) [MSDOS]: MSDOS-specific definition.
+
+       * emacs.c (close_output_streams): Zero out errno before calling
+       close_stream.
+
+       * dired.c [MSDOS]: Include msdos.h.
+
+       * conf_post.h (opendir) [MSDOS]: Redirect to sys_opendir.
+       (DATA_START) [MSDOS]: Define.
+       (SYSTEM_PURESIZE_EXTRA) [MSDOS]: Enlarge by 25K.
+
+       * callproc.c (block_child_signal, unblock_child_signal) [MSDOS]:
+       Ifdef away for MSDOS.
+       (record_kill_process) [MSDOS]: Ifdef away the entire body for MSDOS.
+       (call_process_cleanup) [MSDOS]: Ifdef away portions not relevant
+       for MSDOS.
+       (call_process) [MSDOS]: Fix call sequence of dostounix_filename.
+       Use temporary file template that is compatible with mkostemp.
+       Move vfork-related portions under #ifndef MSDOS.
+       (syms_of_callproc): Unify templates of MSDOS and WINDOWSNT.
+
 2014-04-15  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * buffer.c (Foverlays_at): Add argument `sorted'.
 2014-04-15  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * buffer.c (Foverlays_at): Add argument `sorted'.
index 2ce4a7d..9e60ba1 100644 (file)
@@ -105,6 +105,8 @@ enum
 
 static Lisp_Object call_process (ptrdiff_t, Lisp_Object *, int, ptrdiff_t);
 \f
 
 static Lisp_Object call_process (ptrdiff_t, Lisp_Object *, int, ptrdiff_t);
 \f
+
+#ifndef MSDOS
 /* Block SIGCHLD.  */
 
 void
 /* Block SIGCHLD.  */
 
 void
@@ -124,6 +126,8 @@ unblock_child_signal (void)
   pthread_sigmask (SIG_SETMASK, &empty_mask, 0);
 }
 
   pthread_sigmask (SIG_SETMASK, &empty_mask, 0);
 }
 
+#endif /* !MSDOS */
+
 /* Return the current buffer's working directory, or the home
    directory if it's unreachable, as a string suitable for a system call.
    Signal an error if the result would not be an accessible directory.  */
 /* Return the current buffer's working directory, or the home
    directory if it's unreachable, as a string suitable for a system call.
    Signal an error if the result would not be an accessible directory.  */
@@ -162,6 +166,7 @@ encode_current_directory (void)
 void
 record_kill_process (struct Lisp_Process *p, Lisp_Object tempfile)
 {
 void
 record_kill_process (struct Lisp_Process *p, Lisp_Object tempfile)
 {
+#ifndef MSDOS
   block_child_signal ();
 
   if (p->alive)
   block_child_signal ();
 
   if (p->alive)
@@ -172,6 +177,7 @@ record_kill_process (struct Lisp_Process *p, Lisp_Object tempfile)
     }
 
   unblock_child_signal ();
     }
 
   unblock_child_signal ();
+#endif /* !MSDOS */
 }
 
 /* Clean up files, file descriptors and processes created by Fcall_process.  */
 }
 
 /* Clean up files, file descriptors and processes created by Fcall_process.  */
@@ -211,6 +217,7 @@ call_process_cleanup (Lisp_Object buffer)
 {
   Fset_buffer (buffer);
 
 {
   Fset_buffer (buffer);
 
+#ifndef MSDOS
   if (synch_process_pid)
     {
       kill (-synch_process_pid, SIGINT);
   if (synch_process_pid)
     {
       kill (-synch_process_pid, SIGINT);
@@ -222,6 +229,7 @@ call_process_cleanup (Lisp_Object buffer)
       immediate_quit = 0;
       message1 ("Waiting for process to die...done");
     }
       immediate_quit = 0;
       message1 ("Waiting for process to die...done");
     }
+#endif /* !MSDOS */
 }
 
 #ifdef DOS_NT
 }
 
 #ifdef DOS_NT
@@ -518,10 +526,10 @@ call_process (ptrdiff_t nargs, Lisp_Object *args, int filefd,
       char const *outf = tmpdir ? tmpdir : "";
       tempfile = alloca (strlen (outf) + 20);
       strcpy (tempfile, outf);
       char const *outf = tmpdir ? tmpdir : "";
       tempfile = alloca (strlen (outf) + 20);
       strcpy (tempfile, outf);
-      dostounix_filename (tempfile, 0);
+      dostounix_filename (tempfile);
       if (*tempfile == '\0' || tempfile[strlen (tempfile) - 1] != '/')
        strcat (tempfile, "/");
       if (*tempfile == '\0' || tempfile[strlen (tempfile) - 1] != '/')
        strcat (tempfile, "/");
-      strcat (tempfile, "detmp.XXX");
+      strcat (tempfile, "emXXXXXX");
       mktemp (tempfile);
       if (!*tempfile)
        report_file_error ("Opening process output file", Qnil);
       mktemp (tempfile);
       if (!*tempfile)
        report_file_error ("Opening process output file", Qnil);
@@ -710,8 +718,6 @@ call_process (ptrdiff_t nargs, Lisp_Object *args, int filefd,
   unblock_child_signal ();
   unblock_input ();
 
   unblock_child_signal ();
   unblock_input ();
 
-#endif /* not MSDOS */
-
   if (pid < 0)
     report_file_errno ("Doing vfork", Qnil, child_errno);
 
   if (pid < 0)
     report_file_errno ("Doing vfork", Qnil, child_errno);
 
@@ -726,6 +732,8 @@ call_process (ptrdiff_t nargs, Lisp_Object *args, int filefd,
   emacs_close (filefd);
   clear_unwind_protect (count - 1);
 
   emacs_close (filefd);
   clear_unwind_protect (count - 1);
 
+#endif /* not MSDOS */
+
   if (INTEGERP (buffer))
     return unbind_to (count, Qnil);
 
   if (INTEGERP (buffer))
     return unbind_to (count, Qnil);
 
@@ -1672,10 +1680,8 @@ syms_of_callproc (void)
 {
 #ifndef DOS_NT
   Vtemp_file_name_pattern = build_string ("emacsXXXXXX");
 {
 #ifndef DOS_NT
   Vtemp_file_name_pattern = build_string ("emacsXXXXXX");
-#elif defined (WINDOWSNT)
+#else  /* DOS_NT */
   Vtemp_file_name_pattern = build_string ("emXXXXXX");
   Vtemp_file_name_pattern = build_string ("emXXXXXX");
-#else
-  Vtemp_file_name_pattern = build_string ("detmp.XXX");
 #endif
   staticpro (&Vtemp_file_name_pattern);
 
 #endif
   staticpro (&Vtemp_file_name_pattern);
 
index bb3be1b..8fabd60 100644 (file)
@@ -121,6 +121,11 @@ You lose; /* Emacs for DOS must be compiled with DJGPP */
 #else
 # define lstat stat
 #endif
 #else
 # define lstat stat
 #endif
+
+/* We must intercept 'opendir' calls to stash away the directory name,
+   so we could reuse it in realinkat, see msdos.c.  */
+#define opendir sys_opendir
+
 /* The "portable" definition of _GL_INLINE on config.h does not work
    with DJGPP GCC 3.4.4: it causes unresolved externals in sysdep.c,
    although lib/execinfo.h is included and the inline functions there
 /* The "portable" definition of _GL_INLINE on config.h does not work
    with DJGPP GCC 3.4.4: it causes unresolved externals in sysdep.c,
    although lib/execinfo.h is included and the inline functions there
@@ -132,6 +137,9 @@ You lose; /* Emacs for DOS must be compiled with DJGPP */
 
 #define emacs_raise(sig) msdos_fatal_signal (sig)
 
 
 #define emacs_raise(sig) msdos_fatal_signal (sig)
 
+/* DATA_START is needed by vm-limit.c and unexcoff.c. */
+#define DATA_START (&etext + 1)
+
 /* Define one of these for easier conditionals.  */
 #ifdef HAVE_X_WINDOWS
 /* We need a little extra space, see ../../lisp/loadup.el and the
 /* Define one of these for easier conditionals.  */
 #ifdef HAVE_X_WINDOWS
 /* We need a little extra space, see ../../lisp/loadup.el and the
@@ -148,7 +156,7 @@ You lose; /* Emacs for DOS must be compiled with DJGPP */
    directory tree).  Given the unknown policy of different DPMI
    hosts regarding loading of untouched pages, I'm not going to risk
    enlarging Emacs footprint by another 100+ KBytes.  */
    directory tree).  Given the unknown policy of different DPMI
    hosts regarding loading of untouched pages, I'm not going to risk
    enlarging Emacs footprint by another 100+ KBytes.  */
-#define SYSTEM_PURESIZE_EXTRA (-170000+65000)
+#define SYSTEM_PURESIZE_EXTRA (-170000+90000)
 #endif
 #endif  /* MSDOS */
 
 #endif
 #endif  /* MSDOS */
 
index 69d0ae0..55b2f66 100644 (file)
@@ -47,6 +47,10 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 #include "regex.h"
 #include "blockinput.h"
 
 #include "regex.h"
 #include "blockinput.h"
 
+#ifdef MSDOS
+#include "msdos.h"     /* for fstatat */
+#endif
+
 static Lisp_Object Qdirectory_files;
 static Lisp_Object Qdirectory_files_and_attributes;
 static Lisp_Object Qfile_name_completion;
 static Lisp_Object Qdirectory_files;
 static Lisp_Object Qdirectory_files_and_attributes;
 static Lisp_Object Qfile_name_completion;
index fd93324..6a86dea 100644 (file)
@@ -686,6 +686,11 @@ void (*__malloc_initialize_hook) (void) EXTERNALLY_VISIBLE = malloc_initialize_h
 static void
 close_output_streams (void)
 {
 static void
 close_output_streams (void)
 {
+  int err = errno;
+
+  /* close_stream checks errno, so make sure it doesn't inherit some
+     random value.  */
+  errno = 0;
   if (close_stream (stdout) != 0)
     {
       emacs_perror ("Write error to standard output");
   if (close_stream (stdout) != 0)
     {
       emacs_perror ("Write error to standard output");
@@ -694,6 +699,8 @@ close_output_streams (void)
 
    if (close_stream (stderr) != 0)
      _exit (EXIT_FAILURE);
 
    if (close_stream (stderr) != 0)
      _exit (EXIT_FAILURE);
+
+   errno = err;
 }
 
 /* ARGSUSED */
 }
 
 /* ARGSUSED */
index 93d514f..e2e3646 100644 (file)
@@ -236,7 +236,11 @@ enum font_property_index
 #define FONT_SET_STYLE(font, prop, val)        \
   ASET ((font), prop, make_number (font_style_to_value (prop, val, true)))
 
 #define FONT_SET_STYLE(font, prop, val)        \
   ASET ((font), prop, make_number (font_style_to_value (prop, val, true)))
 
+#ifndef MSDOS
 #define FONT_WIDTH(f) ((f)->max_width)
 #define FONT_WIDTH(f) ((f)->max_width)
+#else
+#define FONT_WIDTH(f) 1
+#endif
 #define FONT_HEIGHT(f) ((f)->height)
 #define FONT_BASE(f) ((f)->ascent)
 #define FONT_DESCENT(f) ((f)->descent)
 #define FONT_HEIGHT(f) ((f)->height)
 #define FONT_BASE(f) ((f)->ascent)
 #define FONT_DESCENT(f) ((f)->descent)
index 6232c32..edc442b 100644 (file)
@@ -2533,11 +2533,13 @@ CHECK_WINDOW (Lisp_Object x)
 {
   CHECK_TYPE (WINDOWP (x), Qwindowp, x);
 }
 {
   CHECK_TYPE (WINDOWP (x), Qwindowp, x);
 }
+#ifdef subprocesses
 INLINE void
 CHECK_PROCESS (Lisp_Object x)
 {
   CHECK_TYPE (PROCESSP (x), Qprocessp, x);
 }
 INLINE void
 CHECK_PROCESS (Lisp_Object x)
 {
   CHECK_TYPE (PROCESSP (x), Qprocessp, x);
 }
+#endif
 INLINE void
 CHECK_NATNUM (Lisp_Object x)
 {
 INLINE void
 CHECK_NATNUM (Lisp_Object x)
 {
@@ -4142,7 +4144,6 @@ extern bool running_asynch_code;
 
 /* Defined in process.c.  */
 extern Lisp_Object QCtype, Qlocal;
 
 /* Defined in process.c.  */
 extern Lisp_Object QCtype, Qlocal;
-extern Lisp_Object Qprocessp;
 extern void kill_buffer_processes (Lisp_Object);
 extern bool wait_reading_process_output (intmax_t, int, int, bool,
                                         Lisp_Object,
 extern void kill_buffer_processes (Lisp_Object);
 extern bool wait_reading_process_output (intmax_t, int, int, bool,
                                         Lisp_Object,
index 9c08ff1..468f281 100644 (file)
@@ -415,7 +415,8 @@ single_menu_item (Lisp_Object key, Lisp_Object item, Lisp_Object dummy, void *sk
        item_string = concat2 (prefix, item_string);
   }
 
        item_string = concat2 (prefix, item_string);
   }
 
-  if (FRAME_TERMCAP_P (XFRAME (Vmenu_updating_frame))
+  if ((FRAME_TERMCAP_P (XFRAME (Vmenu_updating_frame))
+       || FRAME_MSDOS_P (XFRAME (Vmenu_updating_frame)))
       && !NILP (map))
     /* Indicate visually that this is a submenu.  */
     item_string = concat2 (item_string, build_string (" >"));
       && !NILP (map))
     /* Indicate visually that this is a submenu.  */
     item_string = concat2 (item_string, build_string (" >"));
@@ -1442,6 +1443,7 @@ no quit occurs and `x-popup-menu' returns nil.  */)
                            keymaps, title, &error_name);
   else
 #endif
                            keymaps, title, &error_name);
   else
 #endif
+#ifndef MSDOS
   if (FRAME_TERMCAP_P (f))
     {
       ptrdiff_t count1 = SPECPDL_INDEX ();
   if (FRAME_TERMCAP_P (f))
     {
       ptrdiff_t count1 = SPECPDL_INDEX ();
@@ -1453,6 +1455,7 @@ no quit occurs and `x-popup-menu' returns nil.  */)
                                 kbd_menu_navigation, &error_name);
       unbind_to (count1, Qnil);
     }
                                 kbd_menu_navigation, &error_name);
       unbind_to (count1, Qnil);
     }
+#endif
 
 #ifdef HAVE_NS
   unbind_to (specpdl_count, Qnil);
 
 #ifdef HAVE_NS
   unbind_to (specpdl_count, Qnil);
index 1af66b3..010a0a3 100644 (file)
@@ -50,6 +50,8 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 #include <unistd.h>     /* for chdir, dup, dup2, etc. */
 #include <dir.h>        /* for getdisk */
 #pragma pack(0)                 /* dir.h does a pack(4), which isn't GCC's default */
 #include <unistd.h>     /* for chdir, dup, dup2, etc. */
 #include <dir.h>        /* for getdisk */
 #pragma pack(0)                 /* dir.h does a pack(4), which isn't GCC's default */
+#undef opendir
+#include <dirent.h>     /* for opendir */
 #include <fcntl.h>
 #include <io.h>                 /* for setmode */
 #include <dpmi.h>       /* for __dpmi_xxx stuff */
 #include <fcntl.h>
 #include <io.h>                 /* for setmode */
 #include <dpmi.h>       /* for __dpmi_xxx stuff */
@@ -1883,18 +1885,6 @@ dos_get_saved_screen (char **screen, int *rows, int *cols)
 #endif
 }
 
 #endif
 }
 
-#ifndef HAVE_X_WINDOWS
-
-/* We are not X, but we can emulate it well enough for our needs... */
-void
-check_window_system (void)
-{
-  if (! FRAME_MSDOS_P (SELECTED_FRAME ()))
-    error ("Not running under a window system");
-}
-
-#endif
-
 \f
 /* ----------------------- Keyboard control ----------------------
  *
 \f
 /* ----------------------- Keyboard control ----------------------
  *
@@ -3875,6 +3865,9 @@ int setpgid (int pid, int pgid) { return 0; }
 int setpriority (int x, int y, int z) { return 0; }
 pid_t setsid (void) { return 0; }
 
 int setpriority (int x, int y, int z) { return 0; }
 pid_t setsid (void) { return 0; }
 
+\f
+/* Gnulib support and emulation.  */
+
 #if __DJGPP__ == 2 && __DJGPP_MINOR__ < 4
 ssize_t
 readlink (const char *name, char *dummy1, size_t dummy2)
 #if __DJGPP__ == 2 && __DJGPP_MINOR__ < 4
 ssize_t
 readlink (const char *name, char *dummy1, size_t dummy2)
@@ -3886,6 +3879,38 @@ readlink (const char *name, char *dummy1, size_t dummy2)
 }
 #endif
 
 }
 #endif
 
+/* dir_pathname is set by sys_opendir and used in readlinkat and in
+   fstatat, when they get a special FD of zero, which means use the
+   last directory opened by opendir.  */
+static char dir_pathname[MAXPATHLEN];
+DIR *
+sys_opendir (const char *dirname)
+{
+  _fixpath (dirname, dir_pathname);
+  return opendir (dirname);
+}
+
+ssize_t
+readlinkat (int fd, char const *name, char *buffer, size_t buffer_size)
+{
+  /* Rely on a hack: an open directory is modeled as file descriptor 0,
+     as in fstatat.  FIXME: Add proper support for readlinkat.  */
+  char fullname[MAXPATHLEN];
+
+  if (fd != AT_FDCWD)
+    {
+      if (strlen (dir_pathname) + strlen (name) + 1 >= MAXPATHLEN)
+       {
+         errno = ENAMETOOLONG;
+         return -1;
+       }
+      sprintf (fullname, "%s/%s", dir_pathname, name);
+      name = fullname;
+    }
+
+  return readlink (name, buffer, buffer_size);
+}
+
 char *
 careadlinkat (int fd, char const *filename,
               char *buffer, size_t buffer_size,
 char *
 careadlinkat (int fd, char const *filename,
               char *buffer, size_t buffer_size,
@@ -3913,6 +3938,82 @@ careadlinkat (int fd, char const *filename,
   return buffer;
 }
 
   return buffer;
 }
 
+/* Emulate faccessat(2).  */
+int
+faccessat (int dirfd, const char * path, int mode, int flags)
+{
+  /* We silently ignore FLAGS.  */
+  flags = flags;
+
+  if (dirfd != AT_FDCWD
+      && !(IS_DIRECTORY_SEP (path[0])
+          || IS_DEVICE_SEP (path[1])))
+    {
+      errno = EBADF;
+      return -1;
+    }
+
+  return access (path, mode);
+}
+
+/* Emulate fstatat.  */
+int
+fstatat (int fd, char const *name, struct stat *st, int flags)
+{
+  /* Rely on a hack: an open directory is modeled as file descriptor 0.
+     This is good enough for the current usage in Emacs, but is fragile.
+
+     FIXME: Add proper support for fdopendir, fstatat, readlinkat.
+     Gnulib does this and can serve as a model.  */
+  char fullname[MAXPATHLEN];
+
+  flags = flags;
+
+  if (fd != AT_FDCWD)
+    {
+      char lastc = dir_pathname[strlen (dir_pathname) - 1];
+
+      if (strlen (dir_pathname) + strlen (name) + IS_DIRECTORY_SEP (lastc)
+         >= MAXPATHLEN)
+       {
+         errno = ENAMETOOLONG;
+         return -1;
+       }
+
+      sprintf (fullname, "%s%s%s",
+              dir_pathname, IS_DIRECTORY_SEP (lastc) ? "" : "/", name);
+      name = fullname;
+    }
+
+#if __DJGPP__ > 2 || __DJGPP_MINOR__ > 3
+  return (flags & AT_SYMLINK_NOFOLLOW) ? lstat (name, st) : stat (name, st);
+#else
+  return stat (name, st);
+#endif
+}
+
+#if __DJGPP__ == 2 && __DJGPP_MINOR__ < 4
+/* Emulate the Posix unsetenv.  DJGPP v2.04 has this in the library.  */
+int
+unsetenv (const char *name)
+{
+  char *var;
+  size_t name_len;
+  int retval;
+
+  if (name == NULL || *name == '\0' || strchr (name, '=') != NULL)
+    {
+      errno = EINVAL;
+      return -1;
+    }
+
+  /* DJGPP's 'putenv' deletes the entry if it doesn't include '='.  */
+  putenv (name);
+
+  return 0;
+}
+#endif
+
 \f
 #if __DJGPP__ == 2 && __DJGPP_MINOR__ < 2
 
 \f
 #if __DJGPP__ == 2 && __DJGPP_MINOR__ < 2
 
@@ -4038,7 +4139,7 @@ dos_yield_time_slice (void)
 /* We don't have to call timer_check here
    because wait_reading_process_output takes care of that.  */
 int
 /* We don't have to call timer_check here
    because wait_reading_process_output takes care of that.  */
 int
-sys_select (int nfds, SELECT_TYPE *rfds, SELECT_TYPE *wfds, SELECT_TYPE *efds,
+sys_select (int nfds, fd_set *rfds, fd_set *wfds, fd_set *efds,
            struct timespec *timeout, void *ignored)
 {
   int check_input;
            struct timespec *timeout, void *ignored)
 {
   int check_input;
index 5d5f5df..e863c7c 100644 (file)
@@ -41,9 +41,25 @@ void mouse_on (void);
 void mouse_off (void);
 void mouse_moveto (int, int);
 
 void mouse_off (void);
 void mouse_moveto (int, int);
 
+#include <sys/types.h>
+#include <sys/stat.h>
+
 #if __DJGPP__ == 2 && __DJGPP_MINOR__ < 4
 int readlink (const char *, char *, size_t);
 #endif
 #if __DJGPP__ == 2 && __DJGPP_MINOR__ < 4
 int readlink (const char *, char *, size_t);
 #endif
+ssize_t readlinkat (int, const char *, char *, size_t);
+int fstatat (int, char const *, struct stat *, int);
+int unsetenv (const char *);
+
+/* Constants.  */
+#define EINPROGRESS 112
+/* Gnulib sets O_CLOEXEC to O_NOINHERIT, which gets in the way when we
+   need to redirect standard handles for subprocesses using temporary
+   files created by mkostemp, see callproc.c.  */
+#ifdef O_CLOEXEC
+# undef O_CLOEXEC
+#endif
+#define O_CLOEXEC 0
 
 \f
 #ifndef HAVE_X_WINDOWS
 
 \f
 #ifndef HAVE_X_WINDOWS
@@ -83,7 +99,6 @@ extern void x_set_menu_bar_lines (struct frame *, Lisp_Object, Lisp_Object);
 #define XMenuSetAEQ (void)
 #define XMenuSetFreeze (void)
 #define XMenuRecompute (void)
 #define XMenuSetAEQ (void)
 #define XMenuSetFreeze (void)
 #define XMenuRecompute (void)
-#define FONT_WIDTH(foo) 1
 #define XM_FAILURE -1
 #define XM_SUCCESS 1
 #define XM_NO_SELECT 2
 #define XM_FAILURE -1
 #define XM_SUCCESS 1
 #define XM_NO_SELECT 2
index fd34eb0..2c66b9e 100644 (file)
@@ -134,6 +134,29 @@ extern int sys_select (int, fd_set *, fd_set *, fd_set *,
                       struct timespec *, void *);
 #endif
 
                       struct timespec *, void *);
 #endif
 
+/* Work around GCC 4.7.0 bug with strict overflow checking; see
+   <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52904>.
+   These lines can be removed once the GCC bug is fixed.  */
+#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
+# pragma GCC diagnostic ignored "-Wstrict-overflow"
+#endif
+
+Lisp_Object Qeuid, Qegid, Qcomm, Qstate, Qppid, Qpgrp, Qsess, Qttname, Qtpgid;
+Lisp_Object Qminflt, Qmajflt, Qcminflt, Qcmajflt, Qutime, Qstime, Qcstime;
+Lisp_Object Qcutime, Qpri, Qnice, Qthcount, Qstart, Qvsize, Qrss, Qargs;
+Lisp_Object Quser, Qgroup, Qetime, Qpcpu, Qpmem, Qtime, Qctime;
+Lisp_Object QCname, QCtype;
+\f
+/* True if keyboard input is on hold, zero otherwise.  */
+
+static bool kbd_is_on_hold;
+
+/* Nonzero means don't run process sentinels.  This is used
+   when exiting.  */
+bool inhibit_sentinels;
+
+#ifdef subprocesses
+
 #ifndef SOCK_CLOEXEC
 # define SOCK_CLOEXEC 0
 #endif
 #ifndef SOCK_CLOEXEC
 # define SOCK_CLOEXEC 0
 #endif
@@ -165,29 +188,6 @@ process_socket (int domain, int type, int protocol)
 # define socket(domain, type, protocol) process_socket (domain, type, protocol)
 #endif
 
 # define socket(domain, type, protocol) process_socket (domain, type, protocol)
 #endif
 
-/* Work around GCC 4.7.0 bug with strict overflow checking; see
-   <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52904>.
-   These lines can be removed once the GCC bug is fixed.  */
-#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
-# pragma GCC diagnostic ignored "-Wstrict-overflow"
-#endif
-
-Lisp_Object Qeuid, Qegid, Qcomm, Qstate, Qppid, Qpgrp, Qsess, Qttname, Qtpgid;
-Lisp_Object Qminflt, Qmajflt, Qcminflt, Qcmajflt, Qutime, Qstime, Qcstime;
-Lisp_Object Qcutime, Qpri, Qnice, Qthcount, Qstart, Qvsize, Qrss, Qargs;
-Lisp_Object Quser, Qgroup, Qetime, Qpcpu, Qpmem, Qtime, Qctime;
-Lisp_Object QCname, QCtype;
-\f
-/* True if keyboard input is on hold, zero otherwise.  */
-
-static bool kbd_is_on_hold;
-
-/* Nonzero means don't run process sentinels.  This is used
-   when exiting.  */
-bool inhibit_sentinels;
-
-#ifdef subprocesses
-
 Lisp_Object Qprocessp;
 static Lisp_Object Qrun, Qstop, Qsignal;
 static Lisp_Object Qopen, Qclosed, Qconnect, Qfailed, Qlisten;
 Lisp_Object Qprocessp;
 static Lisp_Object Qrun, Qstop, Qsignal;
 static Lisp_Object Qopen, Qclosed, Qconnect, Qfailed, Qlisten;
@@ -7058,6 +7058,7 @@ integer or floating point values.
   return system_process_attributes (pid);
 }
 
   return system_process_attributes (pid);
 }
 
+#ifdef subprocesses
 /* Arrange to catch SIGCHLD if this hasn't already been arranged.
    Invoke this after init_process_emacs, and after glib and/or GNUstep
    futz with the SIGCHLD handler, but before Emacs forks any children.
 /* Arrange to catch SIGCHLD if this hasn't already been arranged.
    Invoke this after init_process_emacs, and after glib and/or GNUstep
    futz with the SIGCHLD handler, but before Emacs forks any children.
@@ -7082,6 +7083,7 @@ catch_child_signal (void)
         : old_action.sa_handler);
   unblock_child_signal ();
 }
         : old_action.sa_handler);
   unblock_child_signal ();
 }
+#endif /* subprocesses */
 
 \f
 /* This is not called "init_process" because that is the name of a
 
 \f
 /* This is not called "init_process" because that is the name of a
@@ -7288,10 +7290,12 @@ syms_of_process (void)
   DEFSYM (Qcutime, "cutime");
   DEFSYM (Qcstime, "cstime");
   DEFSYM (Qctime, "ctime");
   DEFSYM (Qcutime, "cutime");
   DEFSYM (Qcstime, "cstime");
   DEFSYM (Qctime, "ctime");
+#ifdef subprocesses
   DEFSYM (Qinternal_default_process_sentinel,
          "internal-default-process-sentinel");
   DEFSYM (Qinternal_default_process_filter,
          "internal-default-process-filter");
   DEFSYM (Qinternal_default_process_sentinel,
          "internal-default-process-sentinel");
   DEFSYM (Qinternal_default_process_filter,
          "internal-default-process-filter");
+#endif
   DEFSYM (Qpri, "pri");
   DEFSYM (Qnice, "nice");
   DEFSYM (Qthcount, "thcount");
   DEFSYM (Qpri, "pri");
   DEFSYM (Qnice, "nice");
   DEFSYM (Qthcount, "thcount");
index 6ec8eec..4e86dc9 100644 (file)
@@ -1506,7 +1506,9 @@ emacs_sigaction_init (struct sigaction *action, signal_handler_t handler)
   /* When handling a signal, block nonfatal system signals that are caught
      by Emacs.  This makes race conditions less likely.  */
   sigaddset (&action->sa_mask, SIGALRM);
   /* When handling a signal, block nonfatal system signals that are caught
      by Emacs.  This makes race conditions less likely.  */
   sigaddset (&action->sa_mask, SIGALRM);
+#ifdef SIGCHLD
   sigaddset (&action->sa_mask, SIGCHLD);
   sigaddset (&action->sa_mask, SIGCHLD);
+#endif
 #ifdef SIGDANGER
   sigaddset (&action->sa_mask, SIGDANGER);
 #endif
 #ifdef SIGDANGER
   sigaddset (&action->sa_mask, SIGDANGER);
 #endif
@@ -1711,7 +1713,9 @@ init_signals (bool dumping)
 # ifdef SIGBUS
       sys_siglist[SIGBUS] = "Bus error";
 # endif
 # ifdef SIGBUS
       sys_siglist[SIGBUS] = "Bus error";
 # endif
+# ifdef SIGCHLD
       sys_siglist[SIGCHLD] = "Child status changed";
       sys_siglist[SIGCHLD] = "Child status changed";
+# endif
 # ifdef SIGCONT
       sys_siglist[SIGCONT] = "Continued";
 # endif
 # ifdef SIGCONT
       sys_siglist[SIGCONT] = "Continued";
 # endif
@@ -2182,6 +2186,9 @@ emacs_fopen (char const *file, char const *mode)
 int
 emacs_pipe (int fd[2])
 {
 int
 emacs_pipe (int fd[2])
 {
+#ifdef MSDOS
+  return pipe (fd);
+#else  /* !MSDOS */
   int result = pipe2 (fd, O_CLOEXEC);
   if (! O_CLOEXEC && result == 0)
     {
   int result = pipe2 (fd, O_CLOEXEC);
   if (! O_CLOEXEC && result == 0)
     {
@@ -2189,6 +2196,7 @@ emacs_pipe (int fd[2])
       fcntl (fd[1], F_SETFD, FD_CLOEXEC);
     }
   return result;
       fcntl (fd[1], F_SETFD, FD_CLOEXEC);
     }
   return result;
+#endif /* !MSDOS */
 }
 
 /* Approximate posix_close and POSIX_CLOSE_RESTART well enough for Emacs.
 }
 
 /* Approximate posix_close and POSIX_CLOSE_RESTART well enough for Emacs.
index 773e85f..9e6cfe2 100644 (file)
@@ -500,7 +500,7 @@ static ptrdiff_t encode_terminal_dst_size;
    Set CODING->produced to the byte-length of the resulting byte
    sequence, and return a pointer to that byte sequence.  */
 
    Set CODING->produced to the byte-length of the resulting byte
    sequence, and return a pointer to that byte sequence.  */
 
-#ifndef WINDOWSNT
+#ifndef DOS_NT
 static
 #endif
 unsigned char *
 static
 #endif
 unsigned char *
@@ -4557,6 +4557,7 @@ bigger, or it may make it blink, or it may do nothing at all.  */);
   encode_terminal_src = NULL;
   encode_terminal_dst = NULL;
 
   encode_terminal_src = NULL;
   encode_terminal_dst = NULL;
 
+#ifndef MSDOS
   DEFSYM (Qtty_menu_next_item, "tty-menu-next-item");
   DEFSYM (Qtty_menu_prev_item, "tty-menu-prev-item");
   DEFSYM (Qtty_menu_next_menu, "tty-menu-next-menu");
   DEFSYM (Qtty_menu_next_item, "tty-menu-next-item");
   DEFSYM (Qtty_menu_prev_item, "tty-menu-prev-item");
   DEFSYM (Qtty_menu_next_menu, "tty-menu-next-menu");
@@ -4566,4 +4567,5 @@ bigger, or it may make it blink, or it may do nothing at all.  */);
   DEFSYM (Qtty_menu_exit, "tty-menu-exit");
   DEFSYM (Qtty_menu_mouse_movement, "tty-menu-mouse-movement");
   DEFSYM (Qtty_menu_navigation_map, "tty-menu-navigation-map");
   DEFSYM (Qtty_menu_exit, "tty-menu-exit");
   DEFSYM (Qtty_menu_mouse_movement, "tty-menu-mouse-movement");
   DEFSYM (Qtty_menu_navigation_map, "tty-menu-navigation-map");
+#endif
 }
 }
index 961b321..708351d 100644 (file)
@@ -643,7 +643,7 @@ extern void delete_terminal (struct terminal *);
 /* The initial terminal device, created by initial_term_init.  */
 extern struct terminal *initial_terminal;
 
 /* The initial terminal device, created by initial_term_init.  */
 extern struct terminal *initial_terminal;
 
-#ifdef WINDOWSNT
+#ifdef DOS_NT
 extern unsigned char *encode_terminal_code (struct glyph *, int,
                                            struct coding_system *);
 #endif
 extern unsigned char *encode_terminal_code (struct glyph *, int,
                                            struct coding_system *);
 #endif
index 5710ac0..043f334 100644 (file)
@@ -65,6 +65,8 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 #include <crt0.h>   /* for _crt0_startup_flags and its bits */
 #include <sys/exceptn.h>
 static int save_djgpp_startup_flags;
 #include <crt0.h>   /* for _crt0_startup_flags and its bits */
 #include <sys/exceptn.h>
 static int save_djgpp_startup_flags;
+#include <libc/atexit.h>
+static struct __atexit *save_atexit_ptr;
 #define filehdr external_filehdr
 #define scnhdr external_scnhdr
 #define syment external_syment
 #define filehdr external_filehdr
 #define scnhdr external_scnhdr
 #define syment external_syment
@@ -82,7 +84,7 @@ struct aouthdr
   unsigned long                text_start;/* base of text used for this file */
   unsigned long                data_start;/* base of data used for this file */
 };
   unsigned long                text_start;/* base of text used for this file */
   unsigned long                data_start;/* base of data used for this file */
 };
-#endif /* not MSDOS */
+#endif /* MSDOS */
 #else  /* not HAVE_COFF_H */
 #include <a.out.h>
 #endif /* not HAVE_COFF_H */
 #else  /* not HAVE_COFF_H */
 #include <a.out.h>
 #endif /* not HAVE_COFF_H */
@@ -368,6 +370,12 @@ copy_text_and_data (int new, int a_out)
      and which might change the way that dumped Emacs works.  */
   save_djgpp_startup_flags = _crt0_startup_flags;
   _crt0_startup_flags &= ~(_CRT0_FLAG_NO_LFN | _CRT0_FLAG_NEARPTR);
      and which might change the way that dumped Emacs works.  */
   save_djgpp_startup_flags = _crt0_startup_flags;
   _crt0_startup_flags &= ~(_CRT0_FLAG_NO_LFN | _CRT0_FLAG_NEARPTR);
+
+  /* Zero out the 'atexit' chain in the dumped executable, to avoid
+     calling the atexit functions twice.  (emacs.c:main installs an
+     atexit function.)  */
+  save_atexit_ptr = __atexit_ptr;
+  __atexit_ptr = NULL;
 #endif
 
   lseek (new, (long) text_scnptr, 0);
 #endif
 
   lseek (new, (long) text_scnptr, 0);
@@ -386,6 +394,9 @@ copy_text_and_data (int new, int a_out)
 
   /* Restore the startup flags.  */
   _crt0_startup_flags = save_djgpp_startup_flags;
 
   /* Restore the startup flags.  */
   _crt0_startup_flags = save_djgpp_startup_flags;
+
+  /* Restore the atexit chain.  */
+  __atexit_ptr = save_atexit_ptr;
 #endif
 
 
 #endif