mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-08 15:35:02 +00:00
8654f9d7d6
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_MODULES): Add fdopendir, fstatat, readlinkat. (GNULIB_TOOL_FLAGS): Do not avoid at-internal, openat-h. Avoid dup, open, opendir. * nt/inc/sys/stat.h (fstatat): * nt/inc/unistd.h (readlinkat): New decls. * src/conf_post.h (GNULIB_SUPPORT_ONLY_AT_FDCWD): Remove. * src/dired.c: Include <fcntl.h>. (open_directory): New function, which uses open and fdopendir rather than opendir. DOS_NT platforms still use opendir, though. (directory_files_internal, file_name_completion): Use it. (file_attributes): New function, with most of the old Ffile_attributes. (directory_files_internal, Ffile_attributes): Use it. (file_attributes, file_name_completion_stat): First arg is now fd, not dir name. All uses changed. Use fstatat rather than lstat + stat. (file_attributes): Use emacs_readlinkat rather than Ffile_symlink_p. * src/fileio.c: Include <allocator.h>, <careadlinkat.h>. (emacs_readlinkat): New function, with much of the old Ffile_symlink_p, but with an fd argument for speed. It uses readlinkat rather than careadlinkatcwd, so that it need not assume the working directory. (Ffile_symlink_p): Use it. * src/filelock.c (current_lock_owner): Use emacs_readlinkat rather than emacs_readlink. * src/lisp.h (emacs_readlinkat): New decl. (READLINK_BUFSIZE, emacs_readlink): Remove. * src/sysdep.c: Do not include <allocator.h>, <careadlinkat.h>. (emacs_norealloc_allocator, emacs_readlink): Remove. This stuff is moved to fileio.c. * src/w32.c (fstatat, readlinkat): New functions. (careadlinkat): Don't check that fd == AT_FDCWD. (careadlinkatcwd): Remove; no longer needed. Fixes: debbugs:13539 |
||
---|---|---|
.. | ||
charsets | ||
coccinelle | ||
grammars | ||
notes | ||
nt | ||
unidata | ||
admin.el | ||
alloc-colors.c | ||
build-configs | ||
bzrmerge.el | ||
ChangeLog | ||
check-doc-strings | ||
CPP-DEFINES | ||
cus-test.el | ||
diff-tar-files | ||
FOR-RELEASE | ||
MAINTAINERS | ||
make-emacs | ||
make-tarball.txt | ||
merge-gnulib | ||
quick-install-emacs | ||
README |
Copyright (C) 2001-2013 Free Software Foundation, Inc. See the end of the file for license conditions. The admin directory This directory contains scripts and other things useful for developing and maintaining Emacs. These files are not part of Emacs releases because they are not deemed generally useful, and you have to know what you do when using them. * Instructions and scripts used to prepare an Emacs release. ** FOR-RELEASE Living list of activities that must be completed before the next release. ** make-tarball.txt Instructions to create pretest or release tarballs, announcements, etc. ** admin.el Utilities for setting version numbers and alike. * Scripts that can be used to build and test Emacs. ** build-configs Build Emacs in various configurations. ** make-emacs Build Emacs in various ways. ** quick-install-emacs Install emacs quickly (`incrementally'). ** alloc-colors.c A utility program that allocates a given number of colors on X. Can be used to debug Emacs with dense colormaps (PseudoColor). ** check-doc-strings Check doc strings against documentation. ** cus-test.el Tests for custom types and load problems. ** diff-tar-files Show files added/removed between two tar files. Brief description of sub-directories: charsets scripts for generating charset map files in ../etc/charsets unidata scripts for generating character property files in ../lisp/international This file is part of GNU Emacs. GNU Emacs is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. GNU Emacs is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. Local variables: mode: outline paragraph-separate: "[ ]*$" end: