1. 01 Sep, 2014 1 commit
  2. 30 Aug, 2014 1 commit
    • Eli Zaretskii's avatar
      Improve error checking and error messages in string-collation functions. · e7027eab
      Eli Zaretskii authored
       src/sysdep.c (str_collate) [__STDC_ISO_10646__]: Improve the
       wording of the error messages.
       (str_collate) [WINDOWSNT]: Signal an error if w32_compare_strings
       sets errno.
       src/w32proc.c (get_lcid_callback): Accept locale specifications
       without the country part, as in "enu" vs "enu_USA".
       (w32_compare_strings): Signal an error if a locale was specified,
       but couldn't be translated into a valid LCID.
      e7027eab
  3. 29 Aug, 2014 3 commits
  4. 25 Aug, 2014 1 commit
    • Eli Zaretskii's avatar
      Implement locale-sensitive string collation for MS-Windows. (Bug#18051) · 015ea0ff
      Eli Zaretskii authored
       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.
      015ea0ff
  5. 26 Mar, 2014 1 commit
    • Juanma Barranquero's avatar
      src/*.c: Silence a few warnings about unused vars and functions. · 5af73b0f
      Juanma Barranquero authored
      * 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'.
      5af73b0f
  6. 13 Feb, 2014 1 commit
    • Eli Zaretskii's avatar
      Fix crashes in itimers on Windows 9X. · e2607667
      Eli Zaretskii authored
       src/w32proc.c (start_timer_thread): Pass a non-NULL pointer as last
       argument to CreateThread.  This avoids segfaults on Windows 9X.
       Reported by oslsachem <oslsachem@gmail.com>.
      e2607667
  7. 01 Jan, 2014 1 commit
  8. 31 Dec, 2013 1 commit
    • Fabrice Popineau's avatar
      Minor fixes for MinGW64 build. · bd717ca4
      Fabrice Popineau authored
       configure.ac (canonical, C_SWITCH_SYSTEM): Support a 64-bit
       MinGW64 build on MS-Windows.
      
       nt/inc/ms-w32.h (sys_kill): Fix prototype.
      
       src/w32term.c (w32_initialize): Use LCID and LOWORD.
       src/w32proc.c (create_child): Use pid_t for 5th argument.
       (IsValidLocale): Don't provide prototype for MinGW64.
       (Fw32_get_valid_keyboard_layouts, Fw32_get_keyboard_layout)
       (Fw32_set_keyboard_layout): Use HKL and HIWORD/LOWORD.
       src/w32heap.c (allocate_heap) [_WIN64]: Use "ull", not "i64", which
       MinGW64 doesn't support.
       src/lisp.h (EMACS_INT) [_WIN64]: Define for the MinGW64 build.
      bd717ca4
  9. 18 Dec, 2013 1 commit
    • Glenn Morris's avatar
      Add load-prefer-newer option, to load .el if newer than .elc · 1f41ee56
      Glenn Morris authored
      * 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
      1f41ee56
  10. 07 Dec, 2013 1 commit
  11. 06 Dec, 2013 1 commit
  12. 28 Nov, 2013 1 commit
    • Eli Zaretskii's avatar
      Fix bug #15933 with crashes in file-notify-tests on MS-Windows. · 9c099ca7
      Eli Zaretskii authored
       Support w32 file notifications in batch mode.
       src/w32proc.c (sys_select): Don't wait on interrupt_handle if it is
       invalid (which happens in batch mode).  If non-interactive, call
       handle_file_notifications to store file notification events in the
       input queue.
       src/w32notify.c (send_notifications): Handle FRAME_INITIAL frames as
       well.
       src/w32inevt.c (handle_file_notifications): Now external, not
       static.
       src/w32term.h (handle_file_notifications): Provide prototype.
       src/emacs.c (main) [HAVE_W32NOTIFY]: When non-interactive, call
       init_crit, since init_display, which does that otherwise, is not
       called.
      9c099ca7
  13. 16 Nov, 2013 1 commit
  14. 02 Nov, 2013 1 commit
  15. 14 Oct, 2013 1 commit
  16. 11 Sep, 2013 1 commit
  17. 29 Aug, 2013 1 commit
    • Eli Zaretskii's avatar
      A possible fix for bug #14333 with hanging at exit on MS-Windows. · 3f940c5a
      Eli Zaretskii authored
       src/w32.c (term_winsock): Call release_listen_threads before calling
       WSACleanup.
       (_sys_wait_accept): Wait for accept event in a loop with a finite
       timeout, instead of waiting indefinitely.  Will hopefully avoid
       hanging during exit because WSACleanup deadlocks waiting for the
       event object to be released.
       src/w32proc.c (release_listen_threads): New function, signals all
       the reader threads that listen for connections to stop waiting.
       src/w32.h (release_listen_threads): Add prototype.
      3f940c5a
  18. 27 Aug, 2013 1 commit
    • Paul Eggert's avatar
      Simplify EMACS_TIME-related code. · 43aac990
      Paul Eggert authored
      This portability layer is no longer needed, since Emacs has been
      using struct timespec as a portability layer for some time.
      Merge from gnulib, incorporating:
      2013-08-27 timespec: new convenience constants and function
      * src/atimer.h, src/buffer.h, src/dispextern.h, src/xgselect.h:
      Include <time.h> rather than "systime.h"; that's all that's needed now.
      * src/dispnew.c: Include <timespec.h> rather than "systime.h";
      that's all that's needed now.
      * src/systime.h (EMACS_TIME): Remove.  All uses changed to struct timespec.
      (EMACS_TIME_RESOLUTION): Remove.  All uses changed to
      TIMESPEC_RESOLUTION.
      (LOG10_EMACS_TIME_RESOLUTION): Remove.  All uses changed to
      LOG10_TIMESPEC_RESOLUTION.
      (EMACS_SECS, emacs_secs_addr): Remove.  All uses changed to tv_sec.
      (EMACS_NSECS): Remove.  All uses changed to tv_nsec.
      (make_emacs_time): Remove.  All used changed to make_timespec.
      (invalid_timespec): Rename from invalid_emacs_time.  All uses changed.
      (current_timespec): Rename from current_emacs_time.  All uses changed.
      (add_emacs_time): Remove.  All uses changed to timespec_add.
      (sub_emacs_time): Remove.  All uses change dot timespec_sub.
      (EMACS_TIME_SIGN): Remove.  All uses changed to timespec_sign.
      (timespec_valid_p): Rename from EMACS_TIME_VALID_P.  All uses changed.
      (EMACS_TIME_FROM_DOUBLE): Remove.  All uses changed to dtotimespec.
      (EMACS_TIME_TO_DOUBLE): Remove.  All uses changed to timespectod.
      (current_timespec): Rename from current_emacs_time.  All uses changed.
      (EMACS_TIME_EQ, EMACS_TIME_LT, EMACS_TIME_LE): Remove.  All uses
      changed to timespec_cmp.
      * src/xgselect.c: Include <timespec.h>, since our .h files don't.
      43aac990
  19. 25 Feb, 2013 1 commit
    • Eli Zaretskii's avatar
      Implement CLASH_DETECTION for MS-Windows. · 343a2aef
      Eli Zaretskii authored
       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.
      343a2aef
  20. 18 Feb, 2013 1 commit
  21. 17 Feb, 2013 1 commit
    • Eli Zaretskii's avatar
      Fix bug #13735 with network streams on MS-Windows. · ae11bda5
      Eli Zaretskii authored
      Revert changes to w32proc.c done since 2012-11-30T09:23:15Z!eliz@gnu.org.
      
      Do NOT merge to trunk!
      
       src/w32proc.c (new_child): Remove the loop that attempted to salvage
       slots of dead processes.
       (new_child, delete_child, find_child_pid): Don't insist on
       procinfo.hProcess be NULL for a process slot to be considered
       inactive, or be non-NULL to be considered active.
       (reader_thread): Don't set the FILE_AT_EOF flag of a file
       descriptor if the corresponding child was deleted and its
       char_avail handle is NULL.
       (reap_subprocess): Don't reset the FILE_AT_EOF flag.
       (sys_select): Don't pass a NULL process handle to
       WaitForMultipleObjects.
      
      Fixes: debbugs:13735 debbugs:13546
      ae11bda5
  22. 15 Feb, 2013 3 commits
  23. 13 Feb, 2013 1 commit
  24. 02 Feb, 2013 1 commit
    • Eli Zaretskii's avatar
      Avoid encoding file names run through dostounix_filename on MS-Windows. · e7ac588e
      Eli Zaretskii authored
       src/w32.c (normalize_filename): Accept an additional argument
       MULTIBYTE; if non-zero, traverse the file name by bytes and don't
       downcase it even if w32-downcase-file-names is non-nil.
       (dostounix_filename): Accept an additional argument MULTIBYTE and
       pass it to normalize_filename.
       (emacs_root_dir): Adjust.
       src/msdos.h (dostounix_filename): Adjust prototype.
       src/w32.h (dostounix_filename): Adjust prototype.
       src/msdos.c (dostounix_filename): Accept an additional argument and
       ignore it.
       (init_environment): Adjust callers of dostounix_filename.
       src/fileio.c (Ffile_name_directory, file_name_as_directory)
       (directory_file_name, Fexpand_file_name)
       (Fsubstitute_in_file_name): [DOS_NT] Adjust call to
       dostounix_filename.
       [WINDOWSNT]: Downcase file names if w32-downcase-file-names is
       non-nil.
       (Fsubstitute_in_file_name): [DOS_NT] Don't downcase environment
       variables, as egetenv is case-insensitive for DOS_NT.
       src/dired.c (file_name_completion): Don't call Fdirectory_file_name
       with an encoded file name.
       src/w32proc.c (Fw32_short_file_name, Fw32_long_file_name): Adjust
       calls to dostounix_filename.
       src/w32fns.c (Fx_file_dialog): Adjust call to dostounix_filename.
       src/unexw32.c (unexec): Adjust call to dostounix_filename.
       src/termcap.c (tgetent) [MSDOS]: Adjust call to dostounix_filename.
       src/emacs.c (decode_env_path) [DOS_NT]: Adjust call to
       dostounix_filename.
       src/callproc.c (Fcall_process) [MSDOS]: Adjust call to
       dostounix_filename.
      e7ac588e
  25. 01 Feb, 2013 1 commit
  26. 01 Jan, 2013 1 commit
  27. 29 Dec, 2012 1 commit
  28. 23 Dec, 2012 1 commit
    • Eli Zaretskii's avatar
      Improve handling of subprocess shutdown on MS-Windows. · 299614f3
      Eli Zaretskii authored
       src/w32proc.c (reader_thread): Do not index fd_info[] with negative
       values.
       (reader_thread): Exit when cp->status becomes STATUS_READ_ERROR
       after WaitForSingleObject returns normally.  This expedites reader
       thread shutdown when delete_child triggers it.
       (reap_subprocess): More accurate commentary for why we call
       delete_child only when cp->fd is negative.
       src/w32.c (sys_close): Do not call delete_child on a subprocess
       whose handle is not yet closed.  Instead, set its file descriptor
       to a negative value, so that reap_subprocess will call
       delete_child on that subprocess when its SIGCHLD arrives.  This
       avoids closing handles used for communications between sys_select
       and reader_thread, which doesn't give sys_select a chance to
       notice that the process exited and invoke the SIGCHLD handler for
       it.
      299614f3
  29. 21 Dec, 2012 1 commit
    • Eli Zaretskii's avatar
      Possibly fix bug #13086 with losing track of subprocesses on MS-Windows. · 7efa3fb3
      Eli Zaretskii authored
       src/w32proc.c (new_child, delete_child, find_child_pid): For a
       subprocess, consider its slot being in use as long as its process
       handle (procinfo.hProcess) is not NULL.  This avoids reusing the
       slot when a new process is started immediately after killing
       another one, without waiting enough time for the first process to
       be reaped and resources allocated for it be orderly freed.
       Suggested by Fabrice Popineau <fabrice.popineau@supelec.fr>.
      7efa3fb3
  30. 15 Dec, 2012 3 commits
    • Eli Zaretskii's avatar
      Fix bug #13079 on MS-Windows with temp files not being deleted. · b0728617
      Eli Zaretskii authored
       src/w32.h (_child_process): New members input_file and
       pending_deletion.
       (register_child): First argument is now pid_t.
       (record_infile, record_pending_deletion): New prototypes.
       src/w32proc.c (new_child): Initialize input_file and
       pending_deletion members of the child.
       (delete_child): Delete the child's temporary input file, if any,
       that is pending deletion.
       (register_child): First argument is now pid_t.
       (record_infile, record_pending_deletion): New functions.
       (reap_subprocess): Fix a typo in DebPrint string.
       (sys_spawnve, sys_kill): Use pid_t for PID arguments.
       src/fileio.c (internal_delete_file): Return an int again: non-zero
       if delete-file succeeds, zero otherwise.
       src/lisp.h (internal_delete_file): Adjust prototype.
       src/callproc.c (Fcall_process): Don't overwrite infile with result
       of DECODE_FILE.
       [WINDOWSNT] If BUFFER is an integer, i.e. we are launching an
       asynchronous subprocess, record the name of the input file name,
       if any.
       (delete_temp_file) [WINDOWSNT]: If internal_delete_file fails to
       delete the file, record it as pending deletion when the subprocess
       exits.
      
       nt/inc/ms-w32.h (sys_unlink): Provide prototype.
      b0728617
    • Eli Zaretskii's avatar
      7be7da6c
    • Eli Zaretskii's avatar
  31. 08 Dec, 2012 1 commit
    • 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
  32. 06 Dec, 2012 1 commit
  33. 03 Dec, 2012 1 commit
    • Paul Eggert's avatar
      Don't let call-process be a zombie factory. · bb5f74ee
      Paul Eggert authored
      Fixing this bug required some cleanup of the signal-handling code.
      As a side effect, this change also fixes a longstanding rare race
      condition whereby Emacs could mistakenly kill unrelated processes,
      and it fixes a bug where a second C-g does not kill a recalcitrant
      synchronous process in GNU/Linux and similar platforms.
      The patch should also fix the last vestiges of Bug#9488,
      a bug which has mostly been fixed on the trunk by other changes.
      * callproc.c, process.h (synch_process_alive, synch_process_death)
      (synch_process_termsig, sync_process_retcode):
      Remove.  All uses removed, to simplify analysis and so that
      less consing is done inside critical sections.
      * callproc.c (call_process_exited): Remove.  All uses replaced
      with !synch_process_pid.
      * callproc.c (synch_process_pid, synch_process_fd): New static vars.
      These take the role of what used to be in unwind-protect arg.
      All uses changed.
      (block_child_signal, unblock_child_signal):
      New functions, to avoid races that could kill innocent-victim processes.
      (call_process_kill, call_process_cleanup, Fcall_process): Use them.
      (call_process_kill): Record killed processes as deleted, so that
      zombies do not clutter up the system.  Do this inside a critical
      section, to avoid a race that would allow the clutter.
      (call_process_cleanup): Fix code so that the second C-g works again
      on common platforms such as GNU/Linux.
      (Fcall_process): Create the child process in a critical section,
      to fix a race condition.  If creating an asynchronous process,
      record it as deleted so that zombies do not clutter up the system.
      Do unwind-protect for WINDOWSNT too, as that's simpler in the
      light of these changes.  Omit unnecessary call to emacs_close
      before failure, as the unwind-protect code does that.
      * callproc.c (call_process_cleanup):
      * w32proc.c (waitpid): Simplify now that synch_process_alive is gone.
      * process.c (record_deleted_pid): New function, containing
      code refactored out of Fdelete_process.
      (Fdelete_process): Use it.
      (process_status_retrieved): Remove.  All callers changed to use
      child_status_change.
      (record_child_status_change): Remove, folding its contents into ...
      (handle_child_signal): ... this signal handler.  Now, this
      function is purely a handler for SIGCHLD, and is not called after
      a synchronous waitpid returns; the synchronous code is moved to
      wait_for_termination.  There is no need to worry about reaping
      more than one child now.
      * sysdep.c (get_child_status, child_status_changed): New functions.
      (wait_for_termination): Now takes int * status and bool
      interruptible arguments, too.  Do not record child status change;
      that's now the caller's responsibility.  All callers changed.
      Reimplement in terms of get_child_status.
      (wait_for_termination_1, interruptible_wait_for_termination):
      Remove.  All callers changed to use wait_for_termination.
      * syswait.h: Include <stdbool.h>, for bool.
      (record_child_status_change, interruptible_wait_for_termination):
      Remove decls.
      (record_deleted_pid, child_status_changed): New decls.
      (wait_for_termination): Adjust to API changes noted above.
      
      Fixes: debbugs:12980
      bb5f74ee
  34. 24 Nov, 2012 1 commit