1. 07 Oct, 2013 1 commit
    • Paul Eggert's avatar
      Improve support for popcount and counting trailing zeros. · 595e113b
      Paul Eggert authored
      Do this by using the Gnulib modules for this.
      This should generate faster code on non-GCC, non-MSC platforms,
      and make the code a bit more portable, at least in theory.
      * admin/merge-gnulib (GNULIB_MODULES): Add count-one-bits
      and count-trailing-zeros.
      * lib/count-one-bits.c, lib/count-one-bits.h:
      * lib/count-trailing-zeros.c, lib/count-trailing-zeros.h:
      * m4/count-one-bits.m4, m4/count-trailing-zeros.m4:
      New files, copied from gnulib.
      * lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
      * nt/gnulib.mk: Merge changes from lib/gnulib.mk.
      * src/data.c: Include <count-one-bits.h>, <count-trailing-zeros.h>.
      (USE_MSC_POPCOUNT, POPCOUNT_STATIC_INLINE)
      (NEED_GENERIC_POPCOUNT, popcount_size_t_generic)
      (popcount_size_t_msc, popcount_size_t_gcc):
      Remove; now done by Gnulib.
      (popcount_size_t): Now a macro that defers to Gnulib.
      (count_trailing_zero_bits): Return int, for consistency with
      Gnulib and because Emacs prefers signed to unsigned int.
      Don't assume that size_t is either unsigned int or unsigned long
      or unsigned long long.
      (size_t_to_host_endian): Do not assume that size_t is either
      exactly 32 or exactly 64 bits wide.
      * src/lisp.h (BITS_PER_SIZE_T): Define consistently with BITS_PER_LONG
      etc., so that it's now an enum constant, not a macro.
      No need to assume that it's either 32 or 64.
      
      Fixes: debbugs:15550
      595e113b
  2. 04 Oct, 2013 1 commit
    • Paul Eggert's avatar
      Use hardware support for byteswapping on glibc x86 etc. · 4eed3157
      Paul Eggert authored
      On Fedora 19 x86-64, the new bswap_64 needs 1 instruction,
      whereas the old swap64 needed 30.
      * admin/merge-gnulib (GNULIB_MODULES): Add byteswap.
      * lib/byteswap.in.h, m4/byteswap.m4: New files, copied from Gnulib.
      * lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
      * src/fringe.c (init_fringe_bitmap) [WORDS_BIGENDIAN]:
      * src/sound.c (le2hl, le2hs, be2hl) [!WINDOWSNT]:
      Use byteswap.h's macros to swap bytes.
      * src/lisp.h (swap16, swap32, swap64): Remove.
      All uses replaced by bswap_16, bswap_32, bswap_64.
      4eed3157
  3. 03 Oct, 2013 1 commit
    • Paul Eggert's avatar
      Merge from gnulib. · 0a858ebf
      Paul Eggert authored
      * src/conf_post.h (__has_builtin, assume): Remove; gnulib now does these.
      * src/lisp.h: Include <verify.h>, for 'assume'.
      
      This also incorpoprates:
      2013-10-02 verify: new macro 'assume'
      2013-09-26 dup2, dup3: work around another cygwin crasher
      2013-09-26 getdtablesize: work around cygwin issue
      0a858ebf
  4. 12 Aug, 2013 1 commit
    • Paul Eggert's avatar
      Merge from gnulib. · eaca0446
      Paul Eggert authored
      This incorporates:
      2013-08-11 fpending: port to recent Cygwin change to stdio_ext.h
      2013-08-10 sys_time: port to OpenBSD
      eaca0446
  5. 04 Aug, 2013 1 commit
    • Paul Eggert's avatar
      Fix some minor races in hosts lacking mkostemp. · e0fdb694
      Paul Eggert authored
      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
      e0fdb694
  6. 09 Jul, 2013 2 commits
    • Paul Eggert's avatar
      Port recent close-on-exec changes to Cygwin. · 7b154def
      Paul Eggert authored
      * 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
      7b154def
    • Paul Eggert's avatar
      Handle errno and exit status a bit more carefully. · 4ebbdd67
      Paul Eggert authored
      * 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.
      4ebbdd67
  7. 07 Jul, 2013 1 commit
    • Paul Eggert's avatar
      Make file descriptors close-on-exec when possible. · 067428c1
      Paul Eggert authored
      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
      067428c1
  8. 07 May, 2013 1 commit
    • Paul Eggert's avatar
      Use Gnulib ACL implementation, for benefit of Solaris etc. · ffdc270a
      Paul Eggert authored
      * configure.ac: Remove -with-acl option, since Gnulib does that for
      us now.
      (LIBACL_LIBS): Remove; no longer needed.
      * lib/Makefile.am (CLEANFILES, SUFFIXES): New (empty) macros,
      for the benefit of the new ACL implementation.
      * lib/makefile.w32-in (GNULIBOBJS): Add $(BLD)/acl-errno-valid.$(O).
      ($(BLD)/acl-errno-valid.$(O)): New rule.
      * lib/acl-errno-valid.c, lib/acl-internal.h, lib/acl.h:
      * lib/acl_entries.c, lib/errno.in.h, lib/file-has-acl.c:
      * lib/qcopy-acl.c, lib/qset-acl.c, m4/acl.m4, m4/errno_h.m4:
      New files, taken from gnulib.
      * lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
      * admin/merge-gnulib (GNULIB_MODULES): Add qacl.
      (GNULIB_TOOL_FLAGS): Do not avoid errno.
      * etc/NEWS: Emacs is no longer limited to POSIX ACLs.  --disable-acl,
      not --without-acl, since we're now using Gnulib's implementation.
      * nt/config.nt (HAVE_ACL_SET_FILE): Rename from HAVE_POSIX_ACL.
      * nt/inc/ms-w32.h (EOPNOTSUPP): New macro.
      * src/Makefile.in (LIB_ACL): New macro.
      (LIBACL_LIBS): Remove.
      (LIBES): Use LIB_ACL, not LIBACL_LIBS.
      * src/fileio.c: Include <acl.h>.
      Use HAVE_ACL_SET_FILE rather than HAVE_POSIX_ACL.
      (ACL_NOT_WELL_SUPPORTED): Remove.  All uses replaced by
      !acl_errno_valid.
      (Fcopy_file) [!WINDOWSNT]: Use qcopy_acl instead of rolling
      it ourselves.
      
      Fixes: debbugs:14295
      ffdc270a
  9. 13 Mar, 2013 1 commit
    • Paul Eggert's avatar
      File synchronization fixes. · 47d7532e
      Paul Eggert authored
      * admin/CPP-DEFINES (BSD_SYSTEM, HAVE_FSYNC): Remove.
      * admin/merge-gnulib (GNULIB_MODULES): Add fsync, fdatasync.
      * configure.ac (BSD_SYSTEM, BSD_SYSTEM_AHB): Remove; no longer needed.
      (fsync): Remove check; now done by gnulib.
      * lib/fdatasync.c, lib/fsync.c, m4/fdatasync.m4, m4/fsync.m4:
      New files, from gnulib.
      * lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
      * lib-src/Makefile.in (LIB_FDATASYNC): New macro.
      (emacsclient${EXEEXT}): Use it.
      * lib-src/emacsclient.c (main): Use fdatasync, not fsync, since we don't
      care about metadata.  Keep trying if interrupted.
      * lib-src/movemail.c (main, popmail): Don't worry about BSD_SYSTEM, since
      fsync is available everywhere (or there is a substitute).  Don't
      report an error if fsync returns EINVAL.
      * nt/inc/ms-w32.h (fdatasync): New macro, suggested by Eli Zaretskii.
      * src/Makefile.in (LIB_FDATASYNC): New macro.
      (LIBES): Use it.
      * src/conf_post.h (BSD_SYSTEM, BSD_SYSTEM_AHB): Remove; no longer needed.
      * src/fileio.c (Fwrite_region, write_region_inhibit_fsync):
      Don't worry about HAVE_FSYNC, since a substitute fsync is
      available if the system lacks one.
      (Fwrite_regin): Retry fsync if interrupted.
      
      Fixes: debbugs:13944
      47d7532e
  10. 01 Mar, 2013 1 commit
    • Paul Eggert's avatar
      Merge from gnulib. · 89bd9d36
      Paul Eggert authored
      2013-02-21 putenv: port better to native Windows
      2013-02-18 extern-inline: avoid compilation error with HP-UX cc
      2013-02-14 putenv: fix heap corruption with mixed putenv/_putenv
      89bd9d36
  11. 11 Feb, 2013 1 commit
    • Paul Eggert's avatar
      Tune by using memchr and memrchr. · a84b7c53
      Paul Eggert authored
      * .bzrignore: Add string.h.
      * admin/merge-gnulib (GNULIB_MODULES): Add memrchr.
      * lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
      * lib/memrchr.c, lib/string.in.h, m4/memrchr.m4, m4/string_h.m4:
      New files, from gnulib.
      * src/doc.c (Fsnarf_documentation):
      * src/fileio.c (Fsubstitute_in_file_name):
      * src/search.c (find_newline, scan_newline):
      * src/xdisp.c (pos_visible_p, display_count_lines):
      Use memchr and memrchr rather than scanning byte-by-byte.
      * src/search.c (find_newline): Rename from scan_buffer.
      Omit first arg TARGET, as it's always '\n'.  All callers changed.
      a84b7c53
  12. 01 Feb, 2013 1 commit
    • Paul Eggert's avatar
      Use fdopendir, fstatat and readlinkat, for efficiency. · 8654f9d7
      Paul Eggert authored
      On my host, this speeds up directory-files-and-attributes by a
      factor of 3, when applied to Emacs's src directory.
      These functions are standardized by POSIX and are common these
      days; fall back on a (slower) gnulib implementation if the host
      is too old to supply them.
      * .bzrignore: Add lib/dirent.h.
      * lib/Makefile.am (libgnu_a_SOURCES): Add openat-die.c, save-cwd.c.
      * lib/careadlinkat.c, lib/careadlinkat.h: Merge from gnulib,
      incorporating: 2013-01-29 careadlinkat: do not provide careadlinkatcwd.
      * lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
      * lib/dirent.in.h, lib/fdopendir.c, lib/fstatat.c, lib/openat-priv.h:
      * lib/openat-proc.c, lib/openat.h, m4/dirent_h.m4, m4/fdopendir.m4:
      * m4/fstatat.m4: New files, from gnulib.
      * lib/openat-die.c, lib/save-cwd.c, lib/save-cwd.h: New files.
      These last three are specific to Emacs and are not copied from gnulib.
      They are simpler than the gnulib versions and are tuned for Emacs.
      * admin/merge-gnulib (GNULIB_MODULE...
      8654f9d7
  13. 04 Jan, 2013 1 commit
    • Paul Eggert's avatar
      Merge from gnulib. · ee0d3938
      Paul Eggert authored
      This incorporates:
      2013-01-04 stdio: remove now-unnecessary stdio.c
      2013-01-04 fprintftime: depend on stdio, not ignore-value
      2013-01-04 fwrite: silence __wur only for older glibc versions
      2013-01-04 fwrite: silence __wur without using inline
      * lib/stdio.c: Remove.
      * lib/stdio.in.h, lib/strftime.c: Update from gnulib.
      * lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
      ee0d3938
  14. 02 Jan, 2013 1 commit
  15. 08 Dec, 2012 2 commits
    • Paul Eggert's avatar
      Use putenv+unsetenv instead of modifying environ directly. · 5745a7df
      Paul Eggert authored
      * admin/merge-gnulib (GNULIB_MODULES): Add putenv, unsetenv.
      * lib/putenv.c, lib/unsetenv.c, m4/putenv.m4, m4/setenv.m4:
      New files, copied automatically from gnulib.
      * lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
      * src/alloc.c (xputenv): New function.
      * src/dbusbind.c (Fdbus_init_bus):
      * src/emacs.c (main):
      * src/xterm.c (x_term_init):
      Use xputenv instead of setenv or putenv, to detect memory exhaustion.
      * src/editfns.c (initial_tz): Move static var decl up.
      (tzvalbuf_in_environ): New static var.
      (init_editfns):	Initialize these two static vars.
      (Fencode_time): Don't assume arbitrary limit on EMACS_INT width.
      Save old TZ value on stack, if it's small.
      (Fencode_time, set_time_zone_rule): Don't modify 'environ' directly;
      instead, use xputenv+unsetenv to set and restore TZ.
      (environbuf): Remove static var.  All uses removed.
      (Fset_time_zone_rule): Do not save TZ and environ;
      no longer needed here.
      (set_time_zone_rule_tz1, set_time_zone_rule_tz2) [LOCALTIME_CACHE]:
      Move to inside set_time_zone_rule; they don't need file scope any more.
      (set_time_zone_rule): Maintain the TZ=value string separately.
      (syms_of_editfns): Don't initialize initial_tz;
      init_editfns now does it.
      * src/emacs.c (dump_tz) [HAVE_TZSET]: Now const.
      * src/lisp.h (xputenv): New decl.
      
      Fixes: debbugs:13070
      5745a7df
    • Paul Eggert's avatar
      Assume POSIX 1003.1-1988 or later for signal.h. · d983a10b
      Paul Eggert authored
      Exceptions: do not assume SIGCONT, SIGSTOP, SIGTSTP, SIGTTIN,
      SIGTTOU, SIGUSR1, SIGUSR2, as Microsoft platforms lack these.
      * admin/CPP-DEFINES (SIGALRM, SIGCHLD, SIGHUP, SIGKILL, SIGPIPE, SIGQUIT):
      Remove.
      (SIGTRAP): Remove this one too, as config.h no longer defines it.
      * admin/merge-gnulib (GNULIB_MODULES): Add sig2str.
      * configure.ac (PTY_OPEN, PTY_TTY_NAME_SPRINTF):
      Use SIGCHLD rather than SIGCLD.
      * lib/sig2str.c, lib/sig2str.h, m4/sig2str.m4: New files, from gnulib.
      * lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
      * lib/makefile.w32-in (GNULIBOBJS): Add $(BUILD)/sig2str.$(O).
      * src/process.c [subprocesses]: Include <c-ctype.h>, <sig2str.h>.
      (deleted_pid_list, Fdelete_process, create_process)
      (record_child_status_change, handle_child_signal, deliver_child_signal)
      (init_process_emacs, syms_of_process):
      Assume SIGCHLD is defined.
      (parse_signal): Remove.  All uses removed.
      (abbr_to_signal): New static function.
      (Fsignal_process): Use it to convert signal names to ints.
      * src/sysdep.c (sys_suspend) [!DOS_NT]: Use kill (0, ...) rather than
      kill (getpgrp (), ...).
      (emacs_sigaction_init): Assume SIGCHLD is defined.
      (init_signals): Assume SIGALRM, SIGCHLD, SIGHUP, SIGKILL,
      SIGPIPE, and SIGQUIT are defined.  Do not worry about SIGCLD any more.
      * src/syssignal.h (EMACS_KILLPG): Remove.
      All uses replaced by 'kill' with a negative pid.
      (SIGCHLD): Remove definition, as we now assume SIGCHLD.
      * src/w32proc.c (sys_kill): Support negative pids compatibly with POSIX.
      
      Fixes: debbugs:13026
      d983a10b
  16. 30 Nov, 2012 1 commit
    • Paul Eggert's avatar
      Merge from gnulib for 'inline'. · f64898ab
      Paul Eggert authored
      2012-11-29 snippet/warn-on-use: no 'static inline'
      2012-11-29 ftruncate, fts, lstat, openat, raise: no 'static inline'
      2012-11-29 arctwo, md4, md5, sha1, sha256, sha512: no 'static inline'
      2012-11-29 fflush, stat: no 'static inline'
      2012-11-29 stdio: better 'inline'
      2012-11-29 sys_stat: no 'static inline'
      2012-11-29 unistd: better 'inline'
      2012-11-29 c-strtod, memcoll, readutmp: no 'static inline'
      2012-11-29 extern-inline: no 'static inline'
      2012-11-29 sys_socket: better 'inline'
      * lib/stdio.c, lib/unistd.c: New files, from gnulib.
      * build-aux/snippet/warn-on-use.h, lib/gnulib.mk, lib/lstat.c:
      * lib/md5.c, lib/sha1.c, lib/sha256.c, lib/sha512.c, lib/stat.c:
      * lib/stdio.in.h, lib/sys_stat.in.h, lib/unistd.in.h, m4/c-strtod.m4:
      * m4/extern-inline.m4, m4/gnulib-comp.m4, m4/lstat.m4, m4/md5.m4:
      * m4/sha1.m4, m4/sha256.m4, m4/sha512.m4, m4/stat.m4, m4/stdio_h.m4:
      * m4/sys_socket_h.m4, m4/sys_stat_h.m4, m4/unistd_h.m4:
      Update from gnulib.
      
      Fixes: debbugs:13040
      f64898ab
  17. 14 Nov, 2012 1 commit
    • Paul Eggert's avatar
      Use faccessat, not access, when checking file permissions. · 73dcdb9f
      Paul Eggert authored
      This fixes a bug that has been present in Emacs since its creation.
      It was reported by Chris Torek in 1983 even before GNU Emacs existed,
      which must set some sort of record.  (Torek's bug report was against
      a predecessor of GNU Emacs, but GNU Emacs happened to have the
      same common flaw.)  See Torek's Usenet posting
      "setuid/setgid programs & Emacs" Article-I.D.: sri-arpa.858
      Posted: Fri Apr  8 14:18:56 1983.
      * .bzrignore: Add lib/fcntl.h.
      * configure.ac (euidaccess): Remove check; gnulib does this for us now.
      (gl_FCNTL_O_FLAGS): Define a dummy version.
      * lib/at-func.c, lib/euidaccess.c, lib/faccessat.c, lib/fcntl.in.h:
      * lib/getgroups.c, lib/group-member.c, lib/root-uid.h:
      * lib/xalloc-oversized.h, m4/euidaccess.m4, m4/faccessat.m4:
      * m4/fcntl_h.m4, m4/getgroups.m4, m4/group-member.m4:
      New files, from gnulib.
      * lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
      * admin/merge-gnulib (GNULIB_MODULES): Add faccessat.
      (GNULIB_TOOL_FLAGS): Avoid at-internal, fchdir, malloc-posix,
      openat-die, openat-h, save-cwd.  Do not avoid fcntl-h.
      Omit gnulib's m4/fcntl-o.m4.
      * nt/inc/ms-w32.h (AT_FDCWD, AT_EACCESS): New symbols.
      (access): Remove.
      (faccessat): New macro.
      * src/Makefile.in (LIB_EACCESS): New macro.
      (LIBES): Use it.
      * src/callproc.c (init_callproc):
      * src/charset.c (init_charset):
      * src/fileio.c (check_existing, check_executable, check_writable)
      (Ffile_readable_p):
      * src/lread.c (openp, load_path_check):
      * src/process.c (allocate_pty):
      * src/xrdb.c (file_p):
      Use effective UID when checking permissions, not real UID.
      * src/callproc.c (init_callproc):
      * src/charset.c (init_charset):
      * src/lread.c (load_path_check, init_lread):
      Test whether directories are accessible, not merely whether they exist.
      * src/conf_post.h (GNULIB_SUPPORT_ONLY_AT_FDCWD): New macro.
      * src/fileio.c (check_existing, check_executable, check_writable)
      (Ffile_readable_p):
      Use symbolic names instead of integers for the flags, as they're
      portable now.
      (check_writable): New arg AMODE.  All uses changed.
      Set errno on failure.
      (Ffile_readable_p): Use faccessat, not stat + open + close.
      (Ffile_writable_p): No need to call check_existing + check_writable.
      Just call check_writable and then look at errno.  This saves a syscall.
      dir should never be nil; replace an unnecessary runtime check
      with an eassert.  When checking the parent directory of a nonexistent
      file, check that the directory is searchable as well as writable, as
      we can't create files in unsearchable directories.
      (file_directory_p): New function, which uses 'stat' on most platforms
      but faccessat with D_OK (for efficiency) if WINDOWSNT.
      (Ffile_directory_p, Fset_file_times): Use it.
      (file_accessible_directory_p): New function, which uses a single
      syscall for efficiency.
      (Ffile_accessible_directory_p): Use it.
      * src/xrdb.c (file_p): Use file_directory_p.
      * src/lisp.h (file_directory_p, file_accessible_directory_p): New decls.
      * src/lread.c (openp): When opening a file, use fstat rather than
      stat, as that avoids a permissions race.  When not opening a file,
      use file_directory_p rather than stat.
      (dir_warning): First arg is now a usage string, not a format.
      Use errno.  All uses changed.
      * src/nsterm.m (ns_term_init): Remove unnecessary call to file-readable
      that merely introduced a race.
      * src/process.c, src/sysdep.c, src/term.c: All uses of '#ifdef O_NONBLOCK'
      changed to '#if O_NONBLOCK', to accommodate gnulib O_* style,
      and similarly for the other O_* flags.
      * src/w32.c (sys_faccessat): Rename from sys_access and switch to
      faccessat's API.  All uses changed.
      * src/xrdb.c: Do not include <sys/stat.h>; no longer needed.
      (magic_db): Rename from magic_file_p.
      (magic_db, search_magic_path): Return an XrmDatabase rather than a
      char *, so that we don't have to test for file existence
      separately from opening the file for reading.  This removes a race
      fixes a permission-checking problem, and simplifies the code.
      All uses changed.
      (file_p): Remove; no longer needed.
      
      Fixes: debbugs:12632
      73dcdb9f
  18. 03 Nov, 2012 1 commit
    • Paul Eggert's avatar
      Fix data-loss with --batch. · 7ccfb720
      Paul Eggert authored
      * admin/merge-gnulib (GNULIB_MODULES): Add close-stream.
      * lib/close-stream.c, lib/close-stream.h, lib/fpending.c
      * lib/fpending.h, m4/close-stream.m4, m4/fpending.m4:
      New files, from gnulib.
      * lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
      * src/emacs.c: Include <close-stream.h>.
      (close_output_streams): New function.
      (main): Pass it to atexit, so that Emacs closes stdout and stderr
      and handles errors appropriately.
      (Fkill_emacs): Don't worry about flushing, as close_output_stream
      does that now.
      
      Fixes: debbugs:9574
      7ccfb720
  19. 19 Oct, 2012 2 commits
    • Paul Eggert's avatar
      Undo faccessat change. · f0a80175
      Paul Eggert authored
      f0a80175
    • Paul Eggert's avatar
      Use faccessat, not access, when checking file permissions. · e752e0b0
      Paul Eggert authored
      * .bzrignore: Add lib/fcntl.h.
      * configure.ac (euidaccess): Remove check; gnulib does this for us now.
      (gl_FCNTL_O_FLAGS): Define a dummy version.
      * lib/at-func.c, lib/euidaccess.c, lib/faccessat.c, lib/fcntl.in.h:
      * lib/getgroups.c, lib/group-member.c, lib/root-uid.h:
      * lib/xalloc-oversized.h, m4/euidaccess.m4, m4/faccessat.m4:
      * m4/fcntl_h.m4, m4/getgroups.m4, m4/group-member.m4:
      New files, from gnulib.
      * lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
      * admin/merge-gnulib (GNULIB_MODULES): Add faccessat.
      (GNULIB_TOOL_FLAGS): Avoid at-internal, fchdir, malloc-posix,
      openat-die, openat-h, save-cwd.  Do not avoid fcntl-h.
      Omit gnulib's m4/fcntl-o.m4.
      * nt/inc/ms-w32.h (AT_FDCWD, AT_EACCESS): New symbols.
      (access): Remove.
      (faccessat): New macro.
      * src/Makefile.in (LIB_EACCESS): New macro.
      (LIBES): Use it.
      * src/callproc.c (init_callproc):
      * src/charset.c (init_charset):
      * src/fileio.c (check_existing, check_executable):
      * src/lread.c (openp, load_path_check):
      * src/process.c (allocate_pty):
      * src/xrdb.c (file_p):
      Use faccessat, not access or euidaccess.  Use symbolic names
      instead of integers for the flags, as they're portable now.
      * src/charset.c, src/xrdb.c: Include <fcntl.h>, for the new flags used.
      * src/fileio.c (Ffile_readable_p):
      Use faccessat, not stat + open + close.
      (file_directory_p): New function, which uses 'stat' on most places
      but 'access' (for efficiency) if WINDOWSNT.
      * src/fileio.c (Ffile_directory_p, Fset_file_times):
      * src/xrdb.c (file_p): Use file_directory_p.
      * src/lisp.h (file_directory_p): New decl.
      * src/lread.c (openp): When opening a file, use fstat rather than
      stat, as that avoids a permissions race.  When not opening a file,
      use file_directory_p rather than stat.
      * src/process.c, src/sysdep.c, src/term.c: All uses of '#ifdef O_NONBLOCK'
      changed to '#if O_NONBLOCK', to accommodate gnulib O_* tyle.
      * src/w32.c (sys_faccessat): Rename from sys_access and switch to
      faccessat's API.  All uses changed.
      
      Fixes: debbugs:12632
      e752e0b0
  20. 27 Sep, 2012 1 commit
    • Paul Eggert's avatar
      Check more robustly for timer_settime. · a615a3ae
      Paul Eggert authored
      This should fix an OS X build problem reported by Ivan Andrus in
      <http://lists.gnu.org/archive/html/emacs-devel/2012-09/msg00671.html>.
      * admin/merge-gnulib (GNULIB_MODULES): Add timer-time.
      * configure.ac (gl_THREADLIB): Define to empty, since Emacs
      does threads its own way.
      * lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
      * m4/timer_time.m4: New file, from gnulib.
      * src/atimer.c (alarm_timer, alarm_timer_ok, set_alarm, init_atimer):
      Use HAVE_TIMER_SETTIME, not SIGEV_SIGNAL, to decide whether to
      call timer_settime.
      a615a3ae
  21. 25 Aug, 2012 1 commit
    • Paul Eggert's avatar
      On assertion failure, print backtrace if available. · f4a681b0
      Paul Eggert authored
      Merge from gnulib, incorporating:
      2012-08-24 execinfo: port to FreeBSD
      2012-08-22 execinfo: new module
      * admin/merge-gnulib (GNULIB_MODULES): Add execinfo.
      * lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
      * lib/execinfo.c, lib/execinfo.in.h, m4/execinfo.m4: New files.
      * src/alloc.c [ENABLE_CHECKING]: Include <execinfo.h>.
      (die) [ENABLE_CHECKING]: Print a backtrace if available.
      * src/Makefile.in (LIB_EXECINFO): New macro.
      (LIBES): Use it.
      f4a681b0
  22. 19 Aug, 2012 1 commit
    • Paul Eggert's avatar
      Merge from gnulib. · 562d4436
      Paul Eggert authored
      2012-08-19 ignore-value, stat-time, timespec: omit AC_C_INLINE
      2012-08-19 mktime, sys_select: avoid 'static inline'
      2012-08-19 gnulib-tool: Fix indentation.
      562d4436
  23. 02 Aug, 2012 1 commit
    • Paul Eggert's avatar
      Merge from gnulib, for extern-inline. · a0d4efe9
      Paul Eggert authored
      2012-08-01 extern-inline: new module
      2012-08-01 stat-time, timespec, u64, utimens: use extern-inline
      * lib/stat-time.c, lib/utimespec.c, lib/u64.c, m4/extern-inline.m4:
      New files.  The new .c files are for instantiating extern inline
      functions.
      
      Fixes: debbugs:12116
      a0d4efe9
  24. 28 Jul, 2012 1 commit
    • Paul Eggert's avatar
      Use Gnulib stdalign and environ modules (Bug#9772, Bug#9960). · e32a5799
      Paul Eggert authored
      * .bzrignore: Add lib/stdalign.h.
      * config.bat: Do not set NO_DECL_ALIGN; no longer needed.
      Copy lib/stdalign.in.h to lib/stdalign.in-h as needed.
      * configure.ac (HAVE_ATTRIBUTE_ALIGNED): Remove the code that
      fiddles with this, as gnulib now does this for us.
      * admin/merge-gnulib: Add environ, stdalign.
      * m4/environ.m4: New file, from gnulib.
      * lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
      * lib/stdalign.in.h, m4/stdalign.m4: New files, from gnulib.
      * sed2v2.inp (HAVE_ATTRIBUTE_ALIGNED): Remove edit.
      * sedlibmk.inp (STDALIGN_H, @GL_GENERATE_STDALIGN_H_TRUE@)
      (GL_GENERATE_STDALIGN_H_FALSE): New edits.
      * nt/config.nt (HAVE_ATTRIBUTE_ALIGNED): Remove.
      * src/alloc.c (XMALLOC_BASE_ALIGNMENT, GC_POINTER_ALIGNMENT, pure_alloc):
      Simplify by using alignof.
      (pure_alloc) [! USE_LSB_TAG]: Don't over-align EMACS_INT values.
      * src/lisp.h: Include <stdalign.h>.
      (GCALIGNMENT): New macro and constant.
      (DECL_ALIGN): Remove.  All uses replaced by alignas (GCALIGN...
      e32a5799
  25. 09 Jul, 2012 1 commit
  26. 06 Jul, 2012 1 commit
  27. 22 Jun, 2012 1 commit
  28. 26 May, 2012 1 commit
  29. 21 May, 2012 1 commit
    • Paul Eggert's avatar
      Use full name for m4/gnulib-comp.m4. (Bug#11529) · fb77d37e
      Paul Eggert authored
      Previously the file was named m4/gl-comp.m4 due to DOS 8+3 restrictions,
      even though the file's name in gnulib is m4/gnulib-comp.m4.
      This had a problem when merging from gnulib, as the code temporarily
      renamed it to the full name, causing problems when interrupted.
      Now the file has its full name, with the idea that we will find
      a solution for MS-DOS that does not affect the rest of Emacs.
      * m4/gnulib-comp.m4: Rename from m4/gl-comp.m4.
      * admin/merge-gnulib: Leave m4/gnulib-comp.m4's name alone.
      fb77d37e
  30. 21 Apr, 2012 2 commits
  31. 01 Feb, 2012 1 commit
    • Paul Eggert's avatar
      Port to older Solaris 10 versions (Bug#10677). · 6df37268
      Paul Eggert authored
      Bug reported by Chong Yidong for SunOS 5.10 Generic_127111-11 sparc.
      I cannot reproduce it on SunOS 5.10 Generic_141444-09 sparc but
      possibly this is because Sun fixed the 'stat' bug in my version.
      * Makefile.in (GNULIB_TOOL_FLAGS): Do not avoid the pathmax module.
      * lib/pathmax.h, m4/pathmax.m4: New files, from gnulib.
      * lib/gnulib.mk, m4/gl-comp.m4: Regenerate.
      These changes are based on gnulib version
      4f11d6bebc3098c64ffde27079ab0d0cecfd0cdc dated 2011-10-07 20:59:10,
      because Emacs is in feature freeze and we do not want to merge any
      more-recent changes from gnulib.
      6df37268
  32. 07 Oct, 2011 1 commit
  33. 26 Sep, 2011 1 commit
    • Paul Eggert's avatar
      Merge from gnulib, improving some licensing wording. · 316f8af0
      Paul Eggert authored
      This clarifies and fixes some licensing issues raised by Glenn Morris
      <http://lists.gnu.org/archive/html/bug-gnulib/2011-09/msg00397.html>.
      It also merges the latest version of texinfo.tex and has some
      MSVC-related changes that don't affect Emacs.
      * Makefile.in (GNULIB_TOOL_FLAGS): Avoid msvc-inval, msvc-nothrow,
      pathmax, and raise, since these are needed only to address
      MSVC-related issues that Emacs doesn't have.
      * doc/misc/texinfo.tex, lib/dup2.c, lib/gnulib.mk, lib/signal.in.h:
      * lib/sigprocmask.c, lib/stat.c, lib/stdio.in.h, lib/sys_stat.in.h:
      * lib/unistd.in.h, m4/dup2.m4, m4/getloadavg.m4, m4/gl-comp.m4:
      * m4/include_next.m4, m4/signal_h.m4, m4/signalblocking.m4:
      * m4/stdint.m4, m4/stdio_h.m4, m4/sys_stat_h.m4, m4/time_h.m4:
      * m4/unistd_h.m4: Merge from gnulib.
      316f8af0
  34. 03 Sep, 2011 1 commit
  35. 28 Jul, 2011 1 commit
  36. 24 Jul, 2011 1 commit
    • Paul Eggert's avatar
      Merge from gnulib, using build-aux to remove clutter. · 24e0f6b1
      Paul Eggert authored
      * m4/largefile.m4: New file, so that Emacs does not mess up when
      accessing files with large inode numbers in MacOS X 10.5 and later.
      * m4/nocrash.m4: New file, to avoid triggering background debugger
      and/or create core dumps during 'configure'.
      * build-aux/move-if-change: Renamed from move-if-change.
      * build-aux/snippet/arg-nonnull.h: Renamed from arg-nonnull.h.
      * build-aux/snippet/c++defs.h: Renamed from c++defs.h.
      * build-aux/snippet/warn-on-use.h: Renamed from warn-on-use.h.
      * build-aux/snippet/_Noreturn.h: New file, for draft C1X _Noreturn.
      * .bzrignore: The autogenerated files compile, config.guess,
      config.sub, depcomp, install-sh, and missing are now in build-aux.
      * Makefile.in (epaths-force, sync-from-gnulib):
      move-if-change is now in build-aux.
      (GNULIB_TOOL_FLAGS): Avoid threadlib; this is now a prerequisite
      of gnulib's pthread_sigmask module, but Emacs doesn't need it.
      (mkdir): install-sh is now in build-aux.
      * config.bat: c++defs.h is now in build-aux/snippets.
      * configure.in: Specify AC_CONFIG_AUX_DIR with build-aux (the
      usual parameter).
      * lib/gnulib.mk, m4/gl-comp.m4: Regenerate.
      * lib/makefile.w32-in (ARG_NONNULL_H): arg-nonnull.h moved
      to build-aux/snippet.
      * lib/pthread_sigmask.c, lib/stdlib.in.h, m4/extensions.m4:
      * m4/getopt.m4, m4/gnulib-common.m4, m4/pthread_sigmask.m4:
      Merge from gnuilib.  This fixes porting bugs on Cygwin, Irix, and
      Solaris, enables MacOS extensions, and enables nocrash during
      'configure'.
      * make-dist: Adjust to new build-aux and build-aux/snippit dirs.
      * admin/notes/copyright: The files compile, config.guess, config.sub,
      depcomp, install-sh, missing, and move-if-change are now in the
      new build-aux subdirectory.  The files arg-nonnull.h, c++defs.h,
      and warn-on-use.h are now in build-aux/snippets.  New file
      build-aux/snippets/_Noreturn.h.
      * leim/Makefile.in (install): install-sh is now in build-aux.
      * lib-src/Makefile.in ($(DESTDIR)${archlibdir}): install-sh moved
      to build-aux.
      * msdos/sedlibmk.inp (CONFIG_CLEAN_VPATH_FILES): Adjust to snippet moves
      from top level to build-aux/snippet.
      * src/Makefile.in (gl-stamp): move-if-change is now in build-aux.
      24e0f6b1