1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-12-02 08:22:22 +00:00
Commit Graph

1021 Commits

Author SHA1 Message Date
Eli Zaretskii
6cd0eaeb6b Fixed mingw-cfg.site to avoid some gnulib replacements. 2013-03-30 12:42:50 +03:00
Eli Zaretskii
dc4cb8d518 Merge from trunk. 2013-03-30 10:24:44 +03:00
Eli Zaretskii
98f3b8c6be Move MS-Windows definition of TERM_HEADER from ms-w32.h to config.nt.
nt/inc/ms-w32.h (TERM_HEADER): Remove definition.
 nt/config.nt (TERM_HEADER): Move the definition to "w32term.h" from
 ms-w32.h.
2013-03-30 10:10:58 +03:00
Eli Zaretskii
627d532608 Merge from trunk. 2013-03-30 09:34:05 +03:00
Eli Zaretskii
668284362c Enable the 'copysign' primitive on MS-Windows.
nt/inc/ms-w32.h (copysign) [_MSC_VER]: Redirect to _copysign.
 nt/config.nt (HAVE_COPYSIGN): Define.
2013-03-30 09:12:49 +03:00
Eli Zaretskii
cb11bd957d Finished with config.nt diffs. Problem with mmsystem.h remains. 2013-03-29 22:53:25 +03:00
Eli Zaretskii
da6c96247a Finished first cut of mingw-cfg.site. 2013-03-29 18:25:48 +03:00
Eli Zaretskii
ef90474243 Handled fstatat and fsync, fixed fdopendir. 2013-03-29 15:36:43 +03:00
Eli Zaretskii
52aa6b170b Fix CLASH_DETECTION and 'not needed' result for fdopendir. 2013-03-29 14:38:13 +03:00
Eli Zaretskii
c38ad11c2a Added nt/mingw-cfg.site, first few vars defined on it. 2013-03-29 14:29:23 +03:00
Juanma Barranquero
a0c0aab26b nt/config.nt: Sync with autogen/config.in.
(HAVE_XKBGETKEYBOARD): Remove.
(HAVE_XKB): New macro.
2013-03-29 04:02:22 +01:00
Eli Zaretskii
5d611e0450 Use 'restrict' in gettimeofday arguments, and make ms-w32.h compatible. 2013-03-28 22:51:26 +02:00
Eli Zaretskii
97dababa47 Fix the gettimeofday_timezone test. 2013-03-28 22:20:40 +02:00
Eli Zaretskii
d76bf86f43 Merge from trunk and resolve conflicts. 2013-03-28 20:13:59 +02:00
Eli Zaretskii
42663650ba Fix last commit in nt/makefile.w32-in, which broke bootstrap.
nt/makefile.w32-in (all-other-dirs-nmake, all-other-dirs-gmake)
 (bootstrap, bootstrap-nmake, bootstrap-gmake, install-addpm):
 Depend on .exe files.
2013-03-27 12:09:44 +02:00
Eli Zaretskii
e0c3eb8913 Avoid MinGW64 compiler warnings.
nt/inc/ms-w32.h (sys_localtime) [_W64]: Provide a prototype, to
 avoid MinGW64 compiler warnings in editfns.c.
2013-03-27 10:40:24 +02:00
Eli Zaretskii
849e8b0160 Fix rules in nt/makefile.w32-in for parallel builds on MS-Windows.
nt/makefile.w32-in (ALL): Depend on *.exe files, not on phony names
 without the .exe suffix.
 (addpm, ddeclient, cmdproxy, addsection, preprep): Remove phony
 targets.
 (.PHONY): Remove.
2013-03-27 10:31:16 +02:00
Eli Zaretskii
c8e9d2b4ed Fix compilation of addpm with MinGW64.
nt/addpm.c (_WIN32_IE) [_W64]: Move after inclusion of standard
 headers, since that's where _W64 is declared by MinGW64.
2013-03-27 09:21:43 +02:00
Eli Zaretskii
ee0fb40e7c Fix _setjmp calls for MinGW64.
nt/config.nt: Don't undefine HAVE__SETJMP here.
 nt/inc/ms-w32.h (HAVE__SETJMP) [_W64]: Undefine for MinGW64 here..
2013-03-26 22:30:43 +02:00
Eli Zaretskii
be3a31b22b Fix problem with _setjmp in MinGW64-compiled Emacs.
nt/inc/ms-w32.h (USE_NO_MINGW_SETJMP_TWO_ARGS): Don't define.
 nt/config.nt (HAVE__SETJMP) [!_W64]: Don't define for MinGW64, as
 its _setjmp accepts 2 arguments.
