diff options
author | Eli Zaretskii <eliz@gnu.org> | 2014-04-16 16:27:28 +0300 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2014-04-16 16:27:28 +0300 |
commit | bf6b4923f7eedea193dee2130bf7fa597a5932d4 (patch) | |
tree | 62bd144e45df20c0fc1600eedb3f744dcfe959a2 /src/unexcoff.c | |
parent | 3a31cae4677c7c5e501dcf7e5c520e49db16f75e (diff) | |
download | emacs-bf6b4923f7eedea193dee2130bf7fa597a5932d4.tar.gz |
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) <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.
Diffstat (limited to 'src/unexcoff.c')
-rw-r--r-- | src/unexcoff.c | 13 |
1 files changed, 12 insertions, 1 deletions
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 <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 <libc/atexit.h> +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 <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); + + /* 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 |