1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-05 03:20:39 -08:00
Commit graph

1980 commits

Author SHA1 Message Date
Dmitry Antipov
15091df55b * configure.ac (DOCMISC_DVI_W32, DOCMISC_HTML_W32, DOCMISC_INFO_W32)
(DOCMISC_PDF_W32, DOCMISC_PS_W32): No spaces!
2013-08-27 13:21:46 +04:00
Glenn Morris
a0b5606ec7 Merge from emacs-24; up to 2013-01-03T01:56:56Z!rgm@gnu.org 2013-08-27 01:01:13 -07:00
Glenn Morris
1857cd3f9e Move source for Emacs on MS Windows FAQ here from Emacs webpages repository
* Makefile.in (mostlyclean, clean, distclean, bootstrap-clean)
(maintainer-clean, check-declare): Remove pointless subshells.
Check cd return value.

* configure.ac (DOCMISC_DVI_W32, DOCMISC_HTML_W32, DOCMISC_INFO_W32)
(DOCMISC_PDF_W32, DOCMISC_PS_W32): New output variables.
* Makefile.in (check-info-dir): Ignore efaq-w32.

* admin/admin.el (manual-misc-manuals): Use INFO_COMMON rather than
INFO_TARGETS.

* doc/misc/efaq-w32.texi: Move here from the web-pages repository.

* doc/misc/Makefile.in (DOCMISC_DVI_W32, DOCMISC_HTML_W32, DOCMISC_INFO_W32)
(DOCMISC_PDF_W32, DOCMISC_PS_W32): New configure output variables.
(INFO_COMMON, INFO_INSTALL): New derivations of INFO_TARGETS.
(DVI_TARGETS, HTML_TARGETS, PDF_TARGETS, PS_TARGETS):
Add DOCMISC_*_W32 variables.
(echo-info): Use INFO_INSTALL rather than INFO_TARGETS.
(efaq_w32_deps): New variable.
(efaq-w32, $(buildinfodir)/efaq-w32$(INFO_EXT), efaq-w32.dvi)
(efaq-w32.pdf, efaq-w32.html): New rules.
(clean): Remove efaq-w32 products.
2013-08-27 00:57:39 -07:00
Glenn Morris
61ac6b9f82 * Makefile.in (mostlyclean, clean, distclean, bootstrap-clean)
(maintainer-clean, check-declare): Remove pointless subshells.
Check cd return value.
2013-08-26 23:58:08 -07:00
Paul Eggert
12c4970d70 Minor merge from gnulib (mostly just for texinfo.tex). 2013-08-26 15:17:31 -07:00
Glenn Morris
b4f581f004 * configure.ac (emacs_broken_SIGIO): No longer set on gnu-kfreebsd. 2013-08-22 23:44:59 -07:00
Paul Eggert
917c483a29 * configure.ac (EMACS_CONFIG_OPTIONS): Quote systematically.
This improves on the patch already installed, by quoting options
that contain spaces and suchlike systematically, so that
EMACS_CONFIG_OPTIONS is no longer ambiguous when options contain
these characters.

Fixes: debbugs:13274
2013-08-22 10:35:00 -07:00
Paul Eggert
f035e3a91c Port close-on-exec pty creation to FreeBSD 9.1-RELEASE.
* configure.ac (PTY_OPEN): If posix_openpt with O_CLOEXEC fails
and reports EINVAL, try it again without O_CLOEXEC.  This should
port PTY_OPEN to FreeBSD 9, which stupidly rejects O_CLOEXEC.
What were they thinking?

Fixes: debbugs:15129
2013-08-20 23:11:50 -07:00
Paul Eggert
236beba0c2 * Makefile.in (distclean, bootstrap-clean, maintainer-clean):
Fix shell-operator precedence problem in previous change.
2013-08-20 01:30:24 -07:00
Glenn Morris
f67dce44d5 * Makefile.in (distclean, bootstrap-clean, maintainer-clean):
Clean test/automated if present.
2013-08-19 23:36:10 -07:00
Paul Eggert
51632863c2 Merge from gnulib.
This incorporates:
2013-08-15 warnings: minor optimization
2013-08-15 warnings: check -Wfoo rather than -Wno-foo
2013-08-18 22:23:05 -07:00
Ken Brown
0fe73012cd Revert last change to gmalloc.c; update some comments. 2013-08-15 12:37:15 -04:00
Glenn Morris
4fa4485689 Cleanup for etc/refcards/Makefile and related items
* .bzrignore: Unignore etc/refcards/Makefile.