2013-03-26 19:32:52 +02:00
Eli Zaretskii
9536ec028c More MinGW64 related fixes.
nt/addsection.c (_ANONYMOUS_UNION, _ANONYMOUS_STRUCT): Do not
 define for MinGW64.
 nt/preprep.c (_ANONYMOUS_UNION, _ANONYMOUS_STRUCT): Do not define
 for MinGW64.
2013-03-26 16:26:24 +02:00
Eli Zaretskii
a18d7de614 Fix more MinGW64 incompatibilities.
Reported by ׃scar Fuentes in

  http://lists.gnu.org/archive/html/emacs-devel/2013-03/msg00733.html

 nt/inc/ms-w32.h (_WIN32_WINNT) [!_W64]: Don't define for MinGW64.
 nt/inc/sys/stat.h (chmod): Remove _CRTIMP from prototype.

 src/w32.c (_PROCESS_MEMORY_COUNTERS_EX) [_WIN32_WINNT < 0x0500]:
 Define only for _WIN32_WINNT less than 0x0500.
2013-03-26 15:45:01 +02:00
Eli Zaretskii
b88b62dec9 Fix more incompatibilities between MinGW.org and MinGW64 headers
Reported by ׃scar Fuentes in
  http://lists.gnu.org/archive/html/emacs-devel/2013-03/msg00699.html
and in
  http://lists.gnu.org/archive/html/emacs-devel/2013-03/msg00707.html.

 nt/inc/ms-w32.h (USE_NO_MINGW_SETJMP_TWO_ARGS) [_W64]: Define to 1.
 For MinGW64, include sys/types.h and time.h.
 nt/inc/sys/time.h (struct timeval) [!_W64]: Guard definition with _W64.
 (struct timezone) [!_TIMEZONE_DEFINED]: Guard definition with
 _TIMEZONE_DEFINED.
 nt/addpm.c (_WIN32_IE) [_W64]: For MinGW64, don't define to 0x400.
 nt/inc/sys/stat.h: Remove _CRTIMP from prototypes of fstat, stat,
 lstat, and fstatat.

 lib-src/ntlib.c (struct timespec) [!_TIMEZONE_DEFINED]: Define the
 struct only if _TIMEZONE_DEFINED is not defined.

 src/w32term.c (WCRANGE, GLYPHSET): Don't define if _W64 is defined.
 src/w32.c (REPARSE_DATA_BUFFER): Guard with
 MAXIMUM_REPARSE_DATA_BUFFER_SIZE being defined.
2013-03-26 10:21:27 +02:00
Eli Zaretskii
553fabe73a Fix incompatibilities between MinGW.org and MinGW64 headers
Problems were reported by ׃scar Fuentes in
 
  http://lists.gnu.org/archive/html/emacs-devel/2013-03/msg00611.html.

 nt/inc/ms-w32.h (struct timespec): Don't define if
 _TIMESPEC_DEFINED is already defined.
 (sigset_t) [!_POSIX]: Typedef for MinGW64.
 (_WIN32_WINNT, WIN32_LEAN_AND_MEAN): Move definitions before
 including the first system header, to avoid redefinition if some
 system header defines a default value.
 nt/inc/sys/time.h (struct itimerval): Don't define if
 _TIMESPEC_DEFINED is already defined.
2013-03-25 15:48:37 +02:00
Eli Zaretskii
53761081f7 Fix problems with MSVC build reported in bug #13939.
nt/inc/stdint.h (UINTPTR_MAX): Define.
 nt/nmake.defs (libc): Fix syntax of !if conditional.
