| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| | | |
|
| | |
| |
| |
| |
| |
| |
| |
| | |
fstat shouldn't fail, and if it does fail copy-file should not proceed.
Remove unnecessary S_ISLNK test, as (contra the comments) this
function can't copy symlinks. Improve quality of error message
when attempting to copy files that are neither regular files nor
directories.
|
| | |
| |
| |
| |
| |
| |
| | |
* gtkutil.c (xg_set_toolkit_scroll_bar_thumb):
* window.c (Frecenter):
* xdisp.c (resize_mini_window, hscroll_window_tree, draw_glyphs):
* xterm.c (x_set_toolkit_scroll_bar_thumb): Likewise.
|
| | |
| |
| |
| |
| |
| | |
* unexcw.c (fixup_executable): use posix_fallocate to ensure that
the dumped Emacs is not a sparse file, greatly improving Cygwin
"make bootstrap" performance.
|
| | | |
|
| | |
| |
| |
| | |
incoming inotify event.
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
src/xdisp.c (handle_face_prop): Fix logic of computing
it->start_of_box_run_p.
(append_space_for_newline): If the glyph row is R2L, reset the
iterator's end_of_box_run_p flag before prepending the space glyph.
(extend_face_to_end_of_line): If the glyph row is R2L, reset the
iterator's start_of_box_run_p flag before prepending the stretch.
(append_glyph, produce_image_glyph, append_composite_glyph)
(append_stretch_glyph, append_glyphless_glyph): Reverse the
left_box_line_p and right_box_line_p flags of the glyph for R2L
glyph rows.
|
| | |
| |
| |
| |
| |
| |
| |
| |
| | |
if changed buffer is not shown in a window.
* insdel.c (prepare_to_modify_buffer): Likewise.
* window.c (replace_buffer_in_windows_safely): Do nothing
if buffer is not shown in a window.
(Fforce_window_update): Likewise if string or buffer argument
is passed.
|
| | |
| |
| |
| |
| | |
src/inotify.c (Finotify_add_watch): Rename decoded_file_name to
encoded_file_name, which is what it is.
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* fringe.c (Ffringe_bitmaps_at_pos):
* indent.c (Fvertical_motion):
* insdel.c (prepare_to_modify_buffer):
* keyboard.c (make_lispy_position):
* window.c (Fwindow_end, Fpos_visible_in_window_p, unshow_buffer)
(window_scroll_pixel_based, displayed_window_lines)
(Fset_window_configuration):
* xdisp.c (message_dolog, with_echo_area_buffer_unwind_data)
(mark_window_display_accurate_1, redisplay_window, decode_mode_spec):
Replace direct access to marker fields with calls
to marker_position and/or marker_byte_position.
|
| | | |
|
| | | |
|
| |\ \
| |/
| |
| | |
Monnier requests
|
| | | |
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* buffer.h (struct buffer): New member window_count.
(buffer_window_count): New function.
* buffer.c (Fget_buffer_create, Fmake_indirect_buffer):
Initialize window_count.
(Fkill_buffer): Verify window_count for the buffer being killed.
(modify_overlay): Do not force redisplay if buffer is not shown
in any window.
(init_buffer_once): Initialize window_count for buffer_defaults
and buffer_local_symbols.
* window.h (buffer_shared): Remove declaration.
(wset_buffer): Convert from inline ...
* window.c (wset_buffer): ... to an ordinary function.
(adjust_window_count): New function.
(make_parent_window): Use it.
* xdisp.c (buffer_shared): Remove.
(redisplay_internal, redisplay_window): Adjust users.
(buffer_shared_and_changed): Use per-buffer window counter.
|
| | | |
|
| |\ \ |
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
configure.ac (inotify): New option.
(HAVE_INOTIFY): Test for inotify.
src/termhooks.h (enum event_kind) [HAVE_INOTIFY]: Add
FILE_NOTIFY_EVENT.
src/lisp.h (syms_of_inotify) [HAVE_INOTIFY]: Add prototype.
src/keyboard.c (Qfile_inotify) [HAVE_INOTIFY]: New variable.
(syms_of_keyboard): DEFSYM it.
(kbd_buffer_get_event) [HAVE_INOTIFY]: Generate FILE_NOTIFY_EVENT.
(make_lispy_event): Support FILE_NOTIFY_EVENT by generating
Qfile_inotify events.
(keys_of_keyboard) [HAVE_INOTIFY]: Bind file-inotify events in
special-event-map to inotify-handle-event.
src/emacs.c (main) [HAVE_INOTIFY]: Call syms_of_inotify.
src/Makefile.in (base_obj): Add inotify.o.
src/inotify.c: New file.
lisp/subr.el (inotify-event-p, inotify-handle-event): New functions.
test/automated/inotify-test.el: New test.
|
| | |\ \
| | |/ |
|
| | | |
| | |
| | |
| | | |
Fixes: debbugs:13103
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
src/w32fns.c (cache_system_info): Cast sysinfo_cache.dwPageSize to
DWORD_PTR, for compatibility with 64-bit builds.
src/w32.c (_PROCESS_MEMORY_COUNTERS_EX):
(GetProcessWorkingSetSize_Proc, get_process_working_set_size)
(system_process_attributes): Use SIZE_T rather than DWORD, for
compatibility with 64-bit builds.
|
| | | |
| | |
| | |
| | | |
Fixes: debbugs:11647
|
| | | |
| | |
| | |
| | |
| | |
| | | |
src/indent.c (Fvertical_motion): If a display string will be
displayed on the left or the right margin, don't consider it as a
factor in cursor positioning.
|
| | | |
| | |
| | |
| | | |
* editfns.c (Fcompare_buffer_substrings): Reword doc-string.
|
| | | |
| | |
| | |
| | | |
for string length.
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
src/w32.c (unsetenv): Return 0 if the input string is too long.
nt/inc/ms-w32.h (sys_putenv): Add prototype.
Fixes: debbugs:13070
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* admin/merge-gnulib (GNULIB_MODULES): Add putenv, unsetenv.
* lib/putenv.c, lib/unsetenv.c, m4/putenv.m4, m4/setenv.m4:
New files, copied automatically from gnulib.
* lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
* src/alloc.c (xputenv): New function.
* src/dbusbind.c (Fdbus_init_bus):
* src/emacs.c (main):
* src/xterm.c (x_term_init):
Use xputenv instead of setenv or putenv, to detect memory exhaustion.
* src/editfns.c (initial_tz): Move static var decl up.
(tzvalbuf_in_environ): New static var.
(init_editfns): Initialize these two static vars.
(Fencode_time): Don't assume arbitrary limit on EMACS_INT width.
Save old TZ value on stack, if it's small.
(Fencode_time, set_time_zone_rule): Don't modify 'environ' directly;
instead, use xputenv+unsetenv to set and restore TZ.
(environbuf): Remove static var. All uses removed.
(Fset_time_zone_rule): Do not save TZ and environ;
no longer needed here.
(set_time_zone_rule_tz1, set_time_zone_rule_tz2) [LOCALTIME_CACHE]:
Move to inside set_time_zone_rule; they don't need file scope any more.
(set_time_zone_rule): Maintain the TZ=value string separately.
(syms_of_editfns): Don't initialize initial_tz;
init_editfns now does it.
* src/emacs.c (dump_tz) [HAVE_TZSET]: Now const.
* src/lisp.h (xputenv): New decl.
Fixes: debbugs:13070
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
src/w32.c (unsetenv, sys_putenv): New functions.
nt/inc/ms-w32.h (putenv): Redirect to sys_putenv.
nt/config.nt (HAVE_UNSETENV): Define to 1.
Fixes: debbugs:13070
|
| | | |
| | |
| | |
| | | |
Fixes: debbugs:12992
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* admin/CPP-DEFINES (ULIMIT_BREAK_VALUE): Remove.
* configure.ac (ULIMIT_BREAK_VALUE): Remove.
* src/vm-limit.c (get_lim_data): Combine RLIMIT_AS and RLIMIT_DATA methods.
Remove USG and vlimit methods; no longer used these days.
Add #error catchall just in case.
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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
|
| | | |
| | |
| | |
| | |
| | | |
This will cause a production Emacs to dump core instead of
infinite-looping.
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | | |
* window.c (Fsplit_window_internal): Likewise. Previously it was
used to indicate that the window is being set up. Now we use
set_window_buffer for all new windows, so the condition in ...
(Fset_window_buffer): ... is always true and can be removed.
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | | |
* buffer.h (BUFFER_HIDDEN_P): New macro.
* frame.c (make_frame): Use it. Adjust comment.
* buffer.c (candidate_buffer): New function.
(Fother_buffer, other_buffer_safely): Use it.
|
| | | |
| | |
| | |
| | |
| | |
| | | |
src/w32proc.c (waitpid): Avoid busy-waiting when called with WNOHANG
if the child process is still running. Instead, exit the wait
loop and return zero.
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* w32term.h (x_char_width, x_char_height): Likewise.
* xfns.c (x_char_width, x_char_height): Remove.
* w32fns.c (x_char_width, x_char_height): Likewise.
* nsfns.c (x_char_width, x_char_height): Likewise.
* frame.c (Fframe_char_width): Use FRAME_COLUMN_WIDTH for
all window frames.
(Fframe_char_height): Likewise with FRAME_LINE_HEIGHT.
* keyboard.c (command_loop_1): Remove prototype.
(command_loop_2, top_level_1): Add static to match prototype.
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* callproc.c, process.h (record_kill_process):
New function, containing part of the old call_process_kill.
(call_process_kill): Use it.
This does not change call_process_kill's behavior.
* process.c (Fdelete_process): Use record_kill_process to fix a
race condition that could cause Emacs to lose track of a child.
|
| | | |
| | |
| | |
| | |
| | | |
* frame.c (candidate_frame): New function. Add comment.
(prev_frame, next_frame): Use it. Adjust comment.
|
| | |\ \
| | |/ |
|
| | | |
| | |
| | |
| | |
| | | |
src/callproc.c (Fcall_process_region): Encode expanded temp file
pattern before passing it to mkstemp or mktemp.
|
| | | |
| | |
| | |
| | |
| | |
| | | |
src/callproc.c (Fcall_process_region) [!HAVE_MKSTEMP]: If mktemp
fails, signal an error instead of continuing with an empty
string.
|
| | | |
| | |
| | |
| | |
| | |
| | | |
src/fileio.c (file_name_as_directory, directory_file_name) [DOS_NT]:
Encode the file name before passing it to dostounix_filename, in
case it will downcase it (under w32-downcase-file-names).
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | | |
* callproc.c (Fcall_process): Do record-unwind-protect on MSDOS
at the same time as other platforms, to simplify analysis.
No need for fd0_volatile since we have synch_process_fd.
Avoid needless emacs_close; arg is always negative.
|
| | | |
| | |
| | |
| | | |
processes.
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
member. Adjust users. Convert mouse_face_past_end, mouse_face_defer
and mouse_face_hidden members to a bitfields.
* frame.h (struct frame): Remove set-but-not-used space_width member.
(FRAME_SPACE_WIDTH): Remove.
* nsterm.m, w32term.c, xterm.c: Adjust users.
* termchar.h (struct tty_display_info): Remove set-but-unused se_is_so
member. Adjust users. Convert term_initted, delete_in_insert_mode,
costs_set, insert_mode, standout_mode, cursor_hidden and flow_control
members to a bitfields.
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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
|
| | | |
| | |
| | |
| | | |
No longer needed after 2012-11-20 interactive-p changes.
|
| | | |
| | |
| | |
| | |
| | | |
src/xdisp.c (redisplay_window): If the cursor is visible, but inside
the scroll margin, move point outside the margin.
|
| | | |
| | |
| | |
| | |
| | |
| | | |
(xg_set_geometry): Set log handler to my_log_handler.
Fixes: debbugs:11177
|