1. 19 Jan, 2020 1 commit
    • Paul Eggert's avatar
      Remove Gnulib putenv code · 35a1a007
      Paul Eggert authored
      It’s not needed, since Emacs always uses the system putenv and all
      platforms have putenv.  This improves on the fix for Bug#19874.
      Suggested by Bruno Haible.
      * admin/merge-gnulib (GNULIB_MODULES): Remove putenv.
      * configure.ac: Remove workarounds for Gnulib putenv module.
      * lib/gnulib.mk.in, m4/gnulib-comp.m4: Regenerate.
      * lib/putenv.c, m4/putenv.m4: Remove.
      35a1a007
  2. 01 Jan, 2020 1 commit
  3. 06 Dec, 2019 1 commit
    • Paul Eggert's avatar
      Update from Gnulib · c4cd2a0b
      Paul Eggert authored
      This incorporates:
      2019-12-06 nstrftime: better width support for %N, %z
      2019-12-03 Avoid hassles caused by [[noreturn]] in C++
      2019-12-02 Fix mistakes in --enable-threads=isoc fixes from 2019-12-01
      * admin/merge-gnulib (AVOIDED_MODULES): Avoid pthread-h.
      * lib/_Noreturn.h, lib/nstrftime.c, m4/gnulib-common.m4:
      * m4/timer_time.m4:
      Copy from Gnulib.
      * lib/gnulib.mk.in: Regenerate.
      c4cd2a0b
  4. 26 Nov, 2019 1 commit
    • Paul Eggert's avatar
      etags: remove some arbitrary limits · cffa5703
      Paul Eggert authored
      etags had undefined behavior if input files, lines, tags, etc.,
      had more than INT_MAX bytes.  Clean up the usage of integer types
      to fix the overflow errors I found.
      * admin/merge-gnulib (GNULIB_MODULES): Add mempcpy.
      * lib-src/etags.c: Include inttypes.h, intprops.h.
      (memcpyz): New function.  Use it to simplify several occurrences
      of memcpy followed by storing a trailing '\0'.
      (xnew): Use xnmalloc, to catch overflow on integer multiplication.
      (xrnew): Change last arg to multiplier.  The type is not needed.
      All callers changed.
      (node, lineno, charno, linecharno, invalidcharno, make_tag):
      (pfnote, add_node, number_len, C_symtype, lbz, Makefile_targets)
      (readline):
      Use intmax_t for line numbers and character positions, instead of
      int or long.
      (linebuffer, make_tag, pfnote, total_size_of_entries, put_entry)
      (in_word_set, C_symtype, token, cstack, pushclass_above):
      (popclass_above, write_classname, consider_token, C_entries)
      (Ruby_functions, Makefile_targets, Lua_functions, TeX_commands)
      (TeX_decode_env, erlang_func, erlang_attribute, erlang_atom)
      (substitute, regex_tag_multiline, nocase_tail, readline_interval)
      (readline, savenstr, concat, etags_getcwd, relative_filename)
      (linebuffer_setlen):
      Use ptrdiff_t for object sizes, instead of int or long or unsigned
      or size_t.
      (write_classname, C_entries):
      Avoid sprintf, as the result could exceed INT_MAX bytes
      and then behavior goes haywire.
      (main): Use int, instead of unsigned, for argv counts.
      (get_language_from_filename): Use bool for boolean.
      (Ruby_functions): Prefer strcpy to memcpy when copying "=".
      (linebuffer_setlen): Use ‘if’ instead of ‘while’.
      (memory_full, xnmalloc, xnrealloc): New functions.
      (xmalloc): Use memory_full, and take a ptrdiff_t instead of a size_t.
      (xrealloc): Remove; no longer needed.
      * lib/gnulib.mk.in, m4/gnulib-comp.m4: Regenerate.
      * lib/mempcpy.c, m4/mempcpy.m4: New files, copied from Gnulib.
      cffa5703
  5. 24 Jul, 2019 1 commit
    • Paul Eggert's avatar
      Port double-slash test to z/OS · 50126f20
      Paul Eggert authored
      * admin/merge-gnulib (GNULIB_MODULES): Add double-slash-root.
      Emacs was already using this Gnulib module indirectly, so this
      is merely noting that there is now a direct dependency.
      * lib/gnulib.mk.in, m4/gnulib-comp.m4: Regenerate.
      * src/fileio.c (search_embedded_absfilename):
      Use DOUBLE_SLASH_IS_DISTINCT_ROOT instead of (WINDOWSNT || CYGWIN).
      Simplify.
      50126f20
  6. 25 Jun, 2019 2 commits
    • Paul Eggert's avatar
      Prefer PATH_MAX to MAXPATHLEN · 824f7841
      Paul Eggert authored
      PATH_MAX is standardized, MAXPATHLEN is not.
      Also, the Gnulib pathmax module fixes some rare bugs with PATH_MAX.
      So prefer PATH_MAX to MAXPATHLEN unless we know the latter is
      also correct (for some platform-specific code).
      * admin/merge-gnulib (GNULIB_MODULES): Add pathmax.
      This module was already present, as a dependency of canonicalize-lgpl,
      but now Emacs is using it directly.  Sort.
      * lib-src/emacsclient.c: Include stdint.h, pathmax.h.
      (get_current_dir_name): Sync to current src/sysdep.c.
      * lib/gnulib.mk.in, m4/gnulib-comp.m4: Regenerate.
      * src/sysdep.c: Include pathmax.h.
      (get_current_dir_name_or_unreachable):
      Use PATH_MAX instead of MAXPATHLEN.
      824f7841
    • Paul Eggert's avatar
      Avoid some strlen work, primarily via strnlen · d7c68362
      Paul Eggert authored
      * admin/merge-gnulib (GNULIB_MODULES): Add strnlen.
      * lib-src/etags.c (find_entries):
      * src/emacs.c (main):
      * src/nsmenu.m (parseKeyEquiv:):
      * src/nsterm.m (ns_xlfd_to_fontname):
      * src/term.c (vfatal):
      Prefer !*X to !strlen (X).
      * lib-src/etags.c (pfnote, add_regex):
      * lib-src/pop.c (pop_open):
      * lib-src/update-game-score.c (main):
      * lwlib/lwlib.c (lw_separator_p):
      * src/doprnt.c (doprnt):
      * src/emacs.c (main):
      * src/inotify.c (inotifyevent_to_event):
      * src/keyboard.c (menu_separator_name_p, parse_tool_bar_item):
      * src/sysdep.c (get_current_dir_name_or_unreachable):
      * src/xdisp.c (store_mode_line_string):
      Use strnlen to avoid unnecessary work with strlen.
      * lib-src/etags.c (Prolog_functions, prolog_pr)
      (Erlang_functions, erlang_func):
      Prefer ptrdiff_t to size_t when either will do.
      (prolog_pr, erlang_func): New arg LASTLEN, to avoid
      unnecessary strlen call. All callers changed.
      * lib/gnulib.mk.in, m4/gnulib-comp.m4: Regenerate.
      * lib/strnlen.c, m4/strnlen.m4: New files, copied from Gnulib.
      * lwlib/lwlib.c (lw_separator_p):
      * src/json.c (json_has_prefix):
      Use strncmp to avoid unecessary work with strlen + memcmp.
      * src/process.c (set_socket_option): Use SBYTES instead of strlen.
      d7c68362
  7. 24 Jun, 2019 1 commit
    • Daniel Colascione's avatar
      Fix locating pdump by symlink · b9ac4f81
      Daniel Colascione authored
      * admin/merge-gnulib (GNULIB_MODULES): Add canonicalize-lgpl module
      * build-aux/config.guess, build-aux/gitlog-to-changelog,
      build-aux/update-copyright, lib/canonicalize-lgpl.c,
      lib/gnulib.mk.in, lib/malloca.c, lib/malloca.h, lib/pathmax.h,
      m4/canonicalize.m4, m4/double-slash-root.m4, m4/gnulib-comp.m4,
      m4/malloca.m4, my/pathmax.4: copy from GNUlib or regenerate from
      update
      * src/emacs.c: find dump by canonical path
      b9ac4f81
  8. 07 Jun, 2019 1 commit
    • Paul Eggert's avatar
      Use copy_file_range to copy files · 486a81f3
      Paul Eggert authored
      The copy_file_range syscall (introduced in Linux kernel
      version 4.5) can copy files more efficiently via server-side
      copy etc.
      * admin/merge-gnulib (GNULIB_MODULES): Add copy-file-range.
      * lib/copy-file-range.c, m4/copy-file-range.m4:
      New files, copied from Gnulib.
      * lib/gnulib.mk.in, m4/gnulib-comp.m4: Regenerate.
      * src/fileio.c (Fcopy_file): Try copy_file_range first,
      falling back on read+write only if copy_file_range failed or
      if the input is empty and so could be a /proc file.
      486a81f3
  9. 25 Apr, 2019 2 commits
  10. 15 Apr, 2019 1 commit
    • Paul Eggert's avatar
      Replace executable’s fingerprint in place · 5c2f94a1
      Paul Eggert authored
      * admin/merge-gnulib (GNULIB_MODULES): Add memmem-simple.
      (AVOIDED_MODULES): Add memchr.
      * configure.ac (HAVE_PDUMPER): AC_SUBST it, too, for use in makefiles.
      * lib/Makefile.in (libgnu_a_OBJECTS): Add fingerprint.o.
      * lib/fingerprint.c: New file.
      * lib/memmem.c, lib/str-two-way.h, m4/memmem.m4: New files,
      copied from Gnulib.
      * lib/fingerprint.h: Rename from src/fingerprint.h.
      * lib-src/make-fingerprint.c: Include limits.h, sys/stat.h,
      fingerprint.h, intprops.h, min-max.h.
      (SSIZE_MAX): New macro, if not already defined.
      (main): Without -r, Replace the fingerprint in the input file
      instead of generating a fingerprint.c.
      * lib/Makefile.in (libgnu_a_OBJECTS): Add fingerprint.o.
      * lib/gnulib.mk.in, m4/gnulib-comp.m4: Regenerate.
      * src/Makefile.in (HAVE_PDUMPER, MAKE_PDUMPER_FINGERPRINT):
      New macros.
      (temacs$(EXEEXT)): Use them to replace the fingerprint instead
      of precalculating it.
      (mostlyclean, ctagsfiles1): Do not worry about fingerprint.c.
      5c2f94a1
  11. 01 Jan, 2019 1 commit
  12. 03 Dec, 2018 1 commit
    • Paul Eggert's avatar
      Use tcdrain, not fdatasync, to drain ttys · f5090b91
      Paul Eggert authored
      fdatasync is for storage devices, not ttys.
      * admin/merge-gnulib (GNULIB_MODULES): Remove fdatasync.
      * lib/fdatasync.c, m4/fdatasync.m4: Remove.
      * lib-src/Makefile.in (LIB_FDATASYNC):
      * src/Makefile.in (LIB_FDATASYNC):
      Remove.  All uses removed.
      * lib-src/emacsclient.c [!DOS_NT]:
      Include <termios.h>, for tcdrain.
      * lib-src/emacsclient.c (flush_stdout):
      * src/sysdep.c (reset_sys_modes): On ttys, use tcdrain instead
      of fdatasync (except don’t use either function if DOS_NT).
      * lib/gnulib.mk.in, m4/gnulib-comp.m4: Regenerate.
      f5090b91
  13. 13 Nov, 2018 1 commit
    • Paul Eggert's avatar
      Act like POSIX sh if $HOME is relative · 90027650
      Paul Eggert authored
      POSIX says sh ~/foo should act like $HOME/foo even if $HOME is
      relative, so be consistent with that (Bug#33255).
      * admin/merge-gnulib (GNULIB_MODULES): Add dosname.
      * src/buffer.c (init_buffer): Use emacs_wd to get
      initial working directory with slash appended if needed.
      (default-directory): Say it must be absolute.
      * src/emacs.c (emacs_wd): New global variable.
      (init_cmdargs): Dir arg is now char const *.
      (main): Set emacs_wd.
      * src/emacs.c (main) [NS_IMPL_COCOA]:
      * src/fileio.c (Fexpand_file_name):
      Use get_homedir instead of egetenv ("HOME").
      * src/fileio.c: Include dosname.h, for IS_ABSOLUTE_FILE_NAME.
      (splice_dir_file, get_homedir): New functions.
      * src/xrdb.c (gethomedir): Remove.  All callers changed
      to use get_homedir and splice_dir_file.
      * test/src/fileio-tests.el (fileio-tests--relative-HOME): New test.
      90027650
  14. 09 Oct, 2018 1 commit
    • Paul Eggert's avatar
      Update from Gnulib · cf1ebfa0
      Paul Eggert authored
      This incorporates:
      2018-10-05 explicit_bzero: make it possible to namespace
      2018-10-04 fcntl: make it possible to namespace
      2018-10-01 mkostemp, mkostemps: fix C++ compilation on Mac OS X
      2018-09-19 maint: mktime.c now shared with glibc
      2018-09-18 file-has-acl: fix test failure on Cygwin 2.9
      2018-09-18 gettime: nanotime never existed
      * admin/merge-gnulib (AVOIDED_MODULES): Add mkdir.
      * doc/misc/texinfo.tex, lib/acl-internal.c, lib/acl-internal.h:
      * lib/acl_entries.c, lib/explicit_bzero.c, lib/fcntl.c:
      * lib/get-permissions.c, lib/gettime.c, lib/mktime.c:
      * lib/set-permissions.c, lib/stdlib.in.h, m4/acl.m4, m4/gettime.m4:
      Copy from Gnulib.
      * lib/gnulib.mk.in: Regenerate.
      cf1ebfa0
  15. 06 Aug, 2018 1 commit
    • Paul Eggert's avatar
      Use Gnulib regex for lib-src · d904cc83
      Paul Eggert authored
      Emacs regular expressions forked from everyone else long ago.
      This makes it official and should allow simplification later.
      etags.c now uses the glibc regex API, falling back on a
      Gnulib-supplied substitute lib/regex.c if necessary.
      Emacs proper now uses its own regular expression module.
      Although this patch may look dauntingly large, most of it
      was generated automatically by admin/merge-gnulib
      and contains an exact copy of the glibc regex source,
      and the by-hand changes do not grow the Emacs source code.
      * admin/merge-gnulib (GNULIB_MODULES): Add regex.
      (AVOIDED_MODULES): Add btowc, langinfo, lock, mbrtowc, mbsinit,
      nl_langinfo, wchar, wcrtomb, wctype-h.
      * lib-src/Makefile.in (regex-emacs.o): Remove; Gnulib does it now.
      (etags_deps, etags_libs): Remove regex-emacs.o.
      * lib-src/etags.c: Go back to including regex.h.
      (add_regex): Use unsigned char translation array,
      since glibc regex requires that.
      * lib/Makefile.in (not_emacs_OBJECTS, for_emacs_OBJECTS): New macros.
      (libegnu_a_OBJECTS): Use them, to avoid building e-regex.o.
      * lib/gnulib.mk.in, m4/gnulib-comp.m4: Regenerate.
      * lib/regcomp.c, lib/regex.c, lib/regex.h, lib/regex_internal.c:
      * lib/regex_internal.h, lib/regexec.c, m4/builtin-expect.m4:
      * m4/eealloc.m4, m4/glibc21.m4, m4/mbstate_t.m4, m4/regex.m4:
      New files, copied from Gnulib.
      * src/regex-emacs.h, src/conf_post.h:
      (RE_TRANSLATE_TYPE, RE_TRANSLATE, RE_TRANSLATE_P):
      Move from src/conf_post.h to src/regex-emacs.h,
      so that they don’t interfere with compiling lib/regex.c.
      d904cc83
  16. 02 Aug, 2018 1 commit
    • Paul Eggert's avatar
      Substitute a <ieee754.h> on hosts lacking it · d216d7d2
      Paul Eggert authored
      * .gitignore: Add lib/ieee754.h.
      * admin/merge-gnulib (GNULIB_MODULES): Add ieee754-h.
      * configure.ac: Remove ieee754.h check, as Gnulib now does that.
      * etc/NEWS: Mention this.
      * lib/gnulib.mk.in, m4/gnulib-comp.m4: Regenerate.
      * lib/ieee754.in.h, m4/ieee754-h.m4: New files, from Gnulib.
      * src/lisp.h (IEEE_FLOATING_POINT): Now a macro so that it
      can be used in #if.
      * src/lread.c, src/print.c: Include <ieee754.h> if
      IEEE_FLOATING_POINT, not if HAVE_IEEE754_H.
      * src/lread.c (string_to_number):
      * src/print.c (float_to_string):
      Process NaNs only on IEEE hosts, and assume <ieee754.h>
      in that case.
      d216d7d2
  17. 08 Jul, 2018 2 commits
  18. 21 May, 2018 1 commit
    • Paul Eggert's avatar
      Update from Gnulib · 79f15092
      Paul Eggert authored
      This incorporates:
      2018-05-21 crypto: omit stream ops Emacs doesn’t need
      2018-05-13 truncate: Fix compilation error on Android
      2018-05-13 imaxdiv: Fix compilation error on Android
      2018-05-13 Support selective inclusion of recent mingw.org headers
      2018-05-13 Add cross-compilation guesses for Linux systems sans glibc
      2018-05-13 stdioext: Fix compilation errors with newer Android headers
      2018-05-07 af_alg: Pacify --enable-gcc-warnings
      2018-05-06 af_alg: Fix bug with streams that are not at position 0
      2018-05-06 Followup to 'af_alg: New module'
      2018-05-05 crypto/{md5,sha1,sha256,sha512}: simplify
      2018-05-05 af_alg: New module
      2018-05-05 af_alg: Improve function signature
      2018-04-28 md5sum: Use AF_ALG when available
      2018-04-28 sha512sum: Use AF_ALG when available
      2018-04-28 sha256sum: Use AF_ALG when available
      2018-04-28 sha1sum: Use AF_ALG when available
      2018-05-05 all: Replace more http URLs by https URLs
      2018-05-03 maint: port more modules to GCC 8
      2018-05-03 Simplify code; drop support for Borland C++ on Windows
      * admin/merge-gnulib (GNULIB_MODULES): Use crypto/md5-buffer
      rather than crypto/md5, since Emacs doesn’t use the stream
      operations that in recent Gnulib pull in other stuff Emacs doesn’t
      need.  Similarly for crypto/sha1-buffer, crypto/sha256-buffer,
      crypto/sha512-buffer.
      * build-aux/config.guess, build-aux/config.sub, lib/dosname.h:
      * lib/dup2.c, lib/errno.in.h, lib/euidaccess.c, lib/fcntl.c:
      * lib/fcntl.in.h, lib/fpending.c, lib/fsync.c, lib/getdtablesize.c:
      * lib/getopt.c, lib/gettimeofday.c, lib/inttypes.in.h, lib/md5.c:
      * lib/md5.h, lib/open.c, lib/pipe2.c, lib/putenv.c, lib/sha1.c:
      * lib/sha1.h, lib/sha256.c, lib/sha256.h, lib/sha512.c:
      * lib/sha512.h, lib/stat-time.h, lib/stdio-impl.h, lib/stdio.in.h:
      * lib/stdlib.in.h, lib/sys_stat.in.h, lib/sys_types.in.h:
      * lib/timespec.h, lib/unistd.in.h, lib/utimens.c, m4/c-strtod.m4:
      * m4/gnulib-common.m4, m4/inttypes.m4, m4/lstat.m4, m4/nocrash.m4:
      * m4/pselect.m4, m4/readlink.m4, m4/stdio_h.m4, m4/symlink.m4:
      * m4/unistd_h.m4, m4/utimens.m4:
      Copy from Gnulib.
      * lib/gnulib.mk.in, m4/gnulib-comp.m4: Regenerate.
      79f15092
  19. 01 Jan, 2018 1 commit
  20. 02 Oct, 2017 1 commit
    • Paul Eggert's avatar
      Port file-system-info to non-Microsoft · 135bca57
      Paul Eggert authored
      * admin/merge-gnulib (GNULIB_MODULES): Add fsusage.
      * doc/emacs/files.texi (Directories): Remove documentation of
      now-obsolete directory-free-space-program and
      directory-free-space-args.
      * etc/NEWS: Mention change.
      * etc/PROBLEMS: Slow df is no longer a problem.
      * lib/fsusage.c, lib/fsusage.h, m4/fsusage.m4:
      New files, copied from Gnulib.
      * lib/gnulib.mk.in, m4/gnulib-comp.m4: Regenerate.
      * lisp/dired.el (dired-free-space-program)
      (dired-free-space-args): These aliases are now obsolete.
      * lisp/files.el (directory-free-space-program)
      (directory-free-space-args): Now obsolete.
      (get-free-disk-space): Just call file-system-info instead
      of the now-obsolete directory-free-space-program.
      * nt/gnulib-cfg.mk (OMIT_GNULIB_MODULE_fsusage): New macro.
      * src/fileio.c: Include fsusage.h.
      (blocks_to_bytes, Ffile_system_info) [!DOS_NT]: New functions.
      (syms_of_fileio) [!DOS_NT]: Defsubr file-system-info.
      135bca57
  21. 13 Sep, 2017 1 commit
    • Paul Eggert's avatar
      Prefer HTTPS to FTP and HTTP in documentation · bc511a64
      Paul Eggert authored
      Most of this change is to boilerplate commentary such as license URLs.
      This change was prompted by ftp://ftp.gnu.org's going-away party,
      planned for November.  Change these FTP URLs to https://ftp.gnu.org
      instead.  Make similar changes for URLs to other organizations moving
      away from FTP.  Also, change HTTP to HTTPS for URLs to gnu.org and
      fsf.org when this works, as this will further help defend against
      man-in-the-middle attacks (for this part I omitted the MS-DOS and
      MS-Windows sources and the test tarballs to keep the workload down).
      HTTPS is not fully working to lists.gnu.org so I left those URLs alone
      for now.
      bc511a64
  22. 16 Aug, 2017 1 commit
    • Paul Eggert's avatar
      Merge from Gnulib; use ‘open’ for O_CLOEXEC · 794c3cd3
      Paul Eggert authored
      This incorporates:
      2017-08-15 renameat: ensure declaration in <stdio.h> on NetBSD
      2017-08-15 extensions: enable NetBSD specific extensions
      2017-08-14 open: support O_CLOEXEC
      2017-08-13 reallocarray: new module
      * admin/merge-gnulib (AVOIDED_MODULES): Remove ‘open’, since
      it now supports O_CLOEXEC and this simplifies Emacs.
      * build-aux/config.guess, lib/fcntl.in.h, lib/stdio.in.h:
      * lib/stdlib.in.h, m4/extensions.m4, m4/stdlib_h.m4:
      Copy from Gnulib.
      * lib/cloexec.c, lib/cloexec.h, lib/open.c:
      * m4/mode_t.m4, m4/open-cloexec.m4, m4/open.m4:
      New files, copied from Gnulib.
      * lib/gnulib.mk.in, m4/gnulib-comp.m4: Regenerate.
      * lib-src/etags.c (O_CLOEXEC) [WINDOWSNT]:
      Remove, as Gnulib does this for us.
      * src/filelock.c (create_lock_file):
      * src/sysdep.c (emacs_open, emacs_pipe):
      Don’t worry about O_CLOEXEC == 0, as Gnulib no longer sets it to 0.
      794c3cd3
  23. 12 Aug, 2017 1 commit
    • Paul Eggert's avatar
      Improve make-temp-file performance on local files · a6ad98ad
      Paul Eggert authored
      For the motivation behind this patch, please see Bug#28023 and:
      http://emacshorrors.com/posts/make-temp-name.html
      Although, given the recent changes to Tramp, the related security
      problem in make-temp-file is already fixed, make-temp-file still has
      several unnecessary system calls.  In the typical case on GNU/Linux,
      this patch replaces 8 syscalls (symlink, open, close, readlinkat, uname,
      getpid, unlink, umask) by 2 (open, close).
      * admin/merge-gnulib (GNULIB_MODULES): Add tempname, now
      that Emacs is using it directly.
      * configure.ac (AUTO_DEPEND): Remove AC_SYS_LONG_FILE_NAMES;
      no longer needed.
      * lib/gnulib.mk.in, m4/gnulib-comp.m4: Regenerate.
      * lisp/files.el (files--make-magic-temp-file): Rename from
      make-temp-file.
      (make-temp-file): Use make-temp-file-internal for
      non-magic file names.
      * src/fileio.c: Include tempname.h.
      (make_temp_name_tbl, make_temp_name_count)
      (make_temp_name_count_initialized_p, make_temp_name): Remove.
      (Fmake_temp_file_internal): New function.
      (Fmake_temp_name): Use it.
      * src/filelock.c (get_boot_time): Use Fmake_temp_file_internal
      instead of make_temp_name.
      a6ad98ad
  24. 09 Aug, 2017 1 commit
    • Paul Eggert's avatar
      Merge from gnulib · 904be8c4
      Paul Eggert authored
      This incorporates:
      2017-08-09 tempname: do not depend on secure_getenv
      2017-08-08 extensions: add _OPENBSD_SOURCE
      2017-08-06 manywarnings: Add support for C++
      2017-08-06 warnings, manywarnings: Add support for multiple languages
      * admin/merge-gnulib: Don't use m4/manywarnings-c++.m4.
      * lib/gnulib.mk.in, m4/gnulib-comp.m4: Regenerate.
      * lib/secure_getenv.c, m4/secure_getenv.m4: Remove.
      * lib/tempname.c, m4/extensions.m4, m4/manywarnings.m4, m4/warnings.m4:
      Copy from gnulib.
      904be8c4
  25. 31 Jul, 2017 1 commit
    • Paul Eggert's avatar
      Avoid most stat calls when completing file names · 3a8d0cc8
      Paul Eggert authored
      * admin/merge-gnulib (GNULIB_MODULES): Add d-type.
      * lib/gnulib.mk.in, m4/gnulib-comp.m4: Regenerate.
      * m4/d-type.m4: New file, copied from gnulib.
      * src/dired.c (DT_UNKNOWN, DT_DIR, DT_LINK)
      [!HAVE_STRUCT_DIRENT_D_TYPE]: New constants.
      (dirent_type): New function.
      (file_name_completion): Use it, to avoid unnecessary calls to
      stat-like functions on GNU/Linux and other platforms with d_type.
      (file_name_completion_stat): Just follow the link; there is no
      need to try first with AT_SYMLINK_NOFOLLOW since the directory
      entry was already checked to exist.
      3a8d0cc8
  26. 24 Jul, 2017 1 commit
    • Paul Eggert's avatar
      Merge from gnulib · 9b971bdd
      Paul Eggert authored
      This incorporates:
      2017-07-23 Rename module 'strftime' to 'nstrftime'
      * admin/merge-gnulib (GNULIB_MODULES): Add nstrftime, remove strftime.
      * build-aux/config.guess: Copy from gnulib.
      * lib/nstrftime.c: Rename from lib/strftime.c.
      * m4/nstrftime.m4: Rename from m4/strftime.m4.
      * lib/gnulib.mk.in, m4/gnulib-comp.m4: Regenerate.
      9b971bdd
  27. 16 Jul, 2017 1 commit
    • Paul Eggert's avatar
      Use explicit_bzero to clear GnuTLS keys · 59f69721
      Paul Eggert authored
      * admin/merge-gnulib (GNULIB_MODULES): Add explicit_bzero.
      * lib/explicit_bzero.c, m4/explicit_bzero.m4: New files.
      * lib/gnulib.mk.in, m4/gnulib-comp.m4: Regenerate.
      * src/gnutls.c (clear_storage): New function.
      (gnutls_symmetric_aead): Use it instead of memset.
      59f69721
  28. 22 Jun, 2017 1 commit
    • Paul Eggert's avatar
      Use unlocked stdio more systematically · f6ef15cf
      Paul Eggert authored
      This can improve performance significantly on stdio-bottlenecked code.
      E.g., make-docfile is 3x faster on my Fedora 25 x86-64 desktop.
      * admin/merge-gnulib (GNULIB_MODULES): Add unlocked-io.
      * lib-src/ebrowse.c, lib-src/emacsclient.c, lib-src/etags.c:
      * lib-src/hexl.c, lib-src/make-docfile.c, lib-src/movemail.c:
      * lib-src/profile.c, lib-src/update-game-score.c:
      Include unlocked-io.h instead of stdio.h, since these programs are
      single-threaded.
      * lib/gnulib.mk.in, m4/gnulib-comp.m4: Regenerate.
      * lib/unlocked-io.h, m4/unlocked-io.m4: New files, copied from Gnulib.
      * src/charset.c, src/cm.c, src/emacs.c, src/image.c, src/keyboard.c:
      * src/lread.c, src/term.c:
      Include sysstdio.h, possibly instead of stdio.h, to define
      the unlocked functions if the system does not provide them.
      * src/charset.c, src/lread.c (getc_unlocked):
      Remove, since sysstdio.h now defines it if needed.
      * src/cm.c (cmputc, cmcheckmagic):
      * src/dispnew.c (update_frame, update_frame_with_menu)
      (update_frame_1, Fsend_string_to_terminal, Fding, bitch_at_user):
      * src/emacs.c (main, Fdump_emacs):
      * src/fileio.c (Fdo_auto_save, Fset_binary_mode):
      * src/image.c (slurp_file, png_read_from_file, png_load_body)
      (our_stdio_fill_input_buffer):
      * src/keyboard.c (record_char, kbd_buffer_get_event, handle_interrupt):
      * src/lread.c (readbyte_from_file):
      * src/minibuf.c (read_minibuf_noninteractive):
      * src/print.c (printchar_to_stream, strout)
      (Fredirect_debugging_output):
      * src/sysdep.c (reset_sys_modes, procfs_ttyname)
      (procfs_get_total_memory):
      * src/term.c (tty_ring_bell, tty_send_additional_strings)
      (tty_set_terminal_modes, tty_reset_terminal_modes)
      (tty_update_end, tty_clear_end_of_line, tty_write_glyphs)
      (tty_write_glyphs_with_face, tty_insert_glyphs)
      (tty_menu_activate):
      * src/xfaces.c (Fx_load_color_file):
      Use unlocked stdio when it should be safe.
      * src/sysstdio.h (clearerr_unlocked, feof_unlocked, ferror_unlocked)
      (fflush_unlocked, fgets_unlocked, fputc_unlocked, fputs_unlocked)
      (fread_unlocked, fwrite_unlocked, getc_unlocked, getchar_unlocked)
      (putc_unlocked, putchar_unloced): Provide substitutes if not declared.
      f6ef15cf
  29. 17 Jun, 2017 1 commit
    • Philipp Stephani's avatar
      Add command to replace buffer contents · d682f0da
      Philipp Stephani authored
      Add a new command 'replace-buffer-contents' that uses the Myers diff
      algorithm to non-destructively replace the accessible portion of the
      current buffer.  The Myers algorithm is implemented in Gnulib.
      
      * src/editfns.c (Freplace_buffer_contents): New command.
      (set_bit, bit_is_set, buffer_chars_equal): New helper functions.
      (syms_of_editfns): Define new command.
      
      * test/src/editfns-tests.el (replace-buffer-contents-1)
      (replace-buffer-contents-2): New unit tests.
      
      * src/buffer.h (BUF_FETCH_CHAR_AS_MULTIBYTE): New helper macro.
      
      * admin/merge-gnulib (GNULIB_MODULES): Add diffseq.h and minmax.h.
      d682f0da
  30. 01 Jun, 2017 1 commit
    • Paul Eggert's avatar
      Improve performance by avoiding strtoumax · 178d0cb5
      Paul Eggert authored
      This made (string-to-number "10") 20% faster on my old desktop,
      an AMD Phenom II X4 910e running Fedora 25 x86-64.
      * admin/merge-gnulib (GNULIB_MODULES): Remove strtoumax.
      * lib/gnulib.mk.in, m4/gnulib-comp.m4: Regenerate.
      * lib/strtoul.c, lib/strtoull.c, lib/strtoumax.c, m4/strtoull.m4:
      * m4/strtoumax.m4: Remove.
      * src/editfns.c (str2num): New function.
      (styled_format): Use it instead of strtoumax.  Use ptrdiff_t
      instead of uintmax_t.  Check for integer overflow.
      * src/lread.c (LEAD_INT, DOT_CHAR, TRAIL_INT, E_EXP):
      Move to private scope and make them enums.
      (string_to_number): Compute integer value directly during
      first pass instead of revisiting it with strtoumax later.
      178d0cb5
  31. 01 May, 2017 1 commit
    • Paul Eggert's avatar
      Merge from gnulib · 634d0a90
      Paul Eggert authored
      This incorporates:
      2017-05-01 New module 'localtime-buffer'
      2017-04-30 utimens: Add support for native Windows
      * admin/merge-gnulib (AVOIDED_MODULES): Add tzset.
      * configure.ac (tzset): No need for Emacs itself to check now.
      * lib/gettimeofday.c, lib/time.in.h, lib/time_rz.c, lib/utimens.c:
      * m4/gettimeofday.m4, m4/time_h.m4, m4/time_rz.m4: Copy from gnulib.
      * lib/gnulib.mk.in, m4/gnulib-comp.m4: Regenerate.
      * lib/localtime-buffer.c, lib/localtime-buffer.h:
      * m4/localtime-buffer.m4: New files, copied from gnulib.
      * src/editfns.c (init_editfns): Assume tzset is callable.
      634d0a90
  32. 30 Apr, 2017 2 commits
    • Paul Eggert's avatar
      Merge from gnulib · b6aa3446
      Paul Eggert authored
      This incorporates:
      2017-04-30 strftime-fixes: New module
      2017-04-30 mktime: Work around TZ problem on native Windows
      2017-04-30 ctime, localtime: New modules
      2017-04-30 gettimeofday: Provide higher resolution on native Windows
      2017-04-29 utime-h: Modernize handling of 'struct utimbuf'
      2017-04-29 Make use of module 'utime-h'
      2017-04-30 Fix a few typos
      * admin/merge-gnulib (AVOIDED_MODULES): Avoid utime-h, too.
      * lib/gettimeofday.c, lib/mktime.c, lib/time.in.h, lib/utimens.c:
      * m4/gettimeofday.m4, m4/include_next.m4, m4/mktime.m4:
      * m4/strftime.m4, m4/time_h.m4, m4/timegm.m4, m4/utimens.m4:
      Copy from gnulib.
      * lib/gnulib.mk.in, m4/gnulib-comp.m4: Regenerate.
      b6aa3446
    • Paul Eggert's avatar
      Merge from gnulib · 7e4dae99
      Paul Eggert authored
      This avoids incorporating the following, which I suspect are
      more trouble for Emacs than they’re worth:
      2017-04-29 stat, fstat: fix time_t etc. on native Windows platforms
      * admin/merge-gnulib (AVOIDED_MODULES): Avoid stat, too.
      * lib/gnulib.mk.in, m4/gnulib-comp.m4: Regenerate.
      * lib/pathmax.h, lib/stat.c, m4/pathmax.m4, m4/stat.m4: Remove.
      7e4dae99
  33. 17 Mar, 2017 1 commit
    • Paul Eggert's avatar
      Switch from Automake to GNU Make · 65faa7bc
      Paul Eggert authored
      Emacs assumes GNU Make, and GNU Make has much of the functionality of
      Automake built-in.  The Emacs build process uses Automake primarily
      because Emacs uses some Gnulib code and Gnulib formerly required
      Automake.  Now that Gnulib no longer requires Automake, Emacs can
      stop using Automake and this should simplify Emacs maintenance
      in the future (Bug#26100).  Although this patch may look long, most of
      it is generated automatically: the changes to build-aux/config.guess,
      build-aux/config.sub, build-aux/install-sh, and lib/gnulib.mk.in are
      all done by admin/merge-gnulib.
      * .gitignore: Remove build-aux/ar-lib, build-aux/compile,
      build-aux/config.guess, build-aux/config.sub, build-aux/depcomp,
      build-aux/install-sh, build-aux/missing, and lib/Makefile.in,
      as they are no longer built by autogen.sh.
      Add lib/gnulib.mk, as it is now built by 'configure'.
      Remove nt/gnulib.mk, as it is no longer built by 'make'.
      * INSTALL.REPO, README, admin/make-tarball.txt:
      Remove mention of Automake.
      * Makefile.in (AUTOCONF, AUTOMAKE, AUTOHEADER, ACLOCAL, lib)
      (AUTOCONF_INPUTS, ACLOCAL_PATH, ACLOCAL_INPUTS)
      ($(srcdir)/aclocal.m4, AUTOMAKE_INPUTS)
      ($(srcdir)/lib/Makefile.in, $(srcdir)/nt/gnulib.mk, am--refresh):
      Remove.
      ($(MAKEFILE_NAME)): Depend on lib/gnulib.mk.in.
      ($(srcdir)/configure, $(srcdir)/src/stamp-h.in)
      ($(srcdir)/src/config.in):
      Use autogen.sh instead of doing it by hand.
      * admin/merge-gnulib (AVOIDED_MODULES, avoided_flags)):
      New vars, to simplify processing of avoided modules.
      (GNULIB_TOOL_FLAGS): Move --avoid flags into AVOIDED_MODULES.
      Add --gnu-make, and change makefile name to gnulib.mk.in.
      Copy config.guess, config.sub, and install-sh too, since
      Automake no longer does that for us.
      * admin/notes/copyright:
      * admin/update_autogen (genfiles):
      Update list of files.
      Remove hack for nt/gnulib.mk, a file that is no longer needed.
      * autogen.sh (progs): Remove Automake.
      (automake_min): Remove.
      Build aclocal.m4 so that autoreconf need not use aclocal.
      * build-aux/config.guess, build-aux/config.sub:
      * build-aux/install-sh:
      New files, copied from Gnulib.  These are now updated by
      admin/merge-gnulib instead by autogen.sh.
      * configure.ac (AC_PROG_MAKE_SET, ACLOCAL_PATH, AM_CONDITIONAL):
      Remove.
      (AM_INIT_AUTOMAKE, AM_SILENT_RULES): Remove call.
      (AC_PROG_CC_C_O): Call this instead of AM_PROG_CC_C_O.
      (BUILDING_FOR_WINDOWSNT, HYBRID_MALLOC_LIB): Remove; no longer needed.
      (--disable-silent-rules): New option, since Automake no longer
      does this for us.
      (AM_V, AM_DEFAULT_V): Set unconditionally, and do not bother
      with AM_SUBST_NOTMAKE.
      (AC_PROG_INSTALL): Add call.
      (MAKEINFO): Do not bother with the 'missing' program.
      (MAKEINFO, SYSTEM_TYPE): AC_SUBST.
      (AC_CONFIG_FILES): Add Makefile, lib/gnulib.mk.
      (SUBDIR_MAKEFILES): Remove duplication.
      * lib/Makefile.am: Remove, replacing with:
      * lib/Makefile.in: New file, with the old Makefile.am contents
      and with the following changes:
      (AUTOMAKE_OPTIONS, BUILT_SOURCES, CLEANFILES, EXTRA_DIST)
      (MOSTLYCLEANDIRS, MOSTLYCLEANFILES, noinst_LIBRARIES, SUFFIXES)
      (AM_CFLAGS, DEFAULT_INCLUDES, libegnu_a_SOURCES, libegnu_a_LIBADD)
      (EXTRA_libegnu_a_SOURCES, libegnu_a_SHORTNAME, libegnu_a_CPPFLAGS):
      Remove.
      (VPATH, abs_top_builddir, top_builddir, top_srcdir, all, AM_V_AR)
      (AM_V_CC, AM_V_GEN, AM_V_at, DEPDIR, DEPFLAGS, MKDEPDIR, SYSTEM_TYPE)
      (libgnu.a, libegnu.a, ETAGS, $(ETAGS), tags, TAGS, clean)
      (mostlyclean, distclean, bootstrap-clean, maintainer-clean):
      New macros and rules, since Automake no longer does them.
      Include ../nt/gnulib-cfg.mk if SYSTEM_TYPE is windows-nt,
      instead of including ../nt/gnulib.mk if BUILDING_FOR_WINDOWS_NT.
      Include dependency files if AUTO_DEPEND.
      (ALL_CFLAGS, AUTOCONF_INPUTS, libgnu_a_OBJECTS, libegnu_a_OBJECTS):
      New macros.
      (bootstrap-clean): Depend on distclean, not maintainer-clean,
      and remove gnulib.mk.
      (AUTOCONF_INPUTS, $(top_srcdir)/configure, ../config.status, Makefile):
      New macros and rules, copied from ../Makefile.in.
      ($(libegnu_a_OBJECTS), $(libgnu_a_OBJECTS)): Depend on BUILT_SOURCES.
      (.c.o, e-%.o): New generic rules.
      * lib/gnulib.mk: Remove.
      * lib/gnulib.mk.in: New file, which is built by autogen.sh
      and contains much of what used to be in lib/gnulib.mk.
      * m4/gnulib-common.m4: Copy from gnulib.
      * make-dist: Do not distribute build-aux/compile, build-aux/depcomp,
      build-aux/missing, build-aux/ar-lib, lib/Makefile.am, nt/gnulib.mk,
      nt/gnulib-modules-to-delete.cfg.  Distribute lib/Makefile.in,
      lib/gnulib.mk.in, and nt/gnulib-cfg.mk instead.
      * nt/Makefile.in (AM_V_GEN, am__v_GEN_, am__v_GEN_0)
      (am__v_GEN_1, ${srcdir}/gnulib.mk): Remove.
      * nt/gnulib-cfg.mk: New file, which supersedes ...
      * nt/gnulib-modules-to-delete.cfg: ... this file, which is removed.
      * src/Makefile.in (ACLOCAL_INPUTS): Remove.
      (AUTOCONF_INPUTS): Merge ACLOCAL_INPUTS into it.
      ($(top_srcdir)/configure, ../config.status, config.in Makefile):
      Defer to parent Makefile.
      65faa7bc
  34. 12 Mar, 2017 1 commit
    • Paul Eggert's avatar
      Remove some stray gnulib files · 026c2cbf
      Paul Eggert authored
      * admin/merge-gnulib: rm m4/gnulib-tool.m4 too.
      (GNULIB_MODULES): Remove unsetenv, as it is not needed and
      the --avoid=unsetenv option avoided most of it anyway.
      * lib/unsetenv.c, m4/gnulib-tool.m4, m4/setenv.m4: Remove.
      * lib/gnulib.mk: Regenerate.
      026c2cbf
  35. 03 Mar, 2017 1 commit
    • Paul Eggert's avatar
      logb now works correctly on large integers · 74f87fd1
      Paul Eggert authored
      * admin/merge-gnulib (GNULIB_MODULES): Add count-leading-zeros.
      * etc/NEWS: Document the change.
      * lib/count-leading-zeros.c, lib/count-leading-zeros.h:
      * m4/count-leading-zeros.m4: New files, copied from Gnulib.
      * lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
      * src/floatfns.c: Include count-leading-zeros.h.
      (Flogb): Do not convert fixnum to float before taking the log,
      as the rounding error can cause the answer to be off by 1.
      * src/lisp.h (EMACS_UINT_WIDTH): New constant.
      * test/src/floatfns-tests.el (logb-extreme-fixnum): New test.
      74f87fd1
  36. 01 Jan, 2017 1 commit
    • Paul Eggert's avatar
      Do not use Gnulib’s m4/wint_t.m4. · 65eee839
      Paul Eggert authored
      * admin/merge-gnulib: Remove m4/wint_t.m4 when merging.
      Fix typo so that warn-on-use.m4 is removed too.
      * configure.ac (gt_TYPE_WINT_T): New macro, replacing Gnulib’s.
      * m4/wint_t.m4: Remove.
      65eee839