2013-03-16 10:55:38 +02:00
Juanma Barranquero
5a96718d79 nt/config.nt: Sync with autogen/config.in.
(BSD_SYSTEM, BSD_SYSTEM_AHB, HAVE_ALARM, HAVE__PUTENV): Remove.
(HAVE_DECL_ALARM, HAVE_DECL_FDATASYNC, HAVE_DECL__PUTENV)
(HAVE_FDATASYNC): New macros.
2013-03-15 18:12:03 +01:00
Paul Eggert
47d7532e09 File synchronization fixes.
* 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
2013-03-13 11:42:22 -07:00
Paul Eggert
707431575a FILE's lock is now always .#FILE and may be a regular file.
* etc/NEWS: Document this.
* nt/inc/unistd.h (O_NOFOLLOW): New macro.
* src/filelock.c: Include <c-ctype.h>.
(MAX_LFINFO): New top-level constant.
(lock_info_type): Remove members pid, boot_time.  Add members at,
dot, colon.  Change user member to be the entire buffer, not a
pointer.  This allows us to handle the case where a foreign
pid or boot time exceeds the local range.  All uses changed.
(LINKS_MIGHT_NOT_WORK): New constant.
(FREE_LOCK_INFO): Remove, as the pieces no longer need freeing.
(defined_WINDOWSNT): Remove.
(MAKE_LOCK_NAME, file_in_lock_file_name):
Always use .#FILE (not .#-FILE) for the file lock,
even if it is a regular file.
(rename_lock_file): New function.
(create_lock_file): Use it.
(create_lock_file, read_lock_data):
Prefer a symbolic link for the lock file, falling back on a
regular file if symlinks don't work.  Do not try to create
symlinks on MS-Windows, due to security hassles.  Stick with
POSIXish functions (open, read, write, close, fchmod, readlink, symlink,
link, rename, unlink, mkstemp) when creating locks, as a GNUish
host may be using a Windowsish file system, and cannot use
MS-Windows-only system calls.  Fall back on mktemp if mkstemp
doesn't work.  Don't fail merely because of a symlink-contents
length limit in the current file system; fall back on regular
files.  Increase the symlink contents length limit to 8 KiB, this
should be big enough for any real use and doesn't crunch the
stack.
(create_lock_file, lock_file_1, read_lock_data):
Simplify allocation of lock file buffers now that they fit in 8 KiB.
(lock_file_1): Return error number, not bool.  All callers changed.
(ELOOP): New macro, if not already defined.
(read_lock_data): Return size of lock file contents, not Lisp object.
All callers changed.  Handle a race condition if some other process
replaces a regular-file lock with a symlink lock or vice versa,
while we're trying to read the lock.
(current_lock_owner): Parse contents more carefully, to help avoid
confusing a regular-file lock with some other application's use
of the file.  Check for lock file contents being too long, or
not parsing correctly.
(current_lock_owner, lock_file):
Allow foreign pid and boot times that exceed the local range.
(current_lock_owner, lock_if_free, lock_file):
Simplify allocation of lock file contents.
* src/w32.c (sys_rename_replace): New function, containing most of
the contents of the old sys_rename.
(sys_rename): Use it.
(fchmod): New dummy function.
* src/w32.h (sys_rename_replace, fchmod): New decls.

Fixes: debbugs:13807
2013-03-05 14:35:41 -08:00
Juanma Barranquero
8bd104b35b nt/config.nt: Sync with autogen/config.in.
(DATA_START, ORDINARY_LINK): Remove.
(HAVE_DATA_START, HAVE__PUTENV): New macros.
2013-03-04 18:14:08 +01:00
Eli Zaretskii
343a2aefb5 Implement CLASH_DETECTION for MS-Windows.
src/filelock.c [WINDOWSNT]: Include w32.h.
 (MAKE_LOCK_NAME): Don't use 'lock', it clashes with MS runtime
 function of that name.  Up-case the macro arguments.
 (IS_LOCK_FILE): New macro.
 (fill_in_lock_file_name): Use IS_LOCK_FILE instead of S_ISLNK.
 (create_lock_file): New function, with body extracted from
 lock_file_1.
 [WINDOWSNT]: Implement lock files by writing a regular file with
 the lock information as its contents.
 (read_lock_data): New function, on Posix platforms just calls
 emacs_readlinkat.
 [WINDOWSNT]: Read the lock info from the file.
 (current_lock_owner): Call read_lock_data instead of calling
 emacs_readlinkat directly.
 (lock_file) [WINDOWSNT]: Run the file name through
 dostounix_filename.
 src/w32proc.c (sys_kill): Support the case of SIG = 0, in which case
 just check if the process by that PID exists.
 src/w32.c (sys_open): Don't reset the _O_CREAT flag if _O_EXCL is
 also present, as doing so will fail to error out if the file
 already exists.
 src/makefile.w32-in ($(BLD)/filelock.$(O)): Depend on src/w32.h.

 nt/inc/ms-w32.h (BOOT_TIME_FILE): Define.
 nt/config.nt (CLASH_DETECTION): Define to 1.

 lisp/emacs-lisp/bytecomp.el (byte-recompile-directory): Reject files
 that match "\`\.#", to avoid compiling lock files, even if they
 are readable (as they are on MS-Windows).

 doc/emacs/files.texi (Interlocking): Don't refer to symlinks as the
 exclusive means of locking files.

 etc/NEWS: Mention support for lock files on MS-Windows.