* make-dist: Do not distribute etc/refcards TeX intermediate files.

* Makefile.in (install-arch-indep):
Do not install etc/refcards TeX intermediate files.

* etc/refcards/Makefile: Rewrite to use portable Makefile syntax.
Add language-specific targets.
(distclean, extraclean): New rules.

*  etc/refcards/README: Add copyright and license.  Add Makefile details.
Mention http and FSF store versions.
2013-08-14 23:31:14 -07:00
Ulrich Mueller
af79c3cb0b * configure.ac (EMACS_CONFIGURATION): Escape backslashes.
Fixes: debbugs:15091
2013-08-13 22:15:01 -04:00
Eli Zaretskii
aa942e2bf4 Fix zlib support on MS-Windows.
configure.ac (HAVE_ZLIB): Don't use -lz on MinGW.

 src/decompress.c <zlib_initialized> [WINDOWSNT]: New static variable.
 (Fzlib_decompress_region) [WINDOWSNT]: Call init_zlib_functions if
 not yet initialized.
2013-08-12 22:48:04 +03:00
Paul Eggert
1d238bc75a Minor zlib configuration tweaks.
* configure.ac (HAVE_ZLIB): Don't assume zlib is linked if PNG is.
* src/decompress.c (fn_inflateInit2) [!WINDOWSNT]:
Don't assume presence of fn_inflateInit2_ zlib internal function.
2013-08-12 09:05:58 -07:00
Eli Zaretskii
594a430782 Fix build with zlib on MS-Windows.
configure.ac (LIBZ): Comment on w32 peculiarities regarding LIBZ.

 src/decompress.c [WINDOWSNT]: Include windows.h and w32.h.
 (DEF_ZLIB_FN, LOAD_ZLIB_FN) [WINDOWSNT]: New macros.  Use them to
 define static variables that are pointers to zlib functions to be
 dynamically loaded.
 (init_zlib_functions) [WINDOWSNT]: New function.
 (fn_inflateInit2_, fn_inflate, fn_inflateEnd, fn_inflateInit2):
 New macros.
 (Fdecompress_gzipped_region, unwind_decompress): Use the fn_*
 macros instead of invoking the zlib functions directly.
 (syms_of_decompress): DEFSYM Qzlib_dll.  Staticpro
 Szlib_available_p.

 lisp/term/w32-win.el (dynamic-library-alist): Add DLLs for zlib.
2013-08-12 16:15:01 +03:00
Paul Eggert
eaca0446e7 Merge from gnulib.
This incorporates:
2013-08-11 fpending: port to recent Cygwin change to stdio_ext.h
2013-08-10 sys_time: port to OpenBSD
2013-08-11 17:52:17 -07:00
Glenn Morris
8496d8d706 Add build, install, uninstall rules for all dvi, html, pdf, ps manuals
* configure.ac (etcdocdir): Rename from docdir, to avoid confusion
with configure's standard --docdir argument.  All uses updated.

* Makefile.in (etcdocdir): Rename from docdir.  All uses updated.
(install-etcdoc): Rename from install-doc.  All uses updated.
(uninstall): Run uninstall-doc.
(PSS): Add misc-ps.
(INSTALL_DVI, INSTALL_HTML, INSTALL_PDF, INSTALL_PS)
(INSTALL_DOC, UNINSTALL_DVI, UNINSTALL_HTML, UNINSTALL_PDF)
(UNINSTALL_PS, UNINSTALL_DOC): New variables.
($(INSTALL_DOC), install-doc, install-dvi, install-html, install-pdf)
(install-ps, $(UNINSTALL_DOC), uninstall-doc, uninstall-dvi)
(uninstall-html, uninstall-pdf, uninstall-ps): New .PHONY rules.

