Commit graph

421 commits

Author SHA1 Message Date
Daiki Ueno
f55ea05bdf Add facility to collect stderr of async subprocess
* src/w32.h (register_aux_fd): New function declaration.
* src/w32.c (register_aux_fd): New function.
* src/process.h (struct Lisp_Process): New member stderrproc.
* src/process.c (PIPECONN_P): New macro.
(PIPECONN1_P): New macro.
(Fdelete_process, Fprocess_status, Fset_process_buffer)
(Fset_process_filter, Fset_process_sentinel, Fstop_process)
(Fcontinue_process): Handle pipe process specially.
(create_process): Respect p->stderrproc.
(Fmake_pipe_process): New function.
(Fmake_process): Add new keyword argument :stderr.
(wait_reading_process_output): Specially handle a pipe process when
it gets an EOF.
(syms_of_process): Register Qpipe and Smake_pipe_process.

* doc/lispref/processes.texi (Asynchronous Processes): Document
`make-pipe-process' and `:stderr' keyword of `make-process'.

* lisp/subr.el (start-process): Suggest to use `make-process' handle
standard error separately.

* test/automated/process-tests.el (process-test-stderr-buffer)
(process-test-stderr-filter): New tests.

* etc/NEWS: Mention new process type `pipe' and its usage with the
`:stderr' keyword of `make-process'.
2015-04-11 07:59:27 +09:00
Eli Zaretskii
7dc565a2cf Fix blocking connections on MS-Windows (Bug#20159)
src/w32.c (sys_connect): Fix a mistake in previous commit that broke
 blocking connections.
2015-03-28 10:36:01 +03:00
Eli Zaretskii
d133cf8394 Support non-blocking connect on MS-Windows (Bug#20207)
Based on ideas from Kim F. Storm <storm@cua.dk>, see
 http://lists.gnu.org/archive/html/emacs-devel/2006-12/msg00873.html.

 src/w32proc.c (reader_thread): If the FILE_CONNECT flag is set, call
 '_sys_wait_connect'.  If it returns STATUS_CONNECT_FAILED, exit
 the thread with code 2.
 (sys_select): Support 'wfds' in addition to 'rfds'.  If a
 descriptor in 'wfds' has its bit set, but the corresponding
 fd_info member doesn't have its FILE_CONNECT flag set, ignore the
 descriptor.  Otherwise, acknowledge a successful non-blocking
 connect by resetting the FILE_CONNECT flag and setting cp->status
 to STATUS_READ_ACKNOWLEDGED.
 src/w32.h (STATUS_CONNECT_FAILED): New enumeration value.
 (struct _child_process): New member 'errcode'.
 (FILE_CONNECT): New flag.
 (_sys_wait_connect): Add prototype.
 src/w32.c (pfn_WSAEnumNetworkEvents): New function pointer.
 (init_winsock): Load WSAEnumNetworkEvents from winsock DLL.
 (set_errno): Map WSAEWOULDBLOCK and WSAENOTCONN.
 (sys_connect): Support non-blocking 'connect' calls by setting the
 FILE_CONNECT flag in the fd_info member and returning EINPROGRESS.
 (_sys_read_ahead): Add debug message if this function is called
 for a descriptor that waits for a non-blocking connect to complete.
 (_sys_wait_connect): New function.
 (sys_read): Support STATUS_CONNECT_FAILED.  Return the error code
 recorded by _sys_wait_connect when the non-blocking connect
 failed.  Don't call WSAGetLastError before a call to set_errno had
 a chance to use its value, since WSAGetLastError clears the last
 error.

 nt/inc/ms-w32.h (BROKEN_NON_BLOCKING_CONNECT): Don't define.
2015-03-27 12:44:31 +03:00
Paul Eggert
d8e9122115 Merge from origin/emacs-24
e726f20 Handle "#" operator properly inside macro.  Fix coding bug.
618931b Handle dead frame in menu-bar-non-minibuffer-window-p.  (Bug#19728)
017a03a Document MS-Windows file-name idiosyncrasies  (Bug#19463)
f3faf4f Fix description of Customize buffer in Emacs manual.
1c1d0b7 Fix a typo in the Emacs manual's Hungry Delete description.
be7fb82 src/dispextern.h (FACE_FOR_CHAR): Fix the commentary.
33c4409 Spelling fixes
6c8231e python.el: Handle tabs in python-indent-dedent-line.
41c3b92 * lisp/progmodes/python.el: Respect user indentation after comment.
868df45 Avoid compiler warnings in decode_env_path.
b28c979 Fix XEmacs version typo in comment and ChangeLog
989fb32 Improve solution of bug #19701
6310530 Fix refilling of list of language environments in User Manual
c4c447d Restore XEmacs compatibility

Conflicts:
	doc/emacs/ChangeLog
	lisp/ChangeLog
	src/ChangeLog
	test/ChangeLog
2015-02-25 22:53:56 -08:00
Paul Eggert
eadf313c72 Merge from origin/emacs-24
ad588af Improve the fix for bug #19701

Conflicts:
	src/ChangeLog
2015-01-29 13:54:51 -08:00
Eli Zaretskii
989fb32064 Improve solution of bug #19701
src/w32.c (sys_readdir): Map ERROR_NOT_READY (as in "device not ready")
 to ENOENT.
2015-01-29 20:43:08 +02:00
Eli Zaretskii
ad588afdaa Improve the fix for bug #19701
src/dired.c (directory_files_internal, file_name_completion)
 [WINDOWSNT]: Signal an error when errno is set non-zero by
 'readdir', regardless of its value.
 src/w32.c (sys_readdir): Set errno to ENOENT when the directory
 doesn't exist and to EACCES when it's not accessible to the
 current user.  Set errno to zero when FindNextFile exhausts the
 directory, so that callers don't interpret that as an error and
 don't signal a file-error.
 (open_unc_volume): Set errno to ENOENT if WNetOpenEnum fails.
2015-01-28 19:42:28 +02:00
Fabián Ezequiel Gallina
95a2cb24b0 Merge from origin/emacs-24
9664def Signal a file-error from directory-files on MS-Windows  (Bug#19701)
fd4e65e Added missing test for previous commit
5485e3e5 python.el: New non-global state dependent indentation engine.
3b23e6a Fix the description of --insert command-line option  (Bug#19694)
7a7e594 Add a cross-reference in ELisp manual.  (Bug#19668)
b4f4075 Fixes: debbugs:19660
83b3c31 * test/automated/regexp-tests.el: Require regexp-opt

Conflicts:
	lisp/progmodes/python.el
2015-01-28 01:08:18 -03:00
Eli Zaretskii
9664defd26 Signal a file-error from directory-files on MS-Windows (Bug#19701)
src/dired.c (directory_files_internal) [WINDOWSNT]: If readdir
 returns NULL and errno is ENOTDIR, behave as if opendir failed to
 open the directory.
 src/w32.c (sys_readdir): If FindFirstFile fails because the
 directory doesn't exist, set errno to ENOTDIR.
2015-01-27 21:02:13 +02:00
Eli Zaretskii
5b5dab1281 MS-Windows followup to previous commit
src/w32proc.c, src/w32.h, src/w32fns.c, src/w32font.c, src/w32menu.c:
 src/w32notify.c, src/w32proc.c, src/w32select.c, src/w32term.c:
 src/w32uniscribe.c: Remove declarations of Q* variables that
 represent symbols.
2015-01-05 22:13:58 +02:00
Paul Eggert
7e09ef09a4 Update copyright year to 2015
Run admin/update-copyright.
2015-01-01 14:26:41 -08:00
Paul Eggert
732fd4c7e1 Update copyright year to 2015
Run admin/update-copyright.
2015-01-01 09:18:06 -08:00
Eli Zaretskii
d65526283d MS-Windows followup to stpcpy changes.
src/w32proc.c (sys_spawnve, get_lcid_callback): Use strcpy instead
 of strcat.
 src/w32menu.c (add_menu_item): Use stpcpy instead of strcat.
 src/w32.c (sys_readdir, stat_worker, symlink): Use strcpy instead of
 strcat.

 nt/gnulib.mk (stpcpy, string): Sync with the latest change in
 lib/gnulib.mk.
2014-12-26 11:52:24 +02:00
Oscar Fuentes
1ed5c2d9bc Replace uses of _W64 with MINGW_W64
This is the `master' branch follow-up to the change made previously on
the emacs-24 branch (81e0cca7bb).

    * src/w32.c: Use MINGW_W64 instead of _W64.

    * src/w32heap.c: Likewise.
2014-11-27 04:03:07 +01:00
Ted Zlatanov
ba4502fe14 Merge branch 'emacs-24'
Conflicts:
	nt/addsection.c
	nt/inc/ms-w32.h
	src/w32.c
2014-11-26 21:31:11 -05:00
Oscar Fuentes
81e0cca7bb Define MINGW_W64 and use it instead of _W64
... for detecting MinGW-w64. _W64 is not specific of MinGW-w64, it is
defined for compatibility with MS VC++.

	* nt/inc/ms-w32.h: Define MINGW_W64.

	* admin/CPP-DEFINES: Mention MINGW_W64.

	* nt/addpm.c: Use it.

	* nt/addsection.c: Use it.

	* nt/preprep.c: Use it.

	* src/w32.c: Use MINGW_W64 instead of _W64

	* src/w32term.c: Likewise.
2014-11-17 23:10:00 +01:00
Eli Zaretskii
a7fc3ab8f1 Support playing on MS-Windows non-ASCII sound files using Unicode APIs.
src/sound.c [WINDOWSNT]: Include w32common.h and mbstring.h.
 (SOUND_WARNING) [WINDOWSNT]: Include in do..while and improve the
 error message format.  Use message_with_string to have non-ASCII
 file names properly displayed.
 (do_play_sound) [WINDOWSNT]: Use Unicode APIs to play sound files
 when w32-unicode-filenames is non-nil, but not on Windows 9X,
 where these APIs are not available even in UNICOWS.DLL.  Improve
 the format of error messages and include the file name in them
 where appropriate.
 (Fplay_sound_internal) [WINDOWSNT]: Make the MS-Windows branch
 call play-sound-functions, per documentation.
 src/w32.c (w32_get_long_filename, w32_get_short_filename): Constify
 the input file name arguments.
 src/w32.h (w32_get_long_filename, w32_get_short_filename): Update
 prototypes.
2014-09-15 18:51:57 +03:00
Glenn Morris
11af46027d Merge from emacs-24; up to 2014-07-09T02:04:12Z!rgm@gnu.org 2014-09-14 17:20:21 -07:00
Eli Zaretskii
9ed670023f Fix bug #18420 with deadlocks communicating with subprocess on MS-Windows.
src/w32.c (fcntl): Support O_NONBLOCK fcntl on the write side of
 pipes.
 (sys_write): When a write to a non-blocking pipe returns ENOSPC,
 set errno to EAGAIN instead, to allow the caller to retry the
 write after some waiting.  Fixes deadlocks when Emacs exchanges a
 lot of data through the pipe.
2014-09-14 18:18:39 +03:00
Eli Zaretskii
a6cc335aef Fix expansion and encoding of sound file names on MS-Windows.
src/sound.c (Fplay_sound_internal): Encode the sound file name in
 the ANSI codepage.  Expand it against data-directory, as per docs,
 not against the current directory.  No need to make a local copy
 of the file name; pass the encoded file name directly to
 do_play_sound.  (Bug#18463)
 src/w32.c (ansi_encode_filename): If w32_get_short_filename returns
 NULL, and the file name is not encodable in ANSI codepage, return
 the string with "?" replacement characters, which will fail the
 caller.  This avoids returning a random value in that case.
2014-09-13 11:26:44 +03:00
Eli Zaretskii
30773514c9 src/w32.c (sys_write): Use SAFE_NALLOCA for the NL -> CRLF translation buffer. 2014-09-10 20:51:53 +03:00
Eli Zaretskii
015ea0ffdb Implement locale-sensitive string collation for MS-Windows. (Bug#18051)
src/w32proc.c (get_lcid_callback, get_lcid, w32_compare_strings):
 New functions.
 src/w32.h (w32_compare_strings): Add prototype.
 src/w32.c <g_b_init_compare_string_w>: New global flag.
 (globals_of_w32): Initialize it.
 src/sysdep.c (str_collate) [WINDOWSNT]: Implementation for MS-Windows.
 src/fns.c (Fstring_collate_lessp, Fstring_collate_equalp)
 [WINDOWSNT]: Call str_collate on MS-Windows.

 etc/NEWS: Mention that string-collate-* functions are supported on
 MS-Windows as well.
2014-08-25 18:55:46 +03:00
Paul Eggert
ba1ed52f0c Use binary-io module, O_BINARY, and "b" flag.
* admin/merge-gnulib (GNULIB_MODULES): Add binary-io.  It was already
present implicitly; this just makes the dependence explicit.
* lib-src/etags.c, lib-src/hexl.c, lib-src/make-docfile.c:
Include binary-io.h instead of fcntl.h and/or io.h.
(main): Use set_binary_mode or SET_BINARY
in place of handcrafted code.
* lib-src/etags.c (main) [DOS_NT]:
* lib-src/movemail.c (main) [WINDOWSNT]:
Don't mess with _fmode.
* lib-src/etags.c (main, process_file_name, analyse_regex):
Use fopen/popen's "b" flag instead.
* lib-src/movemail.c (main, popmail): Use open/lk_open/mkostemp's O_BINARY
instead.
* src/callproc.c (create_temp_file): Use mkostemp's O_BINARY flag.
* src/emacs.c [MSDOS]:
* src/emacs.c (main) [DOS_NT]: Don't mess with _fmode.
(main) [MSDOS]: Use SET_BINARY instead of setmode.
* src/minibuf.c: Include binary-io.h instead of fcntl.h.
(read_minibuf_noninteractive):
Use set_binary_mode instead of handcrafted code.
Don't call emacs_set_tty if emacs_get_tty failed.
* src/sysdep.c, src/systty.h (emacs_get_tty): Return int, not void.
* src/sysdep.c (emacs_open, emacs_pipe): Use O_BINARY.
* src/w32.c (pipe2): Adjust eassert to include O_BINARY.

Fixes: debbugs:18006
2014-07-14 12:23:18 -07:00
Eli Zaretskii
644656aa56 Implement memory-info for MS-Windows.
src/w32.c (w32_memory_info): New function.
 src/w32.h (w32_memory_info): Prototype it.
 src/alloc.c (Fmemory_info) [WINDOWSNT]: Call it.
2014-07-10 22:09:26 +03:00
Glenn Morris
5613a6f6d5 Merge from emacs-24; up to 2014-06-19T14:03:45Z!monnier@iro.umontreal.ca 2014-07-08 19:04:12 -07:00
Eli Zaretskii
f0f34bc8b9 src/w32.c (network_interface_info): Make sure the argument is a Lisp string. 2014-07-04 10:40:08 +03:00
Eli Zaretskii
9aecbeb308 Minor fixes for MS-Windows MinGW64 build.
src/w32.c (_ANONYMOUS_UNION, _ANONYMOUS_STRUCT): Define only if undefined.

 lib-src/ntlib.h (lseek): Don't redirect to _lseek.
2014-05-26 19:55:28 +03:00
Glenn Morris
e0af409500 Merge from emacs-24; up to 2014-04-07T20:54:16Z!dancol@dancol.org 2014-04-12 12:24:17 -07:00
Eli Zaretskii
95765a6ac3 src/w32.c (sys_umask) <WRITE_USER>: Remove redundant constant.
src/w32.c (sys_umask) <WRITE_USER>: Remove redundant constant, and
 use S_IWRITE instead.
2014-04-11 11:11:57 +03:00
Daniel Colascione
c72d972c5d Rename EARRAYSIZE to ARRAYELTS 2014-04-03 13:46:04 -07:00
Daniel Colascione
705cf384be Clean up array size calculations 2014-04-03 00:14:02 -07:00
Juanma Barranquero
5af73b0fe8 src/*.c: Silence a few warnings about unused vars and functions.
* src/image.c (x_bitmap_height, x_bitmap_width) [HAVE_X_WINDOWS]:
* src/sysdep.c (reset_sigio) [!DOS_NT]: Declare conditionally.

* src/keyboard.c (read_decoded_event_from_main_queue): #ifdef out
  variables on Windows.

* src/w32.c (unsetenv): Remove unused var `retval'.
  (emacs_gnutls_pull): Remove unused vars `fdset' and `timeout'.

* src/w32fns.c (Ffile_system_info): Use parenthesis in and/or expression.

* src/w32notify.c (watch_worker): Remove unnecesary var sleep_result.
  (start_watching): Remove unused var `thr'.

* src/w32proc.c (sys_spawnve): Comment out unused vars `first', `last'.
  (find_child_console): Remove unnecesary var `thread_id'.

* src/w32term.c (w32_read_socket): Comment out unused vars `row', `columns'.
  (x_focus_frame): #ifdef 0 unused variable `dpyinfo'.
2014-03-26 11:21:55 +01:00
Eli Zaretskii
defd53bdc5 Speed up thread startup on MS-Windows.
src/w32.c (w32_delayed_load): Call DisableThreadLibraryCalls on the
 DLL handle, to speed up thread startup.
2014-03-25 18:00:37 +02:00
Eli Zaretskii
316d9327d7 src/w32.c (stat_worker): Fix commentary. 2014-03-10 19:31:17 +02:00
Eli Zaretskii
70db0db7bf Fix an obscure bug in fstatat on Windows 9X.
src/w32.c (fstatat): Don't add an extra slash if the argument ends
 with a slash: this fails the subsequent call to stat_worker on
 Windows 9X.  Reported by oslsachem <oslsachem@gmail.com>.
2014-03-10 19:26:45 +02:00
Eli Zaretskii
829f4f2256 Another fix for handling of file names on Windows 9X.
src/w32.c (pMultiByteToWideChar, pWideCharToMultiByte): New
 variables: pointers through which to call the respective APIs.
 (filename_to_utf16, filename_from_utf16, filename_to_ansi)
 (filename_from_ansi, sys_link, check_windows_init_file): Call
 MultiByteToWideChar and WideCharToMultiByte through pointers.
 This is required on Windows 9X, where we dynamically load
 UNICOWS.DLL which has their non-stub implementations.
 (maybe_load_unicows_dll): Assign addresses to these 2 function
 pointers after loading UNICOWS.DLL.
 src/w32fns.c (Fx_file_dialog, Fw32_shell_execute) [!CYGWIN]: Call
 MultiByteToWideChar and WideCharToMultiByte through function
 pointers.
 src/w32.h (pMultiByteToWideChar, pWideCharToMultiByte): New
 declarations.
2014-02-06 17:27:46 +02:00
Eli Zaretskii
a3c3a662ea src/w32.c: Fix typos in commentary. 2014-02-05 19:33:43 +02:00
Eli Zaretskii
5197f0c2fe Fix file name handling on MS-Windows 9X.
src/w32.c (maybe_load_unicows_dll): New function.
 src/emacs.c (main) [WINDOWSNT]: Call maybe_load_unicows_dll early
 on, to make sure we can convert file names to and from UTF-8 on
 Windows 9X.  This fixes a failure to start up because Emacs cannot
 find term/w32-win.el.  Reported by oslsachem <oslsachem@gmail.com>.
 src/w32font.c [WINDOWSNT]: Include w32.h.
 (w32_load_unicows_or_gdi32): Call maybe_load_unicows_dll, instead
 of implementing the same stuff.
 Remove now unused g_b_init_is_windows_9x.
 src/w32.h (maybe_load_unicows_dll): Add prototype.

 nt/runemacs.c (ensure_unicows_dll): Don't tell in the message box
 that "emacs -nw" can do without UNICOWS.DLL on Windows 9X.  See
 w32.c:maybe_load_unicows_dll and its callers for the reason.
2014-01-18 13:46:22 +02:00
Paul Eggert
ba3189039a Update copyright year to 2014 by running admin/update-copyright. 2014-01-01 07:43:34 +00:00
Eli Zaretskii
535f0fbd00 Fix typo in a comment in the last commit in w2.c. 2013-12-31 17:12:33 +02:00
Fabrice Popineau
0bbd0e0b1d Fall back on SetNamedSecurityInfo if SetFileSecurity fails in acl_set_file.
src/w32.c (set_named_security_info): New function.
 (acl_set_file): Fall back on set_named_security_info if
 set_file_security fails.  Fixes rare failures in backups.
 (g_b_init_set_named_security_info_w)
 (g_b_init_set_named_security_info_a): New static variables.
 (globals_of_w32): Initialize them to zero.
 (set_named_security_info): Set them to non-zero if the
 corresponding API is available.
 (SetNamedSecurityInfoW_Proc, SetNamedSecurityInfoA_Proc): New
 function typedefs.
2013-12-31 17:00:43 +02:00
Eli Zaretskii
1b7259fce2 Fix bug #16299 with assertion violation in set-default-file-modes on Windows.
src/w32.c (sys_umask): New function.

 nt/inc/ms-w32.h (umask) [emacs]: Redirect to sys_umask.
2013-12-30 19:51:28 +02:00
Glenn Morris
1f41ee56ac Add load-prefer-newer option, to load .el if newer than .elc
* src/lread.c (Fload): Pass load_prefer_newer to openp.
Don't bother checking mtime if openp already did it.
(openp): Add `newer' argument, to check all suffixes
and find the newest file.
(syms_of_lread) <load_prefer_newer>: New option. 

* src/callproc.c (call_process):
* src/charset.c (load_charset_map_from_file):
* src/emacs.c (init_cmdargs):
* src/image.c (x_create_bitmap_from_file, x_find_image_file):
* src/lisp.h (openp):
* lread.c (Flocate_file_internal):
* src/process.c (Fformat_network_address):
* src/sound.c (Fplay_sound_internal):
* src/w32.c (check_windows_init_file):
* src/w32proc.c (sys_spawnve): Update for new arg spec of openp.

* lisp/Makefile.in (BYTE_COMPILE_FLAGS): Set load-prefer-newer to t.

* etc/NEWS: Mention this.

Fixes: debbugs:2061
2013-12-17 19:21:48 -08:00
Eli Zaretskii
60e62dc596 Fix minor problems in Windows emulation of getloadavg.
src/w32.c (getloadavg): Don't index samples[] array with negative
 indices.  Recover from wall-clock time being set backwards.
2013-12-17 20:00:25 +02:00
Eli Zaretskii
ec4440cf5e Fix copy-file on MS-Windows with file names outside of current locale.
src/fileio.c (Fcopy_file) [WINDOWSNT]: Move most of the
 Windows-specific code to w32.c.  Change error message text to
 match that of Posix platforms.
 src/w32.c (w32_copy_file): New function, most of the code copied and
 reworked from Fcopy_file.  Improve error handling.  Plug memory
 leak when errors are thrown.  Support file names outside of the
 current codepage.  (Bug#7100)
2013-12-14 10:29:42 +02:00
Paul Eggert
32e93c9e89 Spelling fixes. 2013-12-12 12:07:40 -08:00
Eli Zaretskii
51caf50203 Fixed a bug in w32-long-file-name. 2013-12-09 22:21:58 +02:00
Eli Zaretskii
afec516519 Fixed file-truename when w32-unicode-filenames is nil, fixed its doc. 2013-12-09 21:18:58 +02:00
Eli Zaretskii
4ba5c243d0 Fixed a bug in get_long_basename which broke creation of new files. 2013-12-07 21:15:23 +02:00
Eli Zaretskii
080fd64974 Fixed initialization code and default-printer-name. 2013-12-07 16:45:31 +02:00