2013-02-25 19:36:03 +02:00
Eli Zaretskii
c793958519 Remove functions and macros unused on MS-Windows.
src/w32.c (sys_chown): Remove unused function.

 nt/inc/ms-w32.h (chown, logb): Remove, unused.
2013-02-16 16:16:07 +02:00
Eli Zaretskii
cd91fb4b0a Don't use __STDC__ on MS-Windows unless necessary (Bug #9066).
nt/inc/ms-w32.h (__STDC__): Fiddle with value only for MSVC.

 src/w32term.c <input_signal_count>: Declare 'volatile' unconditionally.
2013-02-16 15:59:37 +02:00
Juanma Barranquero
ae18dc22e4 nt/config.nt: Sync with autogen/config.in.
(GC_MARK_STACK): Remove.
(GNULIB_FDOPENDIR, HAVE_DECL_FDOPENDIR, HAVE_DECL_MEMRCHR)
(HAVE_DIRENT_H, HAVE_FDOPENDIR, HAVE_FSTATAT, HAVE_MEMRCHR)
(HAVE_WORKING_FSTATAT_ZERO_FLAG, _NETBSD_SOURCE): New macros.
2013-02-13 01:52:04 +01:00
Eli Zaretskii
8c0905acd1 MS-Windows followup for 2013-02-11T23:37:18Z!eggert@cs.ucla.edu.
lib/makefile.w32-in (GNULIBOBJS): Add $(BLD)/memrchr.$(O).
 ($(BLD)/memrchr.$(O)): New dependency.

 nt/inc/ms-w32.h: Add prototype for memrchr.
2013-02-12 05:52:04 +02:00
Glenn Morris
8c4b24b2ab Merge from emacs-24; up to 2012-12-14T15:22:24Z!monnier@iro.umontreal.ca 2013-02-06 22:23:54 -08:00
Glenn Morris
4e0b84797f Bump version number to 24.2.93 2013-02-06 22:15:20 -08:00
Eli Zaretskii
970b321fd0 Update nt/INSTALL. 2013-02-02 10:23:52 +02:00
Paul Eggert
8654f9d7d6 Use fdopendir, fstatat and readlinkat, for efficiency.
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
2013-01-31 22:30:51 -08:00
Eli Zaretskii
cf01a35981 Make opendir on MS-Windows accept a 'const char *'.
src/w32.c (opendir): Now accepts a 'const char *'.

 nt/inc/dirent.h (opendir): Update prototype.
2013-01-28 16:41:08 +02:00
Eli Zaretskii
99a7a59166 MS-Windows followup to bugfix #13387.
nt/inc/unistd.h (O_IGNORE_CTTY): Define, as it is unconditionally
 used in term.c.
2013-01-11 11:33:54 +02:00
Glenn Morris
c4dd9efc9e Bump version to 24.2.92
Regenerate etc/AUTHORS and lisp/ldefs-boot.el
2013-01-09 18:45:32 -08:00
Juanma Barranquero
401d44c9a8 nt/config.nt: Sync with autogen/config.in.
(HAVE_GTK_HANDLE_BOX_NEW, HAVE_GTK_TEAROFF_MENU_ITEM_NEW): New macros.
2013-01-09 16:07:44 +01:00
Glenn Morris
0a8bf3afca Merge from emacs-24; up to 2012-12-06T07:33:20Z!rgm@gnu.org 2013-01-02 18:37:57 -08:00
Glenn Morris
b8573968d8 Add 2013 to yet more FSF copyright years 2013-01-02 17:46:47 -08:00
Glenn Morris
f0ddbf7b7f Add 2013 to more copyright years 2013-01-02 17:35:49 -08:00
Paul Eggert
09b8afb6c8 Update copyright dates to 2013. 2013-01-02 08:30:50 -08:00
Paul Eggert
0877d0dc24 Merge from emacs-24; up to 2012-12-06T01:39:03Z!monnier@iro.umontreal.ca 2013-01-02 08:13:04 -08:00
Paul Eggert
ab422c4d68 Update copyright notices for 2013. 2013-01-01 09:11:05 +00:00
Eli Zaretskii
c1860cdc02 Fix the MS-Windows build.
nt/inc/sys/stat.h (S_ISMPX): Define to zero, to accommodate changes
 in lib/filemode.c that broke the MS-Windows build.
 Suggested by Andy Moreton <andrewjmoreton@gmail.com>.
2012-12-24 17:56:17 +02:00
Juanma Barranquero
ab1ce02438 nt/config.nt: Sync with autogen/config.in.
(BSD4_2): Remove.
2012-12-17 21:58:12 +01:00