* doc/emacs/Makefile.in (prefix, datarootdir, datadir, PACKAGE_TARNAME)
(docdir, dvidir, htmldir, pdfdir, psdir, GZIP_PROG, INSTALL)
(INSTALL_DATA): New, set by configure.
(HTML_OPTS, DVI_TARGETS, HTML_TARGETS, PDF_TARGETS, PS_TARGETS):
New variables.
(.SUFFIXES): Add .ps and .dvi.
(.dvi.ps): New suffix rule.
(dvi, html, pdf, ps): Use *_TARGETS variables.
(emacs.ps, emacs-xtra.ps): Remove explicit rules.
(emacs.html): Use HTML_OPTS.
(clean): Use DVI_TARGETS, HTML_TARGETS, PDF_TARGETS, PS_TARGETS.
(.PHONY): install-dvi, install-html, install-pdf, install-ps
,install-doc, uninstall-dvi, uninstall-html, uninstall-pdf,
uninstall-ps, and uninstall-doc.
(install-dvi, install-html, install-pdf, install-ps, install-doc)
(uninstall-dvi, uninstall-html, uninstall-ps, uninstall-pdf)
(uninstall-doc): New rules.

* doc/lispintro/Makefile.in (prefix, datarootdir, datadir, PACKAGE_TARNAME)
(docdir, dvidir, htmldir, pdfdir, psdir, GZIP_PROG, INSTALL)
(INSTALL_DATA): New, set by configure.
(HTML_OPTS, DVI_TARGETS, HTML_TARGETS, PDF_TARGETS, PS_TARGETS):
New variables.
(.SUFFIXES): Add .ps and .dvi.
(.dvi.ps): New suffix rule.
(dvi, html, pdf, ps): Use *_TARGETS variables.
(emacs-lisp-intro.ps): Remove explicit rule.
(emacs-lisp-intro.html): Use HTML_OPTS.
(clean): Use DVI_TARGETS, HTML_TARGETS, PDF_TARGETS, PS_TARGETS.
(.PHONY): install-dvi, install-html, install-pdf, install-ps
,install-doc, uninstall-dvi, uninstall-html, uninstall-pdf,
uninstall-ps, and uninstall-doc.
(install-dvi, install-html, install-pdf, install-ps, install-doc)
(uninstall-dvi, uninstall-html, uninstall-ps, uninstall-pdf)
(uninstall-doc): New rules.

* doc/lispref/Makefile.in (prefix, datarootdir, datadir, PACKAGE_TARNAME)
(docdir, dvidir, htmldir, pdfdir, psdir, GZIP_PROG, INSTALL)
(INSTALL_DATA): New, set by configure.
(HTML_OPTS, DVI_TARGETS, HTML_TARGETS, PDF_TARGETS, PS_TARGETS):
New variables.
(.SUFFIXES): Add .ps and .dvi.
(.dvi.ps): New suffix rule.
(dvi, html, pdf, ps): Use *_TARGETS variables.
(elisp.html): Use HTML_OPTS.
(elisp.ps): Remove explicit rule.
(.PHONY): install-dvi, install-html, install-pdf, install-ps
,install-doc, uninstall-dvi, uninstall-html, uninstall-pdf,
uninstall-ps, and uninstall-doc.
(install-dvi, install-html, install-pdf, install-ps, install-doc)
(uninstall-dvi, uninstall-html, uninstall-ps, uninstall-pdf)
(uninstall-doc): New rules.
(clean): Use DVI_TARGETS, HTML_TARGETS, PDF_TARGETS, PS_TARGETS.

