From bf6b4923f7eedea193dee2130bf7fa597a5932d4 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Wed, 16 Apr 2014 16:27:28 +0300 Subject: [PATCH] Fix the MSDOS build. 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) : 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. --- ChangeLog | 4 + config.bat | 18 +- lib-src/ChangeLog | 5 + lib-src/update-game-score.c | 4 +- lisp/ChangeLog | 5 + lisp/term/pc-win.el | 25 +- msdos/ChangeLog | 15 ++ msdos/INSTALL | 58 ++--- msdos/inttypes.h | 1 + msdos/sed1v2.inp | 37 ++- msdos/sed2v2.inp | 1 + msdos/sed3v2.inp | 10 +- msdos/sed6.inp | 2 +- msdos/sedleim.inp | 53 +--- msdos/sedlibmk.inp | 468 +++++++++--------------------------- msdos/sedlisp.inp | 3 +- src/ChangeLog | 59 +++++ src/callproc.c | 20 +- src/conf_post.h | 10 +- src/dired.c | 4 + src/emacs.c | 7 + src/font.h | 4 + src/lisp.h | 3 +- src/menu.c | 5 +- src/msdos.c | 127 +++++++++- src/msdos.h | 17 +- src/process.c | 50 ++-- src/sysdep.c | 8 + src/term.c | 4 +- src/termhooks.h | 2 +- src/unexcoff.c | 13 +- 31 files changed, 536 insertions(+), 506 deletions(-) diff --git a/ChangeLog b/ChangeLog index f70e461cd5b..e23703edd07 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2014-04-16 Eli Zaretskii + + * config.bat: Update for Emacs 24.4. + 2014-04-13 Paul Eggert Port to IRIX 6.5 (Bug#9684). diff --git a/config.bat b/config.bat index 8af3756222b..cc354478ee9 100644 --- a/config.bat +++ b/config.bat @@ -264,8 +264,14 @@ cd lib Rem Rename files like djtar on plain DOS filesystem would. If Exist build-aux\snippet\c++defs.h update build-aux/snippet/c++defs.h build-aux/snippet/cxxdefs.h If Exist alloca.in.h update alloca.in.h alloca.in-h +If Exist byteswap.in.h update byteswap.in.h byteswap.in-h +If Exist dirent.in.h update dirent.in.h dirent.in-h +If Exist errno.in.h update errno.in.h errno.in-h If Exist execinfo.in.h update execinfo.in.h execinfo.in-h +If Exist fcntl.in.h update fcntl.in.h fcntl.in-h If Exist getopt.in.h update getopt.in.h getopt.in-h +If Exist inttypes.in.h update inttypes.in.h inttypes.in-h +If Exist stdarg.in.h update stdarg.in.h stdarg.in-h If Exist stdalign.in.h update stdalign.in.h stdalign.in-h If Exist stdbool.in.h update stdbool.in.h stdbool.in-h If Exist signal.in.h update signal.in.h signal.in-h @@ -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 If Exist stdio.in.h update stdio.in.h stdio.in-h If Exist stdlib.in.h update stdlib.in.h stdlib.in-h +If Exist string.in.h update string.in.h string.in-h +If Exist sys_select.in.h update sys_select.in.h sys_select.in-h If Exist sys_stat.in.h update sys_stat.in.h sys_stat.in-h If Exist sys_types.in.h update sys_types.in.h sys_types.in-h +If Exist sys_time.in.h update sys_time.in.h sys_time.in-h If Exist time.in.h update time.in.h time.in-h If Exist unistd.in.h update unistd.in.h unistd.in-h If Exist Makefile.in sed -f ../msdos/sedlibcf.inp < Makefile.in > makefile.tmp @@ -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 cd .. rem ---------------------------------------------------------------------- -If not Exist leim\quail\latin-pre.el goto maindir Echo Configuring the leim directory... cd leim sed -f ../msdos/sedleim.inp < Makefile.in > Makefile cd .. rem ---------------------------------------------------------------------- -:maindir +If Not Exist admin\unidata goto noadmin +Echo Configuring the admin/unidata directory... +cd admin\unidata +sed -f ../../msdos/sedadmin.inp < Makefile.in > Makefile +cd ..\.. +:noadmin +rem ---------------------------------------------------------------------- Echo Configuring the main directory... If Exist .dir-locals.el update .dir-locals.el _dir-locals.el If Exist src\.dbxinit update src/.dbxinit src/_dbxinit diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog index 7e7f6bf3771..5a783d32660 100644 --- a/lib-src/ChangeLog +++ b/lib-src/ChangeLog @@ -1,3 +1,8 @@ +2014-04-16 Eli Zaretskii + + * update-game-score.c (write_scores): Condition fchmod call on + DOS_NT, not WINDOWSNT. + 2014-03-10 Juanma Barranquero * emacsclient.c (main): #ifdef out previous change on Windows. diff --git a/lib-src/update-game-score.c b/lib-src/update-game-score.c index ad591cca87a..cb6fdf73590 100644 --- a/lib-src/update-game-score.c +++ b/lib-src/update-game-score.c @@ -443,7 +443,7 @@ write_scores (const char *filename, const struct score_entry *scores, fd = mkostemp (tempfile, 0); if (fd < 0) return -1; -#ifndef WINDOWSNT +#ifndef DOS_NT 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; -#ifdef WINDOWSNT +#ifdef DOS_NT if (chmod (filename, 0644) < 0) return -1; #endif diff --git a/lisp/ChangeLog b/lisp/ChangeLog index d8e66425d75..50dcc78c947 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2014-04-16 Eli Zaretskii + + * term/pc-win.el (x-list-fonts, x-get-selection-value): Provide + doc strings, as required by snarf-documentation. + 2014-04-15 Stefan Monnier * ps-def.el (ps-generate-postscript-with-faces1): Use the new `sorted' diff --git a/lisp/term/pc-win.el b/lisp/term/pc-win.el index 00b860f8dcc..f24a54fbe28 100644 --- a/lisp/term/pc-win.el +++ b/lisp/term/pc-win.el @@ -165,6 +165,27 @@ created." ;; 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"))) @@ -232,9 +253,9 @@ is not used)." (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 () + "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. diff --git a/msdos/ChangeLog b/msdos/ChangeLog index 65122a01659..f1d6c322bc2 100644 --- a/msdos/ChangeLog +++ b/msdos/ChangeLog @@ -1,3 +1,18 @@ +2014-04-16 Eli Zaretskii + + * 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 * autogen/Makefile.in: Update copyright year. diff --git a/msdos/INSTALL b/msdos/INSTALL index 815da38bd77..de950b89def 100644 --- a/msdos/INSTALL +++ b/msdos/INSTALL @@ -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. -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 -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 -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 @@ -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. -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 @@ -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.) -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 @@ -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. -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, diff --git a/msdos/inttypes.h b/msdos/inttypes.h index 9f59d4e1a2e..7469ea07b71 100644 --- a/msdos/inttypes.h +++ b/msdos/inttypes.h @@ -32,6 +32,7 @@ along with GNU Emacs. If not, see . */ #define strtoumax strtoull #define strtoimax strtoll #define PRIuMAX "llu" +#define PRIdMAX "lld" #endif /* __DJGPP__ < 2.04 */ #endif diff --git a/msdos/sed1v2.inp b/msdos/sed1v2.inp index c7e770cb3ee..77c74fe2f0c 100644 --- a/msdos/sed1v2.inp +++ b/msdos/sed1v2.inp @@ -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_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@// +/^LIB_ACL *=/s/@LIB_ACL@// +/^LIB_EACCESS *=/s/@LIB_EACCESS@// +/^LIB_FDATASYNC *=/s/@LIB_FDATASYNC@// 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@// +/^NOTIFY_OBJ *=/s/@NOTIFY_OBJ@// /^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/ @@ -83,6 +89,7 @@ s/ *@LIBXPM@// /^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@// @@ -114,12 +121,19 @@ s/ *@LIBXPM@// /^XMENU_OBJ *=/s/@XMENU_OBJ@/xmenu.o/ /^FONT_OBJ *=/s/@FONT_OBJ@// /^LIBGPM *=/s/@LIBGPM@// +/^LIBZ *=/s/@LIBZ@// /^EXEEXT *=/s/@EXEEXT@/.exe/ +/^MKDIR_P *=/s/@MKDIR_P@/gmkdir -p/ /^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/ +/^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)/ @@ -130,9 +144,15 @@ s/ *@LIBXPM@// /^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@// +/^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.*>.*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! /^[ ]*$/d @@ -142,6 +162,7 @@ s/ *@LIBXPM@// /^ *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\ @@ -156,15 +177,17 @@ s/ @true *$/ @rem/ 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) -/^ 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`|.| @@ -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 | +/^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 diff --git a/msdos/sed2v2.inp b/msdos/sed2v2.inp index 421ccd4be05..806e2b416ea 100644 --- a/msdos/sed2v2.inp +++ b/msdos/sed2v2.inp @@ -132,6 +132,7 @@ s/^#undef HAVE_STRTOULL *$/#define HAVE_STRTOULL 1/ #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. diff --git a/msdos/sed3v2.inp b/msdos/sed3v2.inp index dcc09ddeb3c..09f2f089831 100644 --- a/msdos/sed3v2.inp +++ b/msdos/sed3v2.inp @@ -42,9 +42,17 @@ s/-DVERSION[^ ]* // /^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@!! -/^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[^ ]* *// diff --git a/msdos/sed6.inp b/msdos/sed6.inp index 32f39dd543c..a15f4236f57 100644 --- a/msdos/sed6.inp +++ b/msdos/sed6.inp @@ -42,5 +42,5 @@ export MAKEINFO := $(MAKEINFO) $(MAKEINFO_OPTS) 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| diff --git a/msdos/sedleim.inp b/msdos/sedleim.inp index 07aa3c6d2fb..fab8094a7e9 100644 --- a/msdos/sedleim.inp +++ b/msdos/sedleim.inp @@ -19,56 +19,21 @@ SHELL=/xyzzy/command\ MAKESHELL=/xyzzy/command -/^version=/d -/^prefix=/d -/^datadir=/s|@datadir@|../..| /^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\ -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)\\| diff --git a/msdos/sedlibmk.inp b/msdos/sedlibmk.inp index 40737fa5133..badb30b0b65 100644 --- a/msdos/sedlibmk.inp +++ b/msdos/sedlibmk.inp @@ -18,15 +18,25 @@ # # 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 -# 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. @@ -45,10 +55,10 @@ # 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]*@// @@ -57,7 +67,7 @@ # # . 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 @@ -68,12 +78,14 @@ # 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 -# 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 && \ @@ -93,6 +105,16 @@ # 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 '' @@ -101,9 +123,9 @@ # 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} # @@ -115,6 +137,8 @@ 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]*@// @@ -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@// +/^PROFILING_CFLAGS *=/s/@PROFILING_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/ # -# 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 -# 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_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_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_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_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_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_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]*@// +# +# Edit the HAVE_foo variables /^HAVE_ATOLL *=/s/@HAVE_ATOLL@/0/ -/^HAVE_CANONICALIZE_FILE_NAME *=/s/@HAVE_CANONICALIZE_FILE_NAME@/0/ /^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_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_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_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_FTELLO *=/s/@HAVE_FTELLO@/0/ /^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_GETOPT_H *=/s/@HAVE_GETOPT_H@/0/ /^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_LCHMOD *=/s/@HAVE_LCHMOD@/0/ /^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_MKDIRAT *=/s/@HAVE_MKDIRAT@/0/ -/^HAVE_MKDTEMP *=/s/@HAVE_MKDTEMP@/0/ +/^HAVE_MEMCHR *=/s/@HAVE_MEMCHR@/1/ /^HAVE_MKFIFO *=/s/@HAVE_MKFIFO@/1/ -/^HAVE_MKFIFOAT *=/s/@HAVE_MKFIFOAT@/0/ /^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_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_PIPE2 *=/s/@HAVE_PIPE2@/0/ /^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_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_SETHOSTNAME *=/s/@HAVE_SETHOSTNAME@/0/ /^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_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_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_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_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_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_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_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_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_XSERVER *=/s/@HAVE_XSERVER@/0/ /^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]*@// @@ -459,6 +267,9 @@ am__cd = cd /^MAKEINFO *=/s/@MAKEINFO@/makeinfo/ # MKDIR_P lines are edited further below /^MKDIR_P *=/s/@MKDIR_P@// +/^NEXT_AS_FIRST_DIRECTIVE_DIRENT_H *=/s/@[^@\n]*@// +/^NEXT_AS_FIRST_DIRECTIVE_ERRNO_H *=/s/@[^@\n]*@// +/^NEXT_AS_FIRST_DIRECTIVE_FCNTL_H *=/s/@[^@\n]*@// /^NEXT_AS_FIRST_DIRECTIVE_GETOPT_H *=/s/@[^@\n]*@// /^NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H *=/s/@[^@\n]*@// /^NEXT_AS_FIRST_DIRECTIVE_STDARG_H *=/s/@[^@\n]*@// @@ -466,12 +277,16 @@ am__cd = cd /^NEXT_AS_FIRST_DIRECTIVE_STDINT_H *=/s/@[^@\n]*@// /^NEXT_AS_FIRST_DIRECTIVE_STDIO_H *=/s/@[^@\n]*@// /^NEXT_AS_FIRST_DIRECTIVE_STDLIB_H *=/s/@[^@\n]*@// +/^NEXT_AS_FIRST_DIRECTIVE_STRING_H *=/s/@[^@\n]*@// /^NEXT_AS_FIRST_DIRECTIVE_SYS_SELECT_H *=/s/@[^@\n]*@// /^NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H *=/s!@[^@\n]*@!! /^NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H *=/s/@[^@\n]*@// /^NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H *=/s!@[^@\n]*@!! /^NEXT_AS_FIRST_DIRECTIVE_TIME_H *=/s/@[^@\n]*@// /^NEXT_AS_FIRST_DIRECTIVE_UNISTD_H *=/s/@[^@\n]*@// +/^NEXT_DIRENT_H *=/s/@[^@\n]*@// +/^NEXT_ERRNO_H *=/s/@[^@\n]*@// +/^NEXT_FCNTL_H *=/s/@[^@\n]*@// /^NEXT_GETOPT_H *=/s/@[^@\n]*@// /^NEXT_STDARG_H *=/s/@[^@\n]*@// /^NEXT_SIGNAL_H *=/s/@[^@\n]*@// @@ -479,6 +294,7 @@ am__cd = cd /^NEXT_STDIO_H *=/s/@[^@\n]*@// /^NEXT_STDINT_H *=/s/@[^@\n]*@// /^NEXT_STDLIB_H *=/s/@[^@\n]*@// +/^NEXT_STRING_H *=/s/@[^@\n]*@// /^NEXT_SYS_SELECT_H *=/s/@[^@\n]*@// /^NEXT_SYS_STAT_H *=/s!@[^@\n]*@!! /^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/ -/^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/ +/^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]*@// @@ -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/ +/^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/ -/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]*@// -/^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/binary-io\.\$(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]*@/../ @@ -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 -/^\$(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 @@ -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. +/^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/ -s/@echo /@djecho/ +s/@echo /@djecho / # # 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@/\#/ @@ -688,7 +431,16 @@ s/\.in-h\; *\\$/.in-h >> $@-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 +# +# 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)// diff --git a/msdos/sedlisp.inp b/msdos/sedlisp.inp index caf8e0c5497..332630c4dc2 100644 --- a/msdos/sedlisp.inp +++ b/msdos/sedlisp.inp @@ -19,8 +19,9 @@ /^SHELL *=/i\ export FNCASE=y +/^SHELL *=/s|@SHELL@|/bin/sh| /^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@|| diff --git a/src/ChangeLog b/src/ChangeLog index 51861c6ca7d..1899edae349 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,62 @@ +2014-04-16 Eli Zaretskii + + * 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) + : 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 * buffer.c (Foverlays_at): Add argument `sorted'. diff --git a/src/callproc.c b/src/callproc.c index 2ce4a7dcc0d..9e60ba11bcf 100644 --- a/src/callproc.c +++ b/src/callproc.c @@ -105,6 +105,8 @@ enum static Lisp_Object call_process (ptrdiff_t, Lisp_Object *, int, ptrdiff_t); + +#ifndef MSDOS /* Block SIGCHLD. */ void @@ -124,6 +126,8 @@ unblock_child_signal (void) 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. */ @@ -162,6 +166,7 @@ encode_current_directory (void) void record_kill_process (struct Lisp_Process *p, Lisp_Object tempfile) { +#ifndef MSDOS block_child_signal (); if (p->alive) @@ -172,6 +177,7 @@ record_kill_process (struct Lisp_Process *p, Lisp_Object tempfile) } unblock_child_signal (); +#endif /* !MSDOS */ } /* Clean up files, file descriptors and processes created by Fcall_process. */ @@ -211,6 +217,7 @@ call_process_cleanup (Lisp_Object buffer) { Fset_buffer (buffer); +#ifndef MSDOS 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"); } +#endif /* !MSDOS */ } #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); - dostounix_filename (tempfile, 0); + dostounix_filename (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); @@ -710,8 +718,6 @@ call_process (ptrdiff_t nargs, Lisp_Object *args, int filefd, unblock_child_signal (); unblock_input (); -#endif /* not MSDOS */ - 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); +#endif /* not MSDOS */ + 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"); -#elif defined (WINDOWSNT) +#else /* DOS_NT */ Vtemp_file_name_pattern = build_string ("emXXXXXX"); -#else - Vtemp_file_name_pattern = build_string ("detmp.XXX"); #endif staticpro (&Vtemp_file_name_pattern); diff --git a/src/conf_post.h b/src/conf_post.h index bb3be1bb1ea..8fabd60871b 100644 --- a/src/conf_post.h +++ b/src/conf_post.h @@ -121,6 +121,11 @@ You lose; /* Emacs for DOS must be compiled with DJGPP */ #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 @@ -132,6 +137,9 @@ You lose; /* Emacs for DOS must be compiled with DJGPP */ #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 @@ -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. */ -#define SYSTEM_PURESIZE_EXTRA (-170000+65000) +#define SYSTEM_PURESIZE_EXTRA (-170000+90000) #endif #endif /* MSDOS */ diff --git a/src/dired.c b/src/dired.c index 69d0ae0429c..55b2f6658c7 100644 --- a/src/dired.c +++ b/src/dired.c @@ -47,6 +47,10 @@ along with GNU Emacs. If not, see . */ #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; diff --git a/src/emacs.c b/src/emacs.c index fd93324de97..6a86dea9927 100644 --- a/src/emacs.c +++ b/src/emacs.c @@ -686,6 +686,11 @@ void (*__malloc_initialize_hook) (void) EXTERNALLY_VISIBLE = malloc_initialize_h 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"); @@ -694,6 +699,8 @@ close_output_streams (void) if (close_stream (stderr) != 0) _exit (EXIT_FAILURE); + + errno = err; } /* ARGSUSED */ diff --git a/src/font.h b/src/font.h index 93d514fe665..e2e36460583 100644 --- a/src/font.h +++ b/src/font.h @@ -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))) +#ifndef MSDOS #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) diff --git a/src/lisp.h b/src/lisp.h index 6232c326c9a..edc442bb5ab 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -2533,11 +2533,13 @@ CHECK_WINDOW (Lisp_Object x) { CHECK_TYPE (WINDOWP (x), Qwindowp, x); } +#ifdef subprocesses INLINE void CHECK_PROCESS (Lisp_Object x) { CHECK_TYPE (PROCESSP (x), Qprocessp, x); } +#endif 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; -extern Lisp_Object Qprocessp; extern void kill_buffer_processes (Lisp_Object); extern bool wait_reading_process_output (intmax_t, int, int, bool, Lisp_Object, diff --git a/src/menu.c b/src/menu.c index 9c08ff17665..468f2814eb4 100644 --- a/src/menu.c +++ b/src/menu.c @@ -415,7 +415,8 @@ single_menu_item (Lisp_Object key, Lisp_Object item, Lisp_Object dummy, void *sk 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 (" >")); @@ -1442,6 +1443,7 @@ no quit occurs and `x-popup-menu' returns nil. */) keymaps, title, &error_name); else #endif +#ifndef MSDOS 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); } +#endif #ifdef HAVE_NS unbind_to (specpdl_count, Qnil); diff --git a/src/msdos.c b/src/msdos.c index 1af66b391ad..010a0a3746c 100644 --- a/src/msdos.c +++ b/src/msdos.c @@ -50,6 +50,8 @@ along with GNU Emacs. If not, see . */ #include /* for chdir, dup, dup2, etc. */ #include /* for getdisk */ #pragma pack(0) /* dir.h does a pack(4), which isn't GCC's default */ +#undef opendir +#include /* for opendir */ #include #include /* for setmode */ #include /* for __dpmi_xxx stuff */ @@ -1883,18 +1885,6 @@ dos_get_saved_screen (char **screen, int *rows, int *cols) #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 - /* ----------------------- 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; } + +/* Gnulib support and emulation. */ + #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 +/* 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, @@ -3913,6 +3938,82 @@ careadlinkat (int fd, char const *filename, 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 + #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 -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; diff --git a/src/msdos.h b/src/msdos.h index 5d5f5df091f..e863c7cea4e 100644 --- a/src/msdos.h +++ b/src/msdos.h @@ -41,9 +41,25 @@ void mouse_on (void); void mouse_off (void); void mouse_moveto (int, int); +#include +#include + #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 #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 FONT_WIDTH(foo) 1 #define XM_FAILURE -1 #define XM_SUCCESS 1 #define XM_NO_SELECT 2 diff --git a/src/process.c b/src/process.c index fd34eb08d9d..2c66b9e976e 100644 --- a/src/process.c +++ b/src/process.c @@ -134,6 +134,29 @@ extern int sys_select (int, fd_set *, fd_set *, fd_set *, struct timespec *, void *); #endif +/* Work around GCC 4.7.0 bug with strict overflow checking; see + . + 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; + +/* 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 @@ -165,29 +188,6 @@ process_socket (int domain, int type, int protocol) # define socket(domain, type, protocol) process_socket (domain, type, protocol) #endif -/* Work around GCC 4.7.0 bug with strict overflow checking; see - . - 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; - -/* 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; @@ -7058,6 +7058,7 @@ integer or floating point values. 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. @@ -7082,6 +7083,7 @@ catch_child_signal (void) : old_action.sa_handler); unblock_child_signal (); } +#endif /* subprocesses */ /* 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"); +#ifdef subprocesses 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"); diff --git a/src/sysdep.c b/src/sysdep.c index 6ec8eecb287..4e86dc903dc 100644 --- a/src/sysdep.c +++ b/src/sysdep.c @@ -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); +#ifdef SIGCHLD sigaddset (&action->sa_mask, SIGCHLD); +#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 SIGCHLD sys_siglist[SIGCHLD] = "Child status changed"; +# 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]) { +#ifdef MSDOS + return pipe (fd); +#else /* !MSDOS */ 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; +#endif /* !MSDOS */ } /* Approximate posix_close and POSIX_CLOSE_RESTART well enough for Emacs. diff --git a/src/term.c b/src/term.c index 773e85faabc..9e6cfe2f41d 100644 --- a/src/term.c +++ b/src/term.c @@ -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. */ -#ifndef WINDOWSNT +#ifndef DOS_NT 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; +#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"); @@ -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"); +#endif } diff --git a/src/termhooks.h b/src/termhooks.h index 961b321891d..708351da83d 100644 --- a/src/termhooks.h +++ b/src/termhooks.h @@ -643,7 +643,7 @@ extern void delete_terminal (struct 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 diff --git a/src/unexcoff.c b/src/unexcoff.c index 5710ac04570..043f3348d16 100644 --- a/src/unexcoff.c +++ b/src/unexcoff.c @@ -65,6 +65,8 @@ along with GNU Emacs. If not, see . */ #include /* for _crt0_startup_flags and its bits */ #include static int save_djgpp_startup_flags; +#include +static struct __atexit *save_atexit_ptr; #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 */ }; -#endif /* not MSDOS */ +#endif /* MSDOS */ #else /* not HAVE_COFF_H */ #include #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); + + /* 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); @@ -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 atexit chain. */ + __atexit_ptr = save_atexit_ptr; #endif -- 2.39.2