* doc/misc/Makefile.in (prefix, datarootdir, datadir, PACKAGE_TARNAME)
(docdir, dvidir, htmldir, pdfdir, psdir, GZIP_PROG, INSTALL)
(INSTALL_DATA): New, set by configure.
(HTML_OPTS, HTML_TARGETS, PS_TARGETS, DVIPS): New variables.
(.PHONY): Add html, ps, install-dvi, install-html, install-pdf,
install-ps ,install-doc, uninstall-dvi, uninstall-html, uninstall-pdf,
uninstall-ps, and uninstall-doc.
(.SUFFIXES): Add .ps and .dvi.
(.dvi.ps): New suffix rule.
(html, ps, ada-mode.html, auth.html, autotype.html, bovine.html)
(calc.html, cc-mode.html, cl.html, dbus.html, dired-x.html)
(ebrowse.html, ede.html, ediff.html, edt.html, eieio.html)
(emacs-gnutls.html, emacs-mime.html, epa.html, erc.html)
(ert.html, eshell.html, eudc.html, faq.html, flymake.html)
(forms.html, gnus.html, htmlfontify.html, idlwave.html)
(ido.html, mairix-el.html, message.html, mh-e.html)
(newsticker.html, nxml-mode.html, org.html, pgg.html)
(rcirc.html, reftex.html, remember.html, sasl.html, sc.html)
(semantic.html, sieve.html, smtpmail.html, speedbar.html)
(srecode.html, todo-mode.html, tramp.html, url.html, vip.html)
(viper.html, widget.html, wisent.html, woman.html, install-dvi)
(install-html, install-pdf, install-ps, install-doc, uninstall-dvi)
(uninstall-html, uninstall-ps, uninstall-pdf, uninstall-doc):
New rules.
(clean): Remove HTML_TARGETS and PS_TARGETS.
2013-08-11 17:04:15 -07:00
Paul Eggert
8d28d0ac2a Add --with-zlib to 'configure'.
* configure.ac: Add --with-zlib option to 'configure', so that Emacs
can be built without zlib.  Don't assume that -lz is needed on
non-PNG hosts.  Mention zlib configuration status in 'configure' output.
2013-08-11 15:58:47 -07:00
Lars Magne Ingebrigtsen
313546eb79 Add zlib support via the `decompress-gzipped-region' function
This adds a new file, src/decompress.c, as well as tests for the
presence of -lz.
2013-08-11 21:43:36 +02:00
Eli Zaretskii
d4166523bc Provide a Windows manifest for update-game-score.exe.
lib-src/update-game-score.exe.manifest: New file.
 lib-src/Makefile.in (UPDATE_MANIFEST): New variable.
 (SCRIPTS): Add $(UPDATE_MANIFEST).

 configure.ac: Define and substitute UPDATE_MANIFEST.
2013-08-10 10:43:41 +03:00
Stephen Berman
016d3f7ddc Add Todo mode user manual.
* doc/misc/Makefile.in (INFO_TARGETS, DVI_TARGETS, PDF_TARGETS): Add todo-mode.
(todo-mode, $(buildinfodir)/todo-mode$(INFO_EXT)):
(todo-mode.dvi, todo-mode.pdf): New rules.

* doc/misc/todo-mode.texi: New file.

* info/dir: Add todo-mode.
2013-08-04 23:27:49 +02:00
Paul Eggert
e0fdb69430 Fix some minor races in hosts lacking mkostemp.
Gnulib's emulation of mkostemp doesn't have races that Emacs's does.
* configure.ac (mkostemp): Remove check for this function;
gnulib does the check now.
(mkstemp): Remove check for this no-longer-used function.
* lib/mkostemp.c, lib/secure_getenv.c, lib/tempname.c, lib/tempname.h:
* m4/mkostemp.m4, m4/secure_getenv.m4, m4/tempname.m4:
New files, copied from Gnulib.
* lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
* admin/merge-gnulib (GNULIB_MODULES): Add mkostemp.
* lib-src/movemail.c (main):
* lib-src/update-game-score.c (write_scores):
Use mkostemp (which now works on all platforms, due to changes
in the portability layer) rather than mktemp (which has a race)
or mkstemp (which we no longer bother with).
* src/callproc.c (create_temp_file):
* src/filelock.c (create_lock_file):
Assume mkostemp, since it's now provided by Gnulib.

Fixes: debbugs:15015
2013-08-04 09:56:56 -07:00
Michael Albinus
7bddb12029 * INSTALL (DETAILED BUILDING AND INSTALLATION): Add
--without-file-notification to --without-all.
2013-07-29 13:35:16 +02:00
Xue Fuqiao
dfc7be3975 * INSTALL: Fix description. 2013-07-29 09:32:01 +08:00
Glenn Morris
885e792c90 * configure.ac: Extend the --with-sound option
to allow specification of OSS or ALSA (see bug#14812#64).
2013-07-26 21:18:21 -04:00
Juanma Barranquero
a04689de43 Fix typos in ChangeLogs. 2013-07-26 19:02:22 +02:00
Glenn Morris
57cff71206 Add Makefile rules for ido.texi
* doc/misc/Makefile.in (INFO_TARGETS, DVI_TARGETS, PDF_TARGETS): Add ido.
(ido, $(buildinfodir)/ido$(INFO_EXT), ido.dvi, ido.pdf): New rules.

* info/dir: Add ido.
2013-07-25 08:46:00 -07:00
Glenn Morris
ff62aabc62 * make-dist: Add a --tests option, to include test/ (backport from trunk) 2013-07-25 00:03:33 -07:00
Glenn Morris
ef75383cd2 * make-dist: Add a --tests option, to include test/. 2013-07-24 23:57:25 -07:00
Glenn Morris
1813e115ce * configure.ac: Use self-descriptive tags for AC_CONFIG_COMMANDS. 2013-07-23 21:03:56 -04:00
Glenn Morris
60967f56e7 No need for configure to create etc/ and lisp/ any more
* configure.ac (etc, lisp): No need to create specially.
Configure already creates lisp when generating lisp/Makefile;
src/Makefile now creates etc when needed.

* src/Makefile.in ($(etc)/DOC, temacs$(EXEEXT)): Ensure etc/ exists.
2013-07-23 19:00:43 -04:00
Paul Eggert
e3ebe15a74 Fix ChangeLog typo. 2013-07-23 10:06:46 +01:00
Paul Eggert
a29c3e6db0 Port to GNU/Linux systems with tinfo but not ncurses.
* configure.ac (USE_NCURSES): New symbol.
* src/dispnew.c (init_display): Depend on USE_NCURSES, not GNU_LINUX,
to decide whether ncurses is being used.  Without this change,
GCC complains about tgetent not being declared, on a system
that has tinfo installed but ncurses not installed.
2013-07-23 09:08:57 +01:00
Paul Eggert
6496aec9e9 Fix array bounds violation when pty allocation fails.
* configure.ac (PTY_TTY_NAME_SPRINTF): Use PTY_NAME_SIZE,
not sizeof pty_name, since pty_name is now a pointer to the array.
* src/process.c (PTY_NAME_SIZE): New constant.
(pty_name): Remove static variable; it's now auto.
(allocate_pty): Define even if !HAVE_PTYS; that's simpler.
Take pty_name as an arg rather than using a static variable.
All callers changed.
(create_process): Recover pty_flag from process, not from volatile local.
(create_pty): Stay inside array even when pty allocation fails.
(Fmake_serial_process): Omit unnecessary initializaiton of pty_flag.
2013-07-20 08:33:00 -07:00
Paul Eggert
c04bbd85c9 * configure.ac: Simplify --with-file-notification handling. 2013-07-12 17:01:43 -07:00
Glenn Morris
671d4bfc55 * configure.ac: If with-file-notification=yes, if gfile not found,
go on to try inotify (not on MS Windows or Nextstep).

* etc/NEWS: Copyedits.
2013-07-12 13:36:42 -04:00
Paul Eggert
bacba3c265 Fix races with threads and file descriptors.
* configure.ac (PTY_TTY_NAME_SPRINTF): Use emacs_close, not close.
* src/callproc.c (Fcall_process_region):
* src/dired.c (open_directory):
* src/emacs.c (main, Fdaemon_initialized):
* src/image.c (x_find_image_file):
* src/inotify.c (Finotify_rm_watch):
* src/lread.c (Flocate_file_internal):
* src/process.c (Fnetwork_interface_list, Fnetwork_interface_info):
* src/term.c (term_mouse_moveto, init_tty):
* src/termcap.c (tgetent):
* src/unexaix.c, src/unexcoff.c (report_error, report_error_1, adjust_lnnoptrs)
* src/unexaix.c, src/unexcoff.c, src/unexcw.c, src/unexelf.c (unexec):
* src/unexhp9k800.c, src/unexmacosx.c (unexec):
* src/callproc.c (Fcall_process_region):
Use emacs_close, not close.
* src/sysdep.c (POSIX_CLOSE_RESTART, posix_close) [!POSIX_CLOSE_RESTART]:
New macro and function, which emulates the POSIX_CLOSE_RESTART macro
and posix_close function on current platforms (which all lack them).
(emacs_close): Use it.  This should fix the races on GNU/Linux and
on AIX and on future platforms that support POSIX_CLOSE_RESTART,
and it should avoid closing random victim file descriptors on
other platforms.
2013-07-11 19:03:47 -07:00
Glenn Morris
daca02043b ChangeLog fix (no need to merge to trunk) 2013-07-11 13:19:31 -04:00
Glenn Morris
6e0e82a034 ChangeLog fixes 2013-07-11 13:18:48 -04:00
Paul Eggert
c6e7fc0ea7 * Makefile.in (removenullpaths): Remove adjacent null paths.
Fixes: debbugs:14835
2013-07-09 23:41:37 -07:00
Peter Rosin
2aae948de5 Avoid nexted functions in AC_LANG_PROGRAM test for Windows headers.
configure.ac (HAVE_W32): Avoid nested functions (the second
 argument of AC_LANG_PROGRAM is already expanded inside a
 function).

Fixes: debbugs:14830
2013-07-09 21:06:25 +03:00
Paul Eggert
7b154deff5 Port recent close-on-exec changes to Cygwin.
* lib/binary-io.c, lib/binary-io.h: New files.
Merge from gnulib, incorporating:
2013-07-09 accept4, dup3, pipe2: port to Cygwin
* lib/pipe2.c: Update from gnulib, as part of this merge.
* lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.

Fixes: debbugs:14821
2013-07-09 10:16:21 -07:00
Paul Eggert
4ebbdd6712 Handle errno and exit status a bit more carefully.
* lib/ignore-value.h: Remove this gnulib-imported file.
* lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
* admin/merge-gnulib (GNULIB_MODULES): Remove ignore-value.
* src/callproc.c (child_setup) [!DOS_NT]: Don't try to stuff an error
number into an exit status.  Instead, use EXIT_CANCELED.
(child_setup) [!MSDOS]: Avoid possible deadlock with vfork.
* src/callproc.c (relocate_fd):
* src/emacs.c (close_output_streams, main):
* src/process.c (create_process):
* src/sysdep.c (sys_subshell) [!DOS_NT || !WINDOWSNT]:
Use emacs_perror for simplicity.
* src/callproc.c (relocate_fd, main):
* src/sysdep.c (sys_subshell):
Exit with EXIT_CANCELED etc., not 1, when exec setup fails.
(shut_down_emacs): Use emacs_write, not write.
* src/emacs.c, src/sysdep.c: Don't include <ignore-value.h>.
* src/fileio.c (Fcopy_file, e_write):
* src/nsterm.m (ns_select):
* src/process.c (send_process):
* src/sound.c (vox_write):
Use emacs_write_sig, not emacs_write.
* src/lisp.h (emacs_write_sig, emacs_perror): New decls.
* src/process.h (EXIT_CANCELED), EXIT_CANNOT_INVOKE, EXIT_ENOENT):
New constants.
* src/sysdep.c (emacs_backtrace): Use emacs_write, not ignore_value
of write.
(emacs_full_write): New function.
(emacs_write): Rewrite to use it.
(emacswrite_sig, emacs_perror): New functions.
* src/xrdb.c (fatal): Don't invoke perror, since errno might be garbage.
2013-07-09 00:04:48 -07:00
Jan Djärv
e4b1e5afb4 configure.ac (HAVE_IMAGEMAGICK): Check on NS also.
image.c (imagemagick_load_image): Do not use MagickExportImagePixels
on NS even if it is present.  Pixmap on NS is a void*.

Fixes: debbugs:14798
2013-07-08 15:26:13 +02:00
Paul Eggert
2a74a90a03 Try to fix FreeBSD 9.1 porting problem.
This incorporates the following merge from gnulib:
2013-07-07 stdalign, verify: port to FreeBSD 9.1, to C11, and to C++11

Fixes: debbugs:14812
2013-07-07 23:15:38 -07:00
Paul Eggert
6602769357 Remove stray empty line. 2013-07-07 20:20:35 -07:00
Paul Eggert
9caab067d6 Port to Ubuntu 10.
Problem reported by T.V. Raman.
* configure.ac (accept4): New function to check for.
* src/process.c (close_on_exec, accept4, process_socket):
Define these if !HAVE_ACCEPT4, not if !SOCK_CLOEXEC.

Fixes: debbugs:14803
2013-07-07 16:22:43 -07:00
Paul Eggert
067428c171 Make file descriptors close-on-exec when possible.
This simplifies Emacs a bit, since it no longer needs to worry
about closing file descriptors by hand in some cases.
It also fixes some unlikely races.  Not all such races, as
libraries often open files internally without setting
close-on-exec, but it's an improvement.
* admin/merge-gnulib (GNULIB_MODULES): Add fcntl, pipe2.
(GNULIB_TOOL_FLAGS): Avoid binary-io, close.  Do not avoid fcntl.
* configure.ac (mkostemp): New function to check for.
(PTY_OPEN): Pass O_CLOEXEC to posix_openpt.
* lib/fcntl.c, lib/getdtablesize.c, lib/pipe2.c, m4/fcntl.m4:
* m4/getdtablesize.m4, m4/pipe2.m4: New files, taken from gnulib.
* lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
* nt/gnulib.mk: Remove empty gl_GNULIB_ENABLED_verify section;
otherwise, gnulib-tool complains given close-on-exec changes.
* nt/inc/ms-w32.h (pipe): Remove.
* nt/mingw-cfg.site (ac_cv_func_fcntl, gl_cv_func_fcntl_f_dupfd_cloexec)
(gl_cv_func_fcntl_f_dupfd_works, ac_cv_func_pipe2): New vars.
* src/alloc.c (valid_pointer_p) [!WINDOWSNT]:
* src/callproc.c (Fcall_process) [!MSDOS]:
* src/emacs.c (main) [!DOS_NT]:
* src/nsterm.m (ns_term_init):
* src/process.c (create_process):
Use 'pipe2' with O_CLOEXEC instead of 'pipe'.
* src/emacs.c (Fcall_process_region) [HAVE_MKOSTEMP]:
* src/filelock.c (create_lock_file) [HAVE_MKOSTEMP]:
Prefer mkostemp with O_CLOEXEC to mkstemp.
* src/callproc.c (relocate_fd) [!WINDOWSNT]:
* src/emacs.c (main): Use F_DUPFD_CLOEXEC, not plain F_DUPFD.
No need to use fcntl (..., F_SETFD, FD_CLOEXEC), since we're
now using pipe2.
* src/filelock.c (create_lock_file) [! HAVE_MKOSTEMP]:
Make the resulting file descriptor close-on-exec.
* src/lisp.h, src/lread.c, src/process.c (close_load_descs, close_process_descs):
* src/lread.c (load_descriptor_list, load_descriptor_unwind):
Remove; no longer needed.  All uses removed.
* src/process.c (SOCK_CLOEXEC): Define to 0 if not supplied by system.
(close_on_exec, accept4, process_socket) [!SOCK_CLOEXEC]:
New functions.
(socket) [!SOCK_CLOEXEC]: Supply a substitute.
(Fmake_network_process, Fnetwork_interface_list):
(Fnetwork_interface_info, server_accept_connection):
Make newly-created socket close-on-exec.
* src/sysdep.c (emacs_open, emacs_fopen):
Make new-created descriptor close-on-exec.
* src/w32.c (fcntl): Support F_DUPFD_CLOEXEC well enough for Emacs.
* src/w32.c, src/w32.h (pipe2): Rename from 'pipe', with new flags arg.

Fixes: debbugs:14803
2013-07-07 11:00:14 -07:00