Fix some fd issues when running subprocesses.
[bpt/emacs.git] / src / ChangeLog
index 521e185..759f66b 100644 (file)
+2013-08-12  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix some fd issues when running subprocesses (Bug#15035).
+       Fix bugs that can leak files or file descriptors on errors.
+       Don't unlink open temp files, as that's hard for users to diagnose
+       when things go awry (e.g., temp disk exhausted).
+       Don't bother to lock temp files.  Check for invalid recursion.
+       * callproc.c (synch_process_fd): Remove.  All uses removed.
+       (synch_process_tempfile): New var or macro.
+       (CALLPROC_STDOUT, CALLPROC_STDERR, CALLPROC_PIPEREAD, CALLPROC_FDS):
+       New constants.
+       (record_kill_process): New arg, the temp name.  All callers changed.
+       (delete_temp_file): Now just a simple wrapper around unlink.
+       (call_process_kill): New arg, the call_process_fd array.
+       Close them all.  Clear synch_process_pid.  Remove the temp file,
+       or arrange for it to be removed.
+       (call_process_cleanup) [MSDOS]: Arg no longer contains file name;
+       that's been moved to synch_process_tempfile.  Caller changed.
+       Do not remove the tempfile; that's now call_process_kill's
+       responsibility.
+       (call_process_cleanup) [!MSDOS]: Do not record unwind-protect for
+       call_process_kill; the caller now does that.
+       (call_process_cleanup): Do not close the process fd; that's now
+       call_process_kill's responsibility.
+       (Fcall_process): Implement via new function call_process, which
+       has most of the old body of Fcall_process, but with a different API.
+       (call_process): New function that does not open or close filefd if
+       it is nonnegative.  Record which fds need to be closed, and let
+       call_process_kill close (and remove the tempfile, on MSDOS) on error.
+       Signal an error if invoked recursively (could be done via a hook).
+       Simplify creation of the tempfile in the MSDOS case.
+       Don't create the output file until after checking for the executable.
+       Report any failure to open /dev/null.
+       Don't open /dev/null for writing twice; once is enough.
+       Don't create pipe if all output is being discarded or sent to file.
+       Don't worry about setting up the coding system or reading from the
+       pipe if all output is being discarded.
+       Hoist fd_error local into top level, to lessen block nesting.
+       Don't record deleted pid here; now done by Fcall_process_region.
+       (Fcall_process) [MSDOS]: Report mktemp failure immediately,
+       and note its success in synch_process_tempfile.
+       Do not leak resources when child_setup fails.
+       (Fcall_process) [!MSDOS && !WINDOWSNT]: Remove duplicate assignment
+       to child_errno.  Remove unnecessary close of fd0; it's close-on-exec.
+       (create_temp_file): Now returns open fd, with an additional
+       Lisp_Object * argument to return the name.  All callers changed.
+       Do not close the file; rewind it instead, and leave it open for
+       the caller.  Do not lock the temp file.  Unwind-protect the file
+       and the file-descriptor.
+       (Fcall_process_region): If the input is /dev/null, unwind-protect it.
+       If an asynchrounous process, record it here, not in call_process.
+       (syms_of_callproc) [MSDOS]: Initialize synch_process_tempfile.
+       * eval.c (set_unwind_protect): New function.
+       * fileio.c (write_region): New function, generalized from the
+       old Fwrite_region.  Do not lock temp files.
+       (Fwrite_region): Use it.
+       * lisp.h (set_unwind_protect, write_region): New decls.
+       * process.c: Include <verify.h>.
+       (make_process): Mark fds as initially closed.
+       (deleted_pid_list): Now a list of pid-filename pairs.
+       All uses changed.
+       (close_process_fd): New function.
+       (SUBPROCESS_STDIN, WRITE_TO_SUBPROCESS, READ_FROM_SUBPROCESS)
+       (SUBPROCESS_STDOUT, READ_FROM_EXEC_MONITOR, EXEC_MONITOR_OUTPUT):
+       New constants.  Verify that their number matches PROCESS_OPEN_FDS.
+       (create_process, create_pty, Fmake_serial_process)
+       (server_accept_connection): Record which fds need to be closed,
+       and let deactivate_process close them.
+       (Fmake_network_process): Do not discard the unwind-protect
+       until it's safe to do so.
+       (deactivate_process): Close the fds opened by create_process etc.
+       (Fprocess_send_eof): Adjust to new way of recording open fds.
+       Report an error if /dev/null can't be opened, instead of aborting.
+       * process.h (PROCESS_OPEN_FDS): New constant.
+       (struct Lisp_Process): New member open_fds.
+       (record_kill_process, record_deleted_pid): Adjust signatures.
+       (record_deleted_pid): Move decl here ...
+       * syswait.h (record_deleted_pid): ... from here.
+
+2013-08-11  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * decompress.c: Fix bugs with large buffers and weird inputs.
+       Tune a bit.  Reindent as per usual Emacs style.
+       (BUFFER_SIZE): Remove.
+       (Fdecompress_gzipped_region): Do not mishandle input buffers with
+       more than UINT_MAX bytes.  Decompress into the gap instead of into
+       an auto buffer, as this should avoid copying.  Return nil if
+       'inflate' returns Z_NEED_DICT, as we have no dictionary.  Do not
+       set immediate_quit; we shouldn't trust zlib code that much.
+
+2013-08-11  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * decompress.c (Fdecompress_gzipped_region): Respect all zlib
+       errors, and really move the gap to where we want it.
+
+       * lisp.h: Include decompress.c support.
+
+       * emacs.c (main): Include decompress.c support.
+
+       * Makefile.in: Include -lz if present.
+
+2013-08-11  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * nsmenu.m (ns_update_menubar): Call fillWithWidgetValue:frame:
+       (initWithTitle:): Initialize frame to 0.
+       (fillWithWidgetValue:): Call fillWithWidgetValue:frame.
+       (fillWithWidgetValue:frame:): Renamed from
+       fillWithWidgetValue:setDelegate, call initWithTile:frame: if f.
+
+       * nsterm.h (EmacsMenu): fillWithWidgetValue:setDelegate renamed to
+       fillWithWidgetValue:frame:
+
+       * nsfns.m (Fns_convert_utf8_nfd_to_nfc): Allocate and release pool to
+       remove memory leak warnings.
+
+       * nsterm.m (menu_pending_title, ns_get_pending_menu_title): Remove.
+       (ns_check_menu_open): Handle menu == nil.  Remove assignment to
+       menu_pending_title.
+
+       * nsmenu.m (ns_update_menubar): Call fillWithWidgetValue:setDelegate.
+       (x_activate_menubar): Update the whole menu.
+       (trackingNotification:): Call ns_check_menu_open if tracking ends.
+       (menuWillOpen:): Increment trackingMenu.  For OSX <= 10.6, exit if
+       current event is not NSSystemDefined (Bug#15001).
+       Call ns_check_menu_open only if trackingMenu is 2.
+       (menuDidClose:): New method, decrease trackingMenu.
+       (fillWithWidgetValue:setDelegate:): New method.
+       (fillWithWidgetValue:): Call the above.
+
+       * nsterm.h (EmacsMenu): Add fillWithWidgetValue:setDelegate:
+
+2013-08-11  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Omit some unnecessary casts.
+       Many of these go back to the old pre-C89 days, when they may have
+       been needed, but we've been assuming C89 or later for a while now.
+       * alloc.c (live_string_p, live_cons_p, live_symbol_p)
+       (live_float_p, live_misc_p, live_vector_p):
+       * buffer.c (compare_overlays, cmp_for_strings, mmap_find)
+       (mmap_alloc, alloc_buffer_text, enlarge_buffer_text)
+       (defvar_per_buffer):
+       * callint.c (Fcall_interactively):
+       * doc.c (Fsubstitute_command_keys):
+       * filelock.c (get_boot_time):
+       * frame.c (xrdb_get_resource):
+       * gtkutil.c (hierarchy_ch_cb, qttip_cb, style_changed_cb)
+       (delete_cb, xg_dialog_response_cb, xg_maybe_add_timer)
+       (xg_get_file_name_from_selector, menuitem_destroy_callback)
+       (menuitem_highlight_callback, menu_destroy_callback)
+       (xg_update_menu_item, xg_modify_menubar_widgets, menubar_map_cb)
+       (xg_tool_bar_callback, xg_get_tool_bar_widgets)
+       (xg_tool_bar_detach_callback, xg_tool_bar_attach_callback)
+       (xg_tool_bar_help_callback, tb_size_cb):
+       * image.c (xpm_alloc_color, png_read_from_memory)
+       (png_read_from_file, png_load_body, our_memory_skip_input_data)
+       (jpeg_memory_src, jpeg_file_src, imagemagick_load_image)
+       (syms_of_image):
+       * keymap.c (describe_map):
+       * nsfns.m (Fns_display_monitor_attributes_list):
+       * nsmenu.m (process_dialog:):
+       * nsterm.m (hold_event):
+       * process.c (wait_reading_process_output):
+       * regex.c (REGEX_REALLOCATE, re_set_registers, re_exec, regexec):
+       * scroll.c (do_direct_scrolling, scrolling_1):
+       * termcap.c (tgetent):
+       * window.c (check_window_containing, add_window_to_list)
+       (freeze_window_starts):
+       * xdisp.c (compare_overlay_entries, vmessage):
+       * xfns.c (x_window, x_get_monitor_attributes_xinerama)
+       (x_get_monitor_attributes_xrandr)
+       (Fx_display_monitor_attributes_list, x_display_info_for_name)
+       (Fx_open_connection, file_dialog_cb, file_dialog_unmap_cb):
+       * xfont.c (xfont_match, xfont_open):
+       * xmenu.c (x_menu_wait_for_event, menu_highlight_callback)
+       (menubar_selection_callback, menu_position_func)
+       (popup_selection_callback, create_and_show_popup_menu)
+       (dialog_selection_callback, create_and_show_dialog):
+       * xrdb.c (x_get_string_resource):
+       (main) [TESTRM]:
+       * xsmfns.c (x_session_check_input):
+       * xterm.c (x_draw_glyphless_glyph_string_foreground)
+       (xm_scroll_callback, xg_scroll_callback, xg_end_scroll_callback)
+       (xaw_jump_callback, xaw_scroll_callback):
+       Omit unnecessary casts.
+
+2013-08-10  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Minor string-length refactoring.
+       * alloc.c (xstrdup): Use memcpy, not strcpy, since the length's known.
+       * frame.c (make_monitor_attribute_list):
+       Prefer build_string to strlen + make_string.
+
+2013-08-10  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * xterm.c (x_error_handler): Also ignore BadWindow for X_SetInputFocus,
+       don't check minor_code (Bug#14417).
+
+2013-08-09  Eli Zaretskii  <eliz@gnu.org>
+
+       * xdisp.c (draw_glyphs): Don't compare row pointers, compare row
+       vertical positions instead.  This avoids calling MATRIX_ROW with
+       row numbers that are possibly beyond valid limits.  (Bug#15064)
+
+2013-08-09  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Use xstrdup and build_unibyte_string where applicable.
+       * alloc.c (xstrdup): Tiny cleanup.  Add eassert.
+       * xfns.c (x_window):
+       * xrdb.c (x_get_customization_string):
+       * xterm.c (xim_initialize):
+       * w32fns.c (w32_window): Use xstrdup.
+       (w32_display_monitor_attributes_list):
+       * emacs.c (init_cmdargs):
+       * keyboard.c (PUSH_C_STR):
+       * nsfont.m (nsfont_open):
+       * sysdep.c (system_process_attributes):
+       * w32.c (system_process_attributes):
+       * xdisp.c (message1, message1_nolog): Use build_unibyte_string.
+
+2013-08-09  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32.c (PEXCEPTION_POINTERS, PEXCEPTION_RECORD, PCONTEXT): Define
+       variables of these types so that GDB would know about them, as aid
+       for debugging fatal exceptions.  (Bug#15024)  See also
+       http://sourceware.org/ml/gdb/2013-08/msg00010.html for related
+       discussions.
+
+2013-08-08  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * nsterm.m (ns_update_begin): Don't change clip path if it would be
+       larger than the NSWindow (Bug#14934).
+
+2013-08-08  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Redesign redisplay interface to drop global variable updated_window.
+       Always pass currently updated window as a parameter to update routines.
+       * dispextern.h (updated_window): Remove declaration.
+       (struct redisplay_interface): Pass window parameter to
+       write_glyphs, insert_glyphs, clear_end_of_line, cursor_to
+       and after_update_window_hook.
+       (x_write_glyphs, x_insert_glyphs, x_clear_end_of_line, x_cursor_to):
+       Adjust prototypes.
+       * dispnew.c (updated_window): Remove.
+       (redraw_overlapped_rows, update_marginal_area, update_text_area)
+       (update_window_line): Adjust to match redisplay interface changes.
+       * nsterm.m (ns_update_window_begin, ns_update_window_end)
+       (ns_scroll_run, ns_after_update_window_line):
+       * w32term.c (x_update_window_begin, x_update_window_end)
+       (x_after_update_window_line, x_scroll_run):
+       * xterm.c (x_update_window_begin, x_update_window_end)
+       (x_after_update_window_line, x_scroll_run):
+       * xdisp.c (x_write_glyphs, x_insert_glyphs, x_clear_end_of_line):
+       Likewise.  Adjust comments where appropriate.
+       (x_cursor_to): Simplify because this is always called during window
+       update (but install debugging check anyway).
+       (expose_window): Check must_be_updated_p flag to see whether this
+       function is called during window update.
+
+2013-08-08  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Do not reset window modification event counters excessively.
+       These leftovers and poor man's tricky methods to catch extra
+       redisplay's attention are no longer needed.
+       * frame.c (set_menu_bar_lines_1):
+       * minibuf.c (read_minibuf_unwind):
+       * window.c (Fset_window_start, set_window_buffer, window_resize_apply)
+       (grow_mini_window, shrink_mini_window, window_scroll_pixel_based)
+       (window_scroll_line_based, Fset_window_configuration):
+       * xdisp.c (redisplay_window): Do not reset last_modified and
+       last_overlay_modified counters.
+
+2013-08-07  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * xselect.c (x_send_client_event): Set send_event and serial, memset
+       data.l as it might be bigger than data.b.   Use 24 bit mask to
+       XSendEvent (Bug#15034).
+
+2013-08-07  Eli Zaretskii  <eliz@gnu.org>
+
+       * xdisp.c (prepare_menu_bars): Don't call x_consider_frame_title
+       for TTY frames that are not the top frame on their console.
+       (Bug#14616)
+
+2013-08-07  Martin Rudalics  <rudalics@gmx.at>
+
+       * w32term.c (w32fullscreen_hook): Really maximize frame when
+       asked for (Bug#14841).
+
+2013-08-07  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Prefer selected_window to Fselected_window, likewise for frames.
+       * buffer.c (Fbuffer_swap_text):
+       * data.c (Fvariable_binding_locus):
+       * window.c (run_window_configuration_change_hook): Adjust users.
+       * w16select.c (Fw16_set_clipboard_data, Fw16_get_clipboard_data):
+       Use decode_live_frame.
+
+2013-08-07  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Be more careful if selected window shows the buffer other than current,
+       use window_outdated only if this is not so.  This change should also
+       address some weird issues discussed in Bug#13012.
+       * window.h (window_outdated): New prototype.
+       * window.c (window_outdated): Now here.  Convert from static and
+       always assume window's buffer.
+       (Fwindow_end, Fwindow_line_height): Use it.
+       * xdisp.c (reconsider_clip_changes): Remove prototype, drop 2nd arg
+       and always assume window's buffer.
+       (redisplay_window): Adjust user.
+       (redisplay_internal): Call to reconsider_clip_changes once and
+       check whether mode line should be updated only if selected window
+       shows current buffer.
+       (run_window_scroll_functions): Use eassert for debugging check.
+       (Fmove_point_visually, note_mouse_highlight): Use window_outdated.
+
+2013-08-06  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * window.c (window_scroll, window_scroll_pixel_based)
+       (window_scroll_line_based): Use bool for booleans.
+
+2013-08-06  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * process.c: Fix minor off-by-one issues in descriptor counts.
+       This shouldn't fix any real bugs, but it cleans up the code a bit.
+       (max_process_desc, max_input_desc): -1, not 0, means none.
+       All uses changed.
+       (delete_input_desc): New function.
+       (delete_write_fd, delete_keyboard_wait_descriptor): Use it.
+       (deactivate_process): Scan backwards when recomuting max_process_desc;
+       that should be faster.
+       (init_process_emacs): Initialize max_input_desc.
+
+2013-08-06  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Use region cache to speedup bidi_find_paragraph_start.
+       * buffer.h (struct buffer): New member bidi_paragraph_cache.
+       Rename cache_long_line_scans to cache_long_scans.
+       * buffer.c (bset_cache_long_line_scans): Rename to
+       bset_cache_long_scans.
+       (Fget_buffer_create, Fmake_indirect_buffer, Fkill_buffer)
+       (Fbuffer_swap_text, init_buffer_once): Take bidi_paragraph_cache
+       into account.
+       (syms_of_buffer): Rename cache-long-line-scans to
+       cache-long-scans.  Adjust docstring.
+       * search.c (newline_cache_on_off):
+       * indent.c (width_run_cache_on_off): Adjust users.
+       * bidi.c (bidi_paragraph_cache_on_off): New function.
+       (bidi_find_paragraph_start): Use bidi_paragraph_cache if needed.
+       * insdel.c (prepare_to_modify_buffer): Invalidate
+       bidi_paragraph_cache if enabled.
+
+2013-08-06  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Invalidate region caches only if buffer text is going to be changed.
+       * lisp.h (modify_region_1): Remove 3rd arg and rename to...
+       (modify_text): ...new prototype.
+       (prepare_to_modify_buffer_1): New prototype.
+       * textprop.c (modify_region): Rename to...
+       (modify_text_properties): ...new function.
+       (add_text_properties_1, set_text_properties, Fremove_text_properties)
+       (Fremove_list_of_text_properties): Adjust users.
+       * insdel.c (modify_region_1): Remove 3rd arg and reimplement as...
+       (modify_text): ...new function.
+       (prepare_to_modify_buffer): Reimplement mostly as a wrapper for...
+       (prepare_to_modify_buffer_1): ...new function.
+       * casefiddle.c (casify_region):
+       * editfns.c (Fsubst_char_in_region, Ftranslate_region_internal)
+       (Ftranspose_regions): Use modify_text.
+
+2013-08-05  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * lisp.mk (lisp): Add nadvice.elc.
+
+2013-08-05  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       New macro to iterate over live buffers similar to frames.
+       * buffer.h (FOR_EACH_LIVE_BUFFER): New macro.
+       (Vbuffer_alist, Qpriority, Qbefore_string, Qafter_string):
+       Declare buffer-related variables here to offload lisp.h.
+       * buffer.c (Vbuffer_alist): Adjust comment.
+       (Fget_file_buffer, get_truename_buffer, Fother_buffer)
+       (other_buffer_safely):
+       * data.c (store_symval_forwarding):
+       * dispnew.c (Fframe_or_buffer_changed_p):
+       * fileio.c (Fdo_auto_save):
+       * filelock.c (unlock_all_files):
+       * minibuf.c (read_minibuf): Use FOR_EACH_LIVE_BUFFER.
+
+2013-08-04  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix some minor races in hosts lacking mkostemp (Bug#15015).
+       * callproc.c (create_temp_file):
+       * filelock.c (create_lock_file):
+       Assume mkostemp, since it's now provided by Gnulib.
+
+2013-08-04  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32.c (mkostemp): New function.
+       (mktemp): Remove, no longer used.  Most of the code reused in
+       mkostemp.  (Bug#15015)
+       (mktemp): Don't undef.
+
+2013-08-04  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * dispnew.c (glyph_matrix_count, glyph_pool_count):
+       Move under GLYPH_DEBUG and ENABLE_CHECKING.
+       (new_glyph_matrix, free_glyph_matrix, new_glyph_pool)
+       (free_glyph_pool, check_glyph_memory): Likewise for
+       all users.  Adjust comments where appropriate.
+
+2013-08-03  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * composite.h: Minor fixups.
+       (composition_registered_p): Rename from COMPOSITION_REGISTERD_P
+       to fix a misspelling, and change it to an inline function while
+       we're at it (it need not be a macro).  All uses changed.
+       (composition_method, composition_valid_p):
+       Rewrite to avoid assignments in if-conditions.
+
+2013-08-03  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Do not use global Lisp_Object in composition macros.
+       * composite.h (composition_temp): Remove declaration.
+       (COMPOSITION_METHOD, COMPOSITION_VALID_P): Replace with...
+       (composition_method, composition_valid_p): ...inline functions.
+       (compose_region): Remove the leftover.
+       * composite.c (composition_temp): Remove.
+       (run_composition_function, update_compositions)
+       (composition_compute_stop_pos, composition_adjust_point)
+       (Ffind_composition_internal):
+       * coding.c (handle_composition_annotation):
+       * xdisp.c (handle_composition_prop, check_point_in_composition):
+       Related users changed.
+
+2013-08-03  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Drop FRAME_PTR typedef.
+       * composite.c, font.c, font.h, fontset.c, fontset.h, frame.c, frame.h:
+       * ftfont.c, ftxfont.c, gtkutil.c, gtkutil.h, image.c, keyboard.c:
+       * menu.c, menu.h, msdos.c, nsfns.m, nsfont.m, nsmenu.m, nsterm.h:
+       * nsterm.m, scroll.c, term.c, w32fns.c, w32font.c, w32font.h:
+       * w32inevt.c, w32inevt.h, w32menu.c, w32notify.c, w32term.c, w32term.h:
+       * w32uniscribe.c, w32xfns.c, widget.c, window.c, xdisp.c, xfaces.c:
+       * xfns.c, xfont.c, xftfont.c, xmenu.c, xselect.c, xterm.c:
+       All related users changed.
+
+2013-08-02  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * eval.c (default_toplevel_binding): New function.
+       (Fdefvar): Use it.
+       (unbind_to, backtrace_eval_unrewind): Do a bit of CSE simplification.
+       (Fdefault_toplevel_value, Fset_default_toplevel_value): New subrs.
+       (syms_of_eval): Export them.
+       * data.c (Fdefault_value): Micro cleanup.
+       * term.c (init_tty): Use "false".
+
+2013-08-02  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Fix X GC leak in GTK and raw (no toolkit) X ports.
+       * xterm.c (x_free_frame_resources): If white and black relief
+       GCs are allocated, always free them here.
+       * xfns.c (x_make_gc): Omit redundant initialization.
+       * widget.c (create_frame_gcs): Remove the leftover.
+       (EmacsFrameDestroy): Do nothing because all GCs are now freed
+       in x_free_frame_resources.
+
+2013-08-02  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * nsterm.m (windowWillResize:toSize:): Only change title if
+       ! maximizing_resize && FULLSCREEN_NONE (Bug#15005).  strdup title before
+       modifying it.
+       (viewDidEndLiveResize): New method.
+
+       * nsterm.h (EmacsView): Add maximizing_resize, put it and old_title
+       inside NS_IMPL_COCOA.
+
+2013-08-02  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * insdel.c (adjust_after_replace, replace_range, del_range_2):
+       Do not check whether undo is enabled because record_insert and
+       record_delete does that themselves.
+
+2013-08-02  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * xterm.h (struct x_output) [HAVE_X_I18N]: Remove xic_base_fontname
+       member which is not really used any more.
+       (FRAME_XIC_BASE_FONTNAME): Remove.
+       * xfns.c (xic_free_fontset): Adjust user.
+       * xmenu.c (mouse_position_for_popup, x_activate_menubar)
+       (update_frame_menubar, set_frame_menubar, free_frame_menubar)
+       (create_and_show_popup_menu, xmenu_show, create_and_show_dialog)
+       (xdialog_show): Use eassert for debugging check.
+       * w32term.c (x_unfocus_frame): Remove unused dummy function.
+
+2013-08-01  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * fileio.c, fns.c (merge): Move extern decl from here ...
+       * lisp.h (merge): ... to here.
+
+2013-08-01  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Fix last font-related change.
+       * w32font.h (w32font_list_internal, w32font_match_internal):
+       Fix prototype.
+       * w32uniscribe.c (uniscribe_list, uniscribe_match):
+       (uniscribe_list_family): Adjust to match font API change.
+       MS-Windows breakage reported by Juanma Barranquero <lekktu@gmail.com>
+       at http://lists.gnu.org/archive/html/emacs-devel/2013-08/msg00006.html.
+
+2013-08-01  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * frame.h (FRAME_MOUSE_UPDATE):
+       * nsterm.m (ns_frame_up_to_date): Omit redundant check
+       whether hlinfo->mouse_face_mouse_frame is non-NULL.
+
+2013-08-01  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Avoid redundant Lisp_Object <-> struct frame conversions in font API.
+       * font.h (struct font_driver): Change list, match, and list_family
+       functions to accept struct frame * as first arg.
+       * font.c (font_score, font_compare, font_sort_entities): Remove
+       prototypes.
+       (font_sort_entities, font_list_entities, font_select_entity):
+       (font_find_for_lface, Flist_fonts, Ffont_family_list): Adjust to
+       match font API change.
+       * xfont.c (xfont_list, xfont_match, xfont_list_family):
+       * ftfont.c (ftfont_list, ftfont_match, ftfont_list_family):
+       * ftxfont.c (ftxfont_list, ftxfont_match):
+       * xftfont.c (xftfont_list, xftfont_match):
+       * nsfont.m (nsfont_list, nsfont_match, nsfont_list_family):
+       * w32font.c (w32font_list, w32font_match, w32font_list):
+       (w32font_list_internal, w32_font_match_internal): Likewise.
+       * xfaces.c (Fx_family_fonts): Adjust user.
+
+2013-08-01  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Do not use pure Xism x_wm_set_icon_position in non-X ports.
+       * frame.c (x_set_frame_parameters): Call to x_wm_set_icon_position
+       only if HAVE_X_WINDOWS is in use.
+       * frame.h (x_set_frame_parameters): Move under HAVE_X_WINDOWS.
+       * nsterm.m (x_wm_set_icon_position): Remove no-op.
+       * w32term.c (x_wm_set_icon_position): Likewise.
+       * w32fns.c (x_icon): Adjust user.
+
+2013-08-01  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * xterm.c (last_mouse_press_frame): Remove the
+       leftover which is not really used any more.
+       (handle_one_xevent, syms_of_xterm): Adjust users.
+       (x_flush): Call XFlush once per each X display, not frame.
+       This is better because this code always unconditionally skips
+       non-X frames in Vframe_list and issues the only XFlush if we
+       have more than one X frame on the same X display.
+       (any_help_event_p, x_draw_glyph_string_background, x_display_ok):
+       Use bool for booleans.
+       (x_draw_glyph_string_background, cvt_string_to_pixel):
+       (cvt_pixel_dtor): Drop unnecessary prototypes.
+       * xterm.h (x_display_ok): Adjust prototype.
+
+2013-07-31  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Drop unnecessary functions that deals with frame pixel size.
+       * frame.h, msdos.h, w32term.h, xterm.h (x_pixel_width)
+       (x_pixel_height): Drop prototypes.
+       * msdos.c, nsfns.m, w32fns.c, xfns.c (x_pixel_width)
+       (x_pixel_height): Drop implementations.
+       * frame.c (Fframe_pixel_height): Use FRAME_PIXEL_HEIGHT
+       which should be always valid for window frame.
+       (Frame_pixel_width): Likewise with FRAME_PIXEL_WIDTH.
+       * w32menu.c (Fx_popup_dialog):
+       * xmenu.c (Fx_popup_dialog): Likewise for both.
+
+2013-07-31  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * frame.c (Fmake_terminal_frame): Use store_in_alist to setup
+       frame parameters and call to Fmodify_frame_parameters just once.
+       (Fset_frame_height, Fset_frame_width): Mention nil frame in docstring.
+       (Fset_frame_size, Fset_frame_position): Use decode_live_frame
+       and mention nil frame in docstring.
+
+2013-07-31  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * frame.c (make_frame, x_set_frame_parameters): Use bool for boolean.
+       (x_figure_window_size): Likewise.  Adjust to return long.
+       (syms_of_frame): Do not DEFSYM Qterminal_live_p.
+       (toplevel): Move Qterminal_live_p to...
+       * terminal.c (toplevel): ...here, make it static, and...
+       (syms_of_terminal): ...DEFSYM here.
+       * frame.h (Qterminal_live_p): Remove declaration.
+       (make_frame, x_figure_window_size): Adjust prototype.
+       * nsfns.m (Fx_create_frame): Use long for window flags.
+
+2013-07-30  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix tempfile bug on platforms lacking mkostemp and mkstemp (Bug#14986).
+       * callproc.c (create_temp_file) [! (HAVE_MKOSTEMP || HAVE_MKSTEMP)]:
+       Do not assume that emacs_close (INT_MAX) is a no-op.
+
+2013-07-30  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * xfaces.c (make_face_cache): For struct face_cache, prefer
+       xmalloc to xzalloc and so avoid redundant call to memset.
+       (Finternal_set_lisp_face_attribute): Fix comment typo and style.
+
+2013-07-30  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * fringe.c (draw_window_fringes, update_window_fringes)
+       (compute_fringe_widths):
+       * w32term.c (x_draw_glyph_string):
+       * window.c (candidate_window_p, Frecenter):
+       * xfaces.c (realize_basic_faces, realize_default_face)
+       (Fbitmap_space_p, Finternal_set_lisp_face_attribute)
+       (x_update_menu_appearance, face_attr_equal_p, lface_equal_p):
+       * xfns.c (x_set_cursor_color, xic_free_xfontset):
+       * xmenu.c (Fx_menu_bar_open_internal):
+       * xselect.c (x_reply_selection_request, Fx_get_atom_name):
+       * xsettings.c (xft_settings_event):
+       * xterm.c (x_draw_glyph_string, x_had_errors_p):
+       Use bool for booleans.  Adjust style and comments where
+       appropriate.
+       * dispextern.h (draw_window_fringes, update_window_fringes)
+       (compute_fringe_widths):
+       * xterm.h (x_had_errors_p): Adjust prototype.
+
+2013-07-30  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * frame.c (Fmodify_frame_parameters): Always check 2nd arg with
+       CHECK_LIST.  Rewrite the loop to avoid useless local variable.
+
+2013-07-29  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * fns.c (toplevel): Remove comment before Fsafe_length because
+       it checks for QUIT.
+
+2013-07-28  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * frame.c (delete_frame): Avoid unnecessary 'this_f' test (Bug#14970).
+
+2013-07-28  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32fns.c (w32_wnd_proc) <WM_IME_STARTCOMPOSITION>: Make sure the
+       frame which got the message is still alive, before dereferencing
+       its pointer.  (Bug#14970)
+
+       * frame.c (delete_frame): Test "this" frame's minibuffer window to
+       be a live window, before using it as such.  (Bug#14970)
+
+2013-07-27  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32term.c (w32_read_socket) <WM_KILLFOCUS>: Call
+       w32_detect_focus_change instead of doing part of its job by hand.
+       This fixes the problem whereby FOCUS_OUT events were not sent to
+       the event queue.
+
+2013-07-26  Eli Zaretskii  <eliz@gnu.org>
+
+       * process.c (Fprocess_list): Doc fix.
+
+       * w32term.c (w32_read_socket) <WM_EMACS_PAINT>: Warn about frame
+       being re-exposed only if it didn't ask to become visible.
+       <WM_SIZE>: Under SIZE_RESTORED, only set the frame visible if it
+       was previously iconified.  (Bug#14841)
+       (x_iconify_frame): Mark the frame iconified.
+
+2013-07-26  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix minor problems found by static checking.
+       * eval.c (get_backtrace_frame, backtrace_eval_unrewind): Now static.
+       (backtrace_eval_unrewind): ';' -> '{}' to pacify GCC.
+
+2013-07-26  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * eval.c (set_specpdl_old_value): New function.
+       (unbind_to): Minor simplification.
+       (get_backtrace_frame): New function.
+       (Fbacktrace_frame): Use it.  Add `base' argument.
+       (backtrace_eval_unrewind, Fbacktrace_eval): New functions.
+       (syms_of_eval): Export backtrace-eval.
+       * xterm.c (x_focus_changed): Simplify.
+
+2013-07-25  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * fileio.c (Finsert_file_contents): Avoid double-close (Bug#14936).
+
+2013-07-24  Eli Zaretskii  <eliz@gnu.org>
+
+       * xdisp.c (redisplay_window): Instead of moving point out of
+       scroll margin, reject the force_start method, and try scrolling
+       instead.  (Bug#14780)
+
+2013-07-24  Ken Brown  <kbrown@cornell.edu>
+
+       * alloc.c (make_save_ptr): Define if HAVE_NTGUI is defined
+       (Bug#14944).
+
+2013-07-24  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * eval.c (Fprogn): Do not check that BODY is a proper list.
+       This undoes the previous change.  The check slows down the
+       interpreter, and is not needed to prevent a crash.  See
+       <http://lists.gnu.org/archive/html/emacs-devel/2013-07/msg00693.html>.
+
+2013-07-23  Glenn Morris  <rgm@gnu.org>
+
+       * Makefile.in ($(etc)/DOC, temacs$(EXEEXT)): Ensure etc/ exists.
+
+2013-07-23  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Port to GNU/Linux systems with tinfo but not ncurses.
+       * dispnew.c (init_display): Depend on USE_NCURSES, not GNU_LINUX,
+       to decide whether ncurses is being used.  Without this change,
+       GCC complains about tgetent not being declared, on a system
+       that has tinfo installed but ncurses not installed.
+
+       * eval.c (Fprogn): Check that BODY is a proper list.
+
+       Tune UNEVALLED functions by using XCAR instead of Fcar, etc.
+       * data.c (Fsetq_default):
+       * eval.c (Fif, Fcond, Fprog1, Fsetq, Fquote, Ffunction, Fdefvar)
+       (Fdefconst, FletX, Flet, Fwhile, Fcatch, Funwind_protect)
+       (Fcondition_case):
+       Tune by taking advantage of the fact that ARGS is always a list
+       when a function is declared to have UNEVALLED args.
+
+       * emacsgtkfixed.c: Port to GCC 4.6.
+       GCC 4.6 complains about -Wunused-local-typedefs, introduced in 4.7.
+
+2013-07-23  Juanma Barranquero  <lekktu@gmail.com>
+
+       * callproc.c (child_setup)[!WINDOWSNT]: Move exec_errno and pid
+       here to silence compiler warnings.
+
+2013-07-22  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * sysdep.c (frame) [__FreeBSD__]: #define to freebsd_frame
+       when including <sys/user.h>, to prevent Sparc/ARM machine/frame.h
+       from messing up Emacs's 'struct frame' (Bug#14923).
+
+2013-07-21  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * alloc.c (make_save_ptr_ptr): Define this function.
+       It was inadvertently omitted.  It's needed only if
+       HAVE_MENUS && ! (USE_X_TOOLKIT || USE_GTK).
+
+2013-07-21  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * nsterm.m (sendEvent:): Skip mouse moved if no dialog and no Emacs
+       frame have focus (Bug#14895).
+
+2013-07-21  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Avoid vfork-related deadlock more cleanly.
+       * callproc.c (child_setup): When the child's exec fails, output
+       the program name, as that's more useful.  Use O_NONBLOCK to avoid
+       deadlock.
+       * process.c (create_process_1): Remove; no longer needed.
+       (create_process): Remove timer hack; no longer needed, now that
+       the child avoids deadlock.
+
+2013-07-20  Glenn Morris  <rgm@gnu.org>
+
+       * image.c (Fimage_flush): Fix doc typo.
+
+2013-07-20  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix array bounds violation when pty allocation fails.
+       * process.c (PTY_NAME_SIZE): New constant.
+       (pty_name): Remove static variable; it's now auto.
+       (allocate_pty): Define even if !HAVE_PTYS; that's simpler.
+       Take pty_name as an arg rather than using a static variable.
+       All callers changed.
+       (create_process): Recover pty_flag from process, not from volatile local.
+       (create_pty): Stay inside array even when pty allocation fails.
+       (Fmake_serial_process): Omit unnecessary initializaiton of pty_flag.
+
+       * lread.c (Fload): Avoid initialization only when lint checking.
+       Mention that it's needed only for older GCCs.
+
+2013-07-20  Kenichi Handa  <handa@gnu.org>
+
+       * coding.c (CODING_ISO_FLAG_LEVEL_4): New macro.
+       (decode_coding_iso_2022): Check the single-shift area.  (Bug#8522)
+
+2013-07-20  Andreas Schwab  <schwab@linux-m68k.org>
+
+       * lread.c (Fload): Avoid uninitialized warning.
+
+2013-07-19  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix some minor file descriptor leaks and related glitches.
+       * filelock.c (create_lock_file) [!O_CLOEXEC]: Use fcntl with FD_CLOEXEC.
+       (create_lock_file): Use write, not emacs_write.
+       * image.c (slurp_file, png_load_body):
+       * process.c (Fnetwork_interface_list, Fnetwork_interface_info)
+       (server_accept_connection):
+       Don't leak an fd on memory allocation failure.
+       * image.c (slurp_file): Add a cheap heuristic for growing files.
+       * xfaces.c (Fx_load_color_file): Block input around the fopen too,
+       as that's what the other routines do.  Maybe input need not be
+       blocked at all, but it's better to be consistent.
+       Avoid undefined behavior when strlen is zero.
+
+       * alloc.c (staticpro): Avoid buffer overrun on repeated calls.
+       (NSTATICS): Now a constant; doesn't need to be a macro.
+
+2013-07-19  Richard Stallman  <rms@gnu.org>
+
+       * coding.c (decode_coding_utf_8): Add simple loop for fast
+       processing of ASCII characters.
+
+2013-07-19  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * conf_post.h (RE_TRANSLATE_P) [emacs]: Remove obsolete optimization.
+
+2013-07-19  Eli Zaretskii  <eliz@gnu.org>
+
+       * keyboard.c (kbd_buffer_get_event): Use Display_Info instead of
+       unportable 'struct x_display_info'.
+       (DISPLAY_LIST_INFO): Delete macro: not needed, since Display_Info
+       is a portable type.
+
+2013-07-19  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * sysdep.c [GNU_LINUX]: Fix fd and memory leaks and similar issues.
+       (procfs_ttyname): Don't use uninitialized storage if emacs_fopen
+       or fscanf fails.
+       (system_process_attributes): Prefer plain char to unsigned char
+       when either will do.  Clean up properly if interrupted or if
+       memory allocations fail.  Don't assume sscanf succeeds.  Remove
+       no-longer-needed workaround to stop GCC from whining.  Read
+       command-line once, instead of multiple times.  Check read status a
+       bit more carefully.
+
+       Fix obscure porting bug with varargs functions.
+       The code assumed that int is treated like ptrdiff_t in a vararg
+       function, which is not a portable assumption.  There was a similar
+       -- though these days less likely -- porting problem with various
+       assumptions that pointers of different types all smell the same as
+       far as vararg functions is conserved.  To make this problem less
+       likely in the future, redo the API to use varargs functions.
+       * alloc.c (make_save_value): Remove this vararg function.
+       All uses changed to ...
+       (make_save_int_int_int, make_save_obj_obj_obj_obj)
+       (make_save_ptr_int, make_save_funcptr_ptr_obj, make_save_memory):
+       New functions.
+       (make_save_ptr): Rename from make_save_pointer, for consistency with
+       the above.  Define only on platforms that need it.  All uses changed.
+
+2013-07-18  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * keyboard.c: Try to fix typos in previous change.
+       (DISPLAY_LIST_INFO): New macro.
+       (kbd_buffer_get_event): Do not access members that are not present
+       in X11.  Revert inadvertent change of "!=" to "=".
+
+2013-07-18  Juanma Barranquero  <lekktu@gmail.com>
+
+       * keyboard.c (kbd_buffer_get_event):
+       * w32term.c (x_focus_changed): Port FOCUS_(IN|OUT)_EVENT changes to W32.
+       Followup to 2013-07-16T11:41:06Z!jan.h.d@swipnet.se.
+
+2013-07-18  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * filelock.c: Fix unlikely file descriptor leaks.
+       (get_boot_time_1): Rework to avoid using emacs_open.
+       This doesn't actually fix a leak, but is better anyway.
+       (read_lock_data): Use read, not emacs_read.
+
+       * doc.c: Fix minor memory and file descriptor leaks.
+       * doc.c (get_doc_string): Fix memory leak when doc file absent.
+       (get_doc_string, Fsnarf_documentation):
+       Fix file descriptor leak on error.
+
+       * term.c: Fix minor fdopen-related file descriptor leaks.
+       * term.c (Fresume_tty) [!MSDOS]: Close fd if fdopen (fd) fails.
+       (init_tty) [!DOS_NT]: Likewise.  Also close fd if isatty (fd) fails.
+
+       * charset.c: Fix file descriptor leaks and errno issues.
+       Include <errno.h>.
+       (load_charset_map_from_file): Don't leak file descriptor on error.
+       Use plain record_xmalloc since the allocation is larger than
+       MAX_ALLOCA; that's simpler here.  Simplify test for exhaustion
+       of entries.
+       * eval.c (record_unwind_protect_nothing):
+       * fileio.c (fclose_unwind):
+       New functions.
+       * lread.c (load_unwind): Remove.  All uses replaced by fclose_unwind.
+       The replacement doesn't block input, but that no longer seems
+       necessary.
+
+2013-07-17  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * lread.c: Fix file descriptor leaks and errno issues.
+       (Fload): Close some races that leaked fds or streams when 'load'
+       was interrupted.
+       (Fload, openp): Report error number of last nontrivial failure to open.
+       ENOENT counts as trivial.
+       * eval.c (do_nothing, clear_unwind_protect, set_unwind_protect_ptr):
+       New functions.
+       * fileio.c (close_file_unwind): No need to test whether FD is nonnegative,
+       now that the function is always called with a nonnegative arg.
+       * lisp.h (set_unwind_protect_ptr, set_unwind_protect_int): Remove.
+       All uses replaced with ...
+       (clear_unwind_protect, set_unwind_protect_ptr): New decls.
+
+       A few more minor file errno-reporting bugs.
+       * callproc.c (Fcall_process):
+       * doc.c (Fsnarf_documentation):
+       * fileio.c (Frename_file, Fadd_name_to_file, Fmake_symbolic_link):
+       * process.c (set_socket_option):
+       Don't let a constructor trash errno.
+       * doc.c: Include <errno.h>.
+
+2013-07-16  Juanma Barranquero  <lekktu@gmail.com>
+
+       * w32fns.c (unwind_create_tip_frame): Fix declaration.
+
+2013-07-16  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix w32 bug with call-process-region (Bug#14885).
+       * callproc.c (Fcall_process_region): Pass nil, not "/dev/null",
+       to Fcall_process when the input is empty.  This simplifies the
+       code a bit.  It makes no difference on POSIXish platforms but
+       apparently it fixes a bug on w32.
+
+       Fix bug where insert-file-contents closes a file twice (Bug#14839).
+       * fileio.c (close_file_unwind): Don't close if FD is negative;
+       this can happen when unwinding a zapped file descriptor.
+       (Finsert_file_contents): Unwind-protect the fd before the point marker,
+       in case Emacs runs out of memory between the two unwind-protects.
+       Don't trash errno when closing FD.
+       Zap the FD in the specpdl when closing it, instead of deferring
+       the removal of the unwind-protect; this fixes a bug where a child
+       function unwinds the stack past us.
+
+       New unwind-protect flavors to better type-check C callbacks.
+       This also lessens the need to write wrappers for callbacks,
+       and the need for make_save_pointer.
+       * alloca.c (free_save_value):
+       * atimer.c (run_all_atimers):
+       Now extern.
+       * alloc.c (safe_alloca_unwind):
+       * atimer.c (unwind_stop_other_atimers):
+       * keyboard.c (cancel_hourglass_unwind) [HAVE_WINDOW_SYSTEM]:
+       * menu.c (cleanup_popup_menu) [HAVE_NS]:
+       * minibuf.c (choose_minibuf_frame_1):
+       * process.c (make_serial_process_unwind):
+       * xdisp.h (pop_message_unwind):
+       * xselect.c (queue_selection_requests_unwind):
+       Remove no-longer-needed wrapper.  All uses replaced by the wrappee.
+       * alloca.c (record_xmalloc):
+       Prefer record_unwind_protect_ptr to record_unwind_protect with
+       make_save_pointer.
+       * alloca.c (Fgarbage_collect):
+       Prefer record_unwind_protect_void to passing a dummy.
+       * buffer.c (restore_buffer):
+       * window.c (restore_window_configuration):
+       * xfns.c, w32fns.c (do_unwind_create_frame)
+       New wrapper.  All record-unwind uses of wrappee changed.
+       * buffer.c (set_buffer_if_live):
+       * callproc.c (call_process_cleanup, delete_temp_file):
+       * coding.c (code_conversion_restore):
+       * dired.c (directory_files_internal_w32_unwind) [WINDOWSNT]:
+       * editfns.c (save_excursion_restore)
+       (subst_char_in_region_unwind, subst_char_in_region_unwind_1)
+       (save_restriction_restore):
+       * eval.c (restore_stack_limits, un_autoload):
+       * fns.c (require_unwind):
+       * keyboard.c (recursive_edit_unwind, tracking_off):
+       * lread.c (record_load_unwind, load_warn_old_style_backquotes):
+       * macros.c (pop_kbd_macro, restore_menu_items):
+       * nsfns.m (unwind_create_frame):
+       * print.c (print_unwind):
+       * process.c (start_process_unwind):
+       * search.c (unwind_set_match_data):
+       * window.c (select_window_norecord, select_frame_norecord):
+       * xdisp.c (unwind_with_echo_area_buffer, unwind_format_mode_line)
+       (fast_set_selected_frame):
+       * xfns.c, w32fns.c (unwind_create_tip_frame):
+       Return void, not a dummy Lisp_Object.  All uses changed.
+       * buffer.h (set_buffer_if_live): Move decl here from lisp.h.
+       * callproc.c (call_process_kill):
+       * fileio.c (restore_point_unwind, decide_coding_unwind)
+       (build_annotations_unwind):
+       * insdel.c (Fcombine_after_change_execute_1):
+       * keyboard.c (read_char_help_form_unwind):
+       * menu.c (unuse_menu_items):
+       * minibuf.c (run_exit_minibuf_hook, read_minibuf_unwind):
+       * sound.c (sound_cleanup):
+       * xdisp.c (unwind_redisplay):
+       * xfns.c (clean_up_dialog):
+       * xselect.c (x_selection_request_lisp_error, x_catch_errors_unwind):
+       Accept no args and return void, instead of accepting and returning
+       a dummy Lisp_Object.  All uses changed.
+       * cygw32.c (fchdir_unwind):
+       * fileio.c (close_file_unwind):
+       * keyboard.c (restore_kboard_configuration):
+       * lread.c (readevalllop_1):
+       * process.c (wait_reading_process_output_unwind):
+       Accept int and return void, rather than accepting an Emacs integer
+       and returning a dummy object.  In some cases this fixes an
+       unlikely bug when the corresponding int is outside Emacs integer
+       range.  All uses changed.
+       * dired.c (directory_files_internal_unwind):
+       * fileio.c (do_auto_save_unwind):
+       * gtkutil.c (pop_down_dialog):
+       * insdel.c (reset_var_on_error):
+       * lread.c (load_unwind):
+       * xfns.c (clean_up_file_dialog):
+       * xmenu.c, nsmenu.m (pop_down_menu):
+       * xmenu.c (cleanup_widget_value_tree):
+       * xselect.c (wait_for_property_change_unwind):
+       Accept pointer and return void, rather than accepting an Emacs
+       save value encapsulating the pointer and returning a dummy object.
+       All uses changed.
+       * editfns.c (Fformat): Update the saved pointer directly via
+       set_unwind_protect_ptr rather than indirectly via make_save_pointer.
+       * eval.c (specpdl_func): Remove.  All uses replaced by definiens.
+       (unwind_body): New function.
+       (record_unwind_protect): First arg is now a function returning void,
+       not a dummy Lisp_Object.
+       (record_unwind_protect_ptr, record_unwind_protect_int)
+       (record_unwind_protect_void): New functions.
+       (unbind_to): Support SPECPDL_UNWIND_PTR etc.
+       * fileio.c (struct auto_save_unwind): New type.
+       (do_auto_save_unwind): Use it.
+       (do_auto_save_unwind_1): Remove; subsumed by new do_auto_save_unwind.
+       * insdel.c (struct rvoe_arg): New type.
+       (reset_var_on_error): Use it.
+       * lisp.h (SPECPDL_UNWIND_PTR, SPECPDL_UNWIND_INT, SPECPDL_UNWIND_VOID):
+       New constants.
+       (specbinding_func): Remove; there are now several such functions.
+       (union specbinding): New members unwind_ptr, unwind_int, unwind_void.
+       (set_unwind_protect_ptr): New function.
+       * xselect.c: Remove unnecessary forward decls, to simplify maintenance.
+
+       Be simpler and more consistent about reporting I/O errors.
+       * fileio.c (Fcopy_file, Finsert_file_contents, Fwrite_region):
+       Say "Read error" and "Write error", rather than "I/O error", or
+       "IO error reading", or "IO error writing", when a read or write
+       error occurs.
+       * process.c (Fmake_network_process, wait_reading_process_output)
+       (send_process, Fprocess_send_eof, wait_reading_process_output):
+       Capitalize diagnostics consistently.  Put "failed foo" at the
+       start of the diagnostic, so that we don't capitalize the
+       function name "foo".  Consistently say "failed" for such
+       diagnostics.
+       * sysdep.c, w32.c (serial_open): Now accepts Lisp string, not C string.
+       All callers changed.  This is so it can use report_file_error.
+       * sysdep.c (serial_open, serial_configure): Capitalize I/O
+       diagnostics consistently as above.
+
+       * fileio.c (report_file_errno): Fix errno reporting bug.
+       If the file name is neither null nor a pair, package it up as a
+       singleton list.  All callers changed, both to this function and to
+       report_file_error.  This fixes a bug where the memory allocator
+       invoked by list1 set errno so that the immediately following
+       report_file_error reported the wrong errno value.
+
+       Fix minor problems found by --enable-gcc-warnings.
+       * frame.c (Fhandle_focus_in, Fhandle_focus_out): Return a value.
+       * keyboard.c (kbd_buffer_get_event): Remove unused local.
+
+2013-07-16  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * xterm.c (x_focus_changed): Always generate FOCUS_IN_EVENT.
+       Set event->arg to Qt if switch-event shall be generated.
+       Generate FOCUS_OUT_EVENT for FocusOut if this is the focused frame.
+
+       * termhooks.h (enum event_kind): Add FOCUS_OUT_EVENT.
+
+       * nsterm.m (windowDidResignKey): If this is the focused frame, generate
+       FOCUS_OUT_EVENT.
+
+       * keyboard.c (Qfocus_in, Qfocus_out): New static objects.
+       (make_lispy_focus_in, make_lispy_focus_out): Declare and define.
+       (kbd_buffer_get_event): For FOCUS_IN, make a focus_in event if no
+       switch frame event is made.  Check ! NILP (event->arg) if X11 (moved
+       from xterm.c).  Make focus_out event for FOCUS_OUT_EVENT if NS or X11
+       and there is a focused frame.
+       (head_table): Add focus-in and focus-out.
+       (keys_of_keyboard): Add focus-in and focus-out to Vspecial_event_map,
+       bind to handle-focus-in/out.
+
+       * frame.c (Fhandle_focus_in, Fhandle_focus_out): New functions.
+       (Fhandle_switch_frame): Call Fhandle_focus_in.
+       (syms_of_frame): defsubr handle-focus-in/out.
+
+2013-07-16  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix porting bug to older POSIXish platforms (Bug#14862).
+       * sysdep.c (emacs_pipe): New function, that implements
+       pipe2 (fd, O_CLOEXEC) even on hosts that lack O_CLOEXEC.
+       This should port better to CentOS 5 and to Mac OS X 10.6.
+       All calls to pipe2 changed.
+
+       Prefer list1 (X) to Fcons (X, Qnil) when building lists.
+       This makes the code easier to read and the executable a bit smaller.
+       Do not replace all calls to Fcons that happen to create lists,
+       just calls that are intended to create lists.  For example, when
+       creating an alist that maps FOO to nil, use list1 (Fcons (FOO, Qnil))
+       rather than list1 (list1 (FOO)) or Fcons (Fcons (FOO, Qnil), Qnil).
+       Similarly for list2 through list5.
+       * buffer.c (Fget_buffer_create, Fmake_indirect_buffer):
+       * bytecode.c (exec_byte_code):
+       * callint.c (quotify_arg, Fcall_interactively):
+       * callproc.c (Fcall_process, create_temp_file):
+       * charset.c (load_charset_map_from_file)
+       (Fdefine_charset_internal, init_charset):
+       * coding.c (get_translation_table, detect_coding_system)
+       (Fcheck_coding_systems_region)
+       (Fset_terminal_coding_system_internal)
+       (Fdefine_coding_system_internal, Fdefine_coding_system_alias):
+       * composite.c (update_compositions, Ffind_composition_internal):
+       * dired.c (directory_files_internal, file_name_completion)
+       (Fsystem_users):
+       * dispnew.c (Fopen_termscript, bitch_at_user, init_display):
+       * doc.c (Fsnarf_documentation):
+       * editfns.c (Fmessage_box):
+       * emacs.c (main):
+       * eval.c (do_debug_on_call, signal_error, maybe_call_debugger)
+       (Feval, eval_sub, Ffuncall, apply_lambda):
+       * fileio.c (make_temp_name, Fcopy_file, Faccess_file)
+       (Fset_file_selinux_context, Fset_file_acl, Fset_file_modes)
+       (Fset_file_times, Finsert_file_contents)
+       (Fchoose_write_coding_system, Fwrite_region):
+       * fns.c (Flax_plist_put, Fyes_or_no_p, syms_of_fns):
+       * font.c (font_registry_charsets, font_parse_fcname)
+       (font_prepare_cache, font_update_drivers, Flist_fonts):
+       * fontset.c (Fset_fontset_font, Ffontset_info, syms_of_fontset):
+       * frame.c (make_frame, Fmake_terminal_frame)
+       (x_set_frame_parameters, x_report_frame_params)
+       (x_default_parameter, Fx_parse_geometry):
+       * ftfont.c (syms_of_ftfont):
+       * image.c (gif_load):
+       * keyboard.c (command_loop_1):
+       * keymap.c (Fmake_keymap, Fmake_sparse_keymap, access_keymap_1)
+       (Fcopy_keymap, append_key, Fcurrent_active_maps)
+       (Fminor_mode_key_binding, accessible_keymaps_1)
+       (Faccessible_keymaps, Fwhere_is_internal):
+       * lread.c (read_emacs_mule_char):
+       * menu.c (find_and_return_menu_selection):
+       * minibuf.c (get_minibuffer):
+       * nsfns.m (Fns_perform_service):
+       * nsfont.m (ns_script_to_charset):
+       * nsmenu.m (ns_popup_dialog):
+       * nsselect.m (ns_get_local_selection, ns_string_from_pasteboard)
+       (Fx_own_selection_internal):
+       * nsterm.m (append2):
+       * print.c (Fredirect_debugging_output)
+       (print_prune_string_charset):
+       * process.c (Fdelete_process, Fprocess_contact)
+       (Fformat_network_address, set_socket_option)
+       (read_and_dispose_of_process_output, write_queue_push)
+       (send_process, exec_sentinel):
+       * sound.c (Fplay_sound_internal):
+       * textprop.c (validate_plist, add_properties)
+       (Fput_text_property, Fadd_face_text_property)
+       (copy_text_properties, text_property_list, syms_of_textprop):
+       * unexaix.c (report_error):
+       * unexcoff.c (report_error):
+       * unexsol.c (unexec):
+       * xdisp.c (redisplay_tool_bar, store_mode_line_string)
+       (Fformat_mode_line, syms_of_xdisp):
+       * xfaces.c (set_font_frame_param)
+       (Finternal_lisp_face_attribute_values)
+       (Finternal_merge_in_global_face, syms_of_xfaces):
+       * xfns.c (x_default_scroll_bar_color_parameter)
+       (x_default_font_parameter, x_create_tip_frame):
+       * xfont.c (xfont_supported_scripts):
+       * xmenu.c (Fx_popup_dialog, xmenu_show, xdialog_show)
+       (menu_help_callback, xmenu_show):
+       * xml.c (make_dom):
+       * xterm.c (set_wm_state):
+       Prefer list1 (FOO) to Fcons (FOO, Qnil) when creating a list,
+       and similarly for list2 through list5.
+
+2013-07-15  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * callproc.c (Fcall_process_region): Fix minor race and tune.
+       (create_temp_file): New function, with the temp-file-creation part
+       of the old Fcall_process_region.  Use Fcopy_sequence to create the
+       temp file name, rather than alloca + build_string, for simplicity.
+       Don't bother to block input around the temp file creation;
+       shouldn't be needed.  Simplify use of mktemp.  Use
+       record_unwind_protect immediately after creating the temp file;
+       this closes an unlikely race where the temp file was not removed.
+       Use memcpy rather than an open-coded loop.
+       (Fcall_process_region): Use the new function.  If the input is
+       empty, redirect from /dev/null rather than from a newly created
+       empty temp file; this avoids unnecessary file system traffic.
+
+2013-07-14  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * filelock.c (create_lock_file) [!HAVE_MKOSTEMP && !HAVE_MKSTEMP]:
+       Simplify by making this case like the other two.  This is a bit
+       slower on obsolete hosts, but the extra complexity isn't worth it.
+
+       * callproc.c (child_setup, relocate_fd) [!DOS_NT]:
+       * process.c (create_process) [!DOS_NT]:
+       Remove now-unnecessary calls to emacs_close.
+
+2013-07-13  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32term.c (x_draw_hollow_cursor): Delete the brush object when
+       returning early.  (Bug#14850)
+
+       * coding.c (syms_of_coding): Set up inhibit-null-byte-detection
+       and inhibit-iso-escape-detection attributes of 'undecided'.
+       (Bug#14822)
+
+2013-07-13  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * deps.mk (sysdep.o): Remove dependency on ../lib/ignore-value.h.
+       Reported by Herbert J. Skuhra in
+       <http://lists.gnu.org/archive/html/emacs-devel/2013-07/msg00455.html>.
+
+       Don't lose top specpdl entry when memory is exhausted.
+       * eval.c (grow_specpdl): Increment specpdl top by 1 and check for
+       specpdl overflow here, to simplify callers; all callers changed.
+       Always reserve an unused entry at the stack top; this avoids
+       losing the top entry's information when memory is exhausted.
+
+2013-07-12  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Clean up errno reporting and fix some errno-reporting bugs.
+       * callproc.c (Fcall_process):
+       * fileio.c (Fcopy_file, Finsert_file_contents, Fwrite_region):
+       * process.c (create_process, Fmake_network_process):
+       * unexaix.c (report_error):
+       * unexcoff.c (report_error):
+       Be more careful about reporting the errno of failed operations.
+       The code previously reported the wrong errno sometimes.
+       Also, prefer report_file_errno to setting errno + report_file_error.
+       (Fcall_process): Look at openp return value rather than at path,
+       as that's a bit faster and clearer when there's a numeric predicate.
+       * fileio.c (report_file_errno): New function, with most of the
+       old contents of report_file_error.
+       (report_file_error): Use it.
+       (Ffile_exists_p, Ffile_accessible_directory_p):
+       Set errno to 0 when it is junk.
+       * fileio.c (Faccess_file):
+       * image.c (x_create_bitmap_from_file):
+       Use faccessat rather than opening the file, to avoid the hassle of
+       having a file descriptor open.
+       * lisp.h (report_file_errno): New decl.
+       * lread.c (Flocate_file_internal): File descriptor 0 is valid, too.
+
+       Minor EBADF fixes.
+       * process.c (create_process, wait_reading_process_output) [AIX]:
+       Remove obsolete SIGHUP-related  code, as Emacs no longer disables
+       SIGHUP, so EBADF is no longer acceptable here (it wouldn't work in
+       a multithreaded environment anyway).
+       * sysdep.c (emacs_close): It's not dangerous to invoke emacs_close (-1).
+
+2013-07-12  Andreas Schwab  <schwab@linux-m68k.org>
+
+       * image.c (x_find_image_file): Don't close a remote file handle.
+
+2013-07-12  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix races with threads and file descriptors.
+       * callproc.c (Fcall_process_region):
+       * dired.c (open_directory):
+       * emacs.c (main, Fdaemon_initialized):
+       * image.c (x_find_image_file):
+       * inotify.c (Finotify_rm_watch):
+       * lread.c (Flocate_file_internal):
+       * process.c (Fnetwork_interface_list, Fnetwork_interface_info):
+       * term.c (term_mouse_moveto, init_tty):
+       * termcap.c (tgetent):
+       * unexaix.c, unexcoff.c (report_error, report_error_1, adjust_lnnoptrs)
+       * unexaix.c, unexcoff.c, unexcw.c, unexelf.c (unexec):
+       * unexhp9k800.c, unexmacosx.c (unexec):
+       * callproc.c (Fcall_process_region):
+       Use emacs_close, not close.
+       * sysdep.c (POSIX_CLOSE_RESTART, posix_close) [!POSIX_CLOSE_RESTART]:
+       New macro and function, which emulates the POSIX_CLOSE_RESTART macro
+       and posix_close function on current platforms (which all lack them).
+       (emacs_close): Use it.  This should fix the races on GNU/Linux and
+       on AIX and on future platforms that support POSIX_CLOSE_RESTART,
+       and it should avoid closing random victim file descriptors on
+       other platforms.
+
+2013-07-11  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * inotify.c (uninitialized): Remove.  All uses replaced by -1.
+       (Finotify_add_watch): Simplify, since -1 means uninitialized now.
+       Touch up doc a bit.
+
+       * eval.c (backtrace_function, backtrace_args): Now EXTERNALLY_VISIBLE.
+       This is for .gdbinit xbacktrace.
+
+       * sysdep.c, term.c, termcap.c, terminal.c: Integer-related minor fixes.
+       * sysdep.c (emacs_get_tty): Return void, since nobody uses the value.
+       (emacs_set_tty): Now static.
+       * sysdep.c (emacs_set_tty, tabs_safe_p, emacs_close):
+       * term.c (tty_capable_p, tty_default_color_capabilities)
+       (get_tty_terminal, term_mouse_movement)
+       (handle_one_term_event, init_tty, maybe_fatal):
+       * termcap.c (tgetst1, struct termcap_buffer, valid_filename_p)
+       (tgetent, scan_file, name_match, compare_contin):
+       * terminal.c (get_terminal):
+       Use bool for boolean.
+       * sysdep.c (init_system_name): Don't overflow stack on huge hostname.
+       Prefer char to unsigned char if either will do.
+       * term.c (OUTPUT, turn_on_face): Omit unnecessary casts to int.
+       (tty_write_glyphs): Prefer int to unsigned.
+       (produce_glyphless_glyph): Remove 2nd (unused) int arg.
+       All callers changed.
+       * termcap.c (tprint, main) [TEST]: Remove non-working test.
+
+2013-07-10  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Port to C89.
+       * bytecode.c (BYTE_CODE_THREADED): Do not define if __STRICT_ANSI__.
+       (B__dummy__): New dummy symbol, to pacify C89.
+       * dbusbind.c (XD_DEBUG_MESSAGE): Omit debugging on C89 hosts, since
+       they can't grok varargs macros.
+       * dispnew.c (add_window_display_history)
+       (add_frame_display_history):
+       * print.c (print_object):
+       * xdisp.c (debug_method_add):
+       Use %p printf format only for void pointers.
+       * emacs.c (usage_message): New constant, replacing ...
+       (USAGE1, USAGE2, USAGE3): Remove; they were too long for C89.
+       (main): Adjust to usage reorg.
+       * fns.c (syms_of_fns):
+       * profiler.c (syms_of_profiler):
+       Don't use non-constant struct initializers.
+       * gnutls.h (gnutls_initstage_t):
+       * lisp.h (enum Lisp_Fwd_Type):
+       * lread.c (lisp_file_lexically_bound_p):
+       * xsettings.c (anonymous enum):
+       Remove trailing comma.
+       * xsettings.c (apply_xft_settings): Use %f, not %lf; %lf is a C99ism.
+       * lisp.h (ENUM_BF): Use unsigned if pedantic.
+       (DEFUN_FUNCTION_INIT): New macro, that falls back on a cast if pre-C99.
+       (DEFUN): Use it.
+       * regex.c (const_re_char): New type, to pacify strict C89.
+       All uses of 'const re_char' replaced to use it.
+       * regex.h (_Restrict_): Rename from __restrict, to avoid clash
+       with glibc when strict C89.  This change is imported from gnulib.
+       All uses changed.
+       (_Restrict_arr_): Rename from __restrict_arr, similarly.
+       * sysdep.c (time_from_jiffies) [!HAVE_LONG_LONG_INT]:
+       Omit GNU_LINUX implementation, since it requires long long.
+       * xterm.c (x_draw_underwave):
+       Do not assume the traditional order of struct's members.
+       (x_term_init): Rewrite to avoid the need for non-constant structure
+       initializers.
+
+       Syntax cleanup, mostly replacing macros with functions.
+       This removes the need for the syntax_temp hack.
+       * search.c: Include syntax.h after buffer.h, since syntax.h uses BVAR.
+       * syntax.c (SYNTAX_INLINE): New macro.
+       (SYNTAX_FLAGS_COMSTART_FIRST, SYNTAX_FLAGS_COMSTART_SECOND)
+       (SYNTAX_FLAGS_COMEND_FIRST, SYNTAX_FLAGS_COMEND_SECOND)
+       (SYNTAX_FLAGS_PREFIX, SYNTAX_FLAGS_COMMENT_STYLEB)
+       (SYNTAX_FLAGS_COMMENT_STYLEC, SYNTAX_FLAGS_COMMENT_STYLEC2)
+       (SYNTAX_FLAGS_COMMENT_NESTED, SYNTAX_FLAGS_COMMENT_STYLE)
+       (SYNTAX_COMEND_FIRST): Now functions, not macros.
+       (ST_COMMENT_STYLE, ST_STRING_STYLE, INTERVALS_AT_ONCE):
+       Now constants, not macros.
+       (syntax_temp) [!__GNUC__]: Remove.
+       (SYNTAX_PREFIX): Remove; all uses replaced by syntax_prefix_flag_p.
+       (syntax_prefix_flag_p): Move implementation of SYNTAX_PREFIX here.
+       (SET_RAW_SYNTAX_ENTRY, SET_RAW_SYNTAX_ENTRY_RANGE, SYNTAX_MATCH)
+       (SETUP_SYNTAX_TABLE, SETUP_SYNTAX_TABLE_FOR_OBJECT):
+       Move here from syntax.h; now functions, not macros.  Except for the
+       last function, these are static since only syntax.c uses them.
+       (syntax_multibyte): Rename from SYNTAX_WITH_MULTIBYTE_CHECK.
+       All uses changed.  Now a function, not a macro; use this fact
+       to simplify the code.
+       (scan_lists, scan_sexps_forward): Remove workarounds for ancient
+       compiler bugs; no longer relevant.
+       * syntax.h: Use INLINE_HEADER_BEGIN, INLINE_HEADER_END.
+       (SYNTAX_INLINE): New macro.
+       (struct gl_state_s, gl_state): Move earlier, so that it's in scope
+       for the new functions.  Use bool for boolean member.
+       (SYNTAX_ENTRY, SYNTAX, SYNTAX_WITH_FLAGS, SYNTAX_MATCH)
+       (SYNTAX_TABLE_BYTE_TO_CHAR, UPDATE_SYNTAX_TABLE_FORWARD)
+       (UPDATE_SYNTAX_TABLE_BACKWARD, UPDATE_SYNTAX_TABLE)
+       (SETUP_BUFFER_SYNTAX_TABLE):
+       Now extern inline functions, not macros.
+       (CURRENT_SYNTAX_TABLE, SYNTAX_ENTRY_INT):
+       Remove; all uses replaced by implementation.
+       (syntax_temp) [!__GNUC__]: Remove decl.
+       (SETUP_SYNTAX_TABLE_FOR_OBJECT): New decl.
+
+2013-07-10  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * emacs.c (main): Fix syntax error.
+
+2013-07-10  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Timestamp fixes for undo (Bug#14824).
+       * atimer.c (schedule_atimer):
+       * fileio.c (Ffile_newer_than_file_p):
+       Minor cleanup: use EMACS_TIME_LT so that we can remove EMACS_TIME_GT.
+       * buffer.c (buffer-undo-list): Document (t . 0) and (t . -1).
+       * fileio.c (Fclear_visited_file_modtime): Move to lisp/files.el.
+       (syms_of_fileio): Remove Sclear_visited_file_name.
+       (Fvisited_file_modtime): Return -1, not (-1 ...), when the visited
+       file doesn't exist; this avoids an ambiguity with negative timestamps.
+       (Fset_visited_file_modtime): Accept -1 and 0 as time-list arg.
+       * systime.h (make_emacs_time, invalid_emacs_time):
+       Don't assume struct timespec layout; POSIX doesn't guarantee it.
+       (EMACS_TIME_NE, EMACS_TIME_GT, EMACS_TIME_GE): Remove.
+       * undo.c (record_first_change): Push (visited-file-modtime) onto
+       undo list rather than reimplementing it by hand, incorrectly.
+
+2013-07-09  Ken Brown  <kbrown@cornell.edu>
+
+       * sheap.c (STATIC_HEAP_SIZE) [__x86_64__]: Increase to 18MB.
+
+2013-07-09  Juanma Barranquero  <lekktu@gmail.com>
+
+       * makefile.w32-in ($(BLD)/emacs.$(O), $(BLD)/sysdep.$(O)): Update.
+
+2013-07-09  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Handle errno and exit status a bit more carefully.
+       * callproc.c (child_setup) [!DOS_NT]: Don't try to stuff an error
+       number into an exit status.  Instead, use EXIT_CANCELED.
+       (child_setup) [!MSDOS]: Avoid possible deadlock with vfork.
+       * callproc.c (relocate_fd):
+       * emacs.c (close_output_streams, main):
+       * process.c (create_process):
+       * sysdep.c (sys_subshell) [!DOS_NT || !WINDOWSNT]:
+       Use emacs_perror for simplicity.
+       * callproc.c (relocate_fd, main):
+       * sysdep.c (sys_subshell):
+       Exit with EXIT_CANCELED etc., not 1, when exec setup fails.
+       (shut_down_emacs): Use emacs_write, not write.
+       * emacs.c, sysdep.c: Don't include <ignore-value.h>.
+       * fileio.c (Fcopy_file, e_write):
+       * nsterm.m (ns_select):
+       * process.c (send_process):
+       * sound.c (vox_write):
+       Use emacs_write_sig, not emacs_write.
+       * lisp.h (emacs_write_sig, emacs_perror): New decls.
+       * process.h (EXIT_CANCELED), EXIT_CANNOT_INVOKE, EXIT_ENOENT):
+       New constants.
+       * sysdep.c (emacs_backtrace): Use emacs_write, not ignore_value
+       of write.
+       (emacs_full_write): New function.
+       (emacs_write): Rewrite to use it.
+       (emacswrite_sig, emacs_perror): New functions.
+       * xrdb.c (fatal): Don't invoke perror, since errno might be garbage.
+
+2013-07-08  Magnus Henoch  <magnus.henoch@gmail.com>  (tiny change)
+
+       * image.c (imagemagick_load_image): Do not use MagickExportImagePixels
+       on NS even if it is present.  Pixmap on NS is a void*.
+
+2013-07-07  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Port to Ubuntu 10 (Bug#14803).
+       Problem reported by T.V. Raman.
+       * process.c (close_on_exec, accept4, process_socket):
+       Define these if !HAVE_ACCEPT4, not if !SOCK_CLOEXEC.
+
+2013-07-07  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32.c (sys_dup): Declare prototype.
+
+       * filelock.c:
+       * emacs.c:
+       * callproc.c [WINDOWSNT]: Include sys/socket.h.
+
+2013-07-07  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Make file descriptors close-on-exec when possible (Bug#14803).
+       This simplifies Emacs a bit, since it no longer needs to worry
+       about closing file descriptors by hand in some cases.
+       It also fixes some unlikely races.  Not all such races, as
+       libraries often open files internally without setting
+       close-on-exec, but it's an improvement.
+       * alloc.c (valid_pointer_p) [!WINDOWSNT]:
+       * callproc.c (Fcall_process) [!MSDOS]:
+       * emacs.c (main) [!DOS_NT]:
+       * nsterm.m (ns_term_init):
+       * process.c (create_process):
+       Use 'pipe2' with O_CLOEXEC instead of 'pipe'.
+       * emacs.c (Fcall_process_region) [HAVE_MKOSTEMP]:
+       * filelock.c (create_lock_file) [HAVE_MKOSTEMP]:
+       Prefer mkostemp with O_CLOEXEC to mkstemp.
+       * callproc.c (relocate_fd) [!WINDOWSNT]:
+       * emacs.c (main): Use F_DUPFD_CLOEXEC, not plain F_DUPFD.
+       No need to use fcntl (..., F_SETFD, FD_CLOEXEC), since we're
+       now using pipe2.
+       * filelock.c (create_lock_file) [! HAVE_MKOSTEMP]:
+       Make the resulting file descriptor close-on-exec.
+       * lisp.h, lread.c, process.c (close_load_descs, close_process_descs):
+       * lread.c (load_descriptor_list, load_descriptor_unwind):
+       Remove; no longer needed.  All uses removed.
+       * process.c (SOCK_CLOEXEC): Define to 0 if not supplied by system.
+       (close_on_exec, accept4, process_socket) [!SOCK_CLOEXEC]:
+       New functions.
+       (socket) [!SOCK_CLOEXEC]: Supply a substitute.
+       (Fmake_network_process, Fnetwork_interface_list):
+       (Fnetwork_interface_info, server_accept_connection):
+       Make newly-created socket close-on-exec.
+       * sysdep.c (emacs_open, emacs_fopen):
+       Make new-created descriptor close-on-exec.
+       * w32.c (fcntl): Support F_DUPFD_CLOEXEC well enough for Emacs.
+       * w32.c, w32.h (pipe2): Rename from 'pipe', with new flags arg.
+
+2013-07-07  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * nsterm.m (sendEvent:): Propagate keyboard events to modal windows
+       for NS_IMPL_GNUSTEP.
+
+2013-07-07  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix openp errno handling.
+       * callproc.c (Fcall_process): Preserve openp errno around close.
+       * lread.c (openp): Set errno when returning -1, as some callers
+       expect this.
+
+2013-07-06  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * nsterm.m (sendEvent:): Handle NSAPP_DATA2_RUNFILEDIALOG.
+
+       * nsterm.h (NSSavePanel): Update comment.
+       (NSAPP_DATA2_RUNFILEDIALOG): Define.
+       (ns_run_file_dialog): Declare.
+
+       * nsfns.m: Remove panelOK.
+       (ns_fd_data): New.
+       (ns_run_file_dialog): New function.
+       (Fns_read_file_name): Fill in ns_fd_data, post an event and start the
+       event loop, so file dialog is popped up by ns_run_file_dialog, called
+       by sendEvent (Bug#14578).
+       (EmacsSavePanel, EmacsOpenPanel): Remove ok and cancel methods.
+
+2013-07-06  Eli Zaretskii  <eliz@gnu.org>
+
+       * xdisp.c (default_line_pixel_height): New function.
+       (pos_visible_p, move_it_vertically_backward, try_scrolling)
+       (try_cursor_movement, redisplay_window, try_window)
+       (try_window_id): Use it instead of FRAME_LINE_HEIGHT.  (Bug#14771)
+
+       * window.c (window_scroll_pixel_based): use
+       default_line_pixel_height.
+
+       * dispextern.h (default_line_pixel_height): Add prototype.
+
+       * frame.c (x_set_line_spacing): Accept a float value for
+       line-spacing parameter, per the documentation.
+
+       * data.c (Fmultibyte_string_p): Doc fix.
+
+2013-07-05  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Use emacs_open more consistently when opening files.
+       This handles EINTR more consistently now, and makes it easier
+       to introduce other uniform changes to file descriptor handling.
+       * src/systdio.h: New file.
+       * src/buffer.c (mmap_init):
+       * cygw32.c (chdir_to_default_directory):
+       * dispnew.c (Fopen_termscript):
+       * emacs.c (Fdaemon_initialized):
+       * fileio.c (Fdo_auto_save):
+       * image.c (slurp_file, png_load_body, jpeg_load_body):
+       * keyboard.c (Fopen_dribble_file):
+       * lread.c (Fload):
+       * print.c (Fredirect_debugging_output):
+       * sysdep.c (get_up_time, procfs_ttyname, procfs_get_total_memory):
+       * termcap.c (tgetent):
+       * unexaix.c, unexcoff.c (unexec, adjust_lnnoptrs):
+       * unexcw.c, unexelf.c, unexhp9k800.c, unexmacosx.c (unexec):
+       * w32term.c (w32_initialize) [CYGWIN]:
+       * xfaces.c (Fx_load_color_file):
+       Use emacs_open instead of plain open, and emacs_fopen instead of
+       plain fopen.
+       * dispnew.c, fileio.c, image.c, keyboard.c, lread.c, print.c, sysdep.c:
+       * xfaces.c: Include sysstdio.h rather than stdio.h, for emacs_fopen.
+       * callproc.c (default_output_mode): New constant.
+       (Fcall_process): Use it to call emacs_open instead of plain creat.
+       * dispnew.c (Fopen_termscript): Fix minor race in opening termscript.
+       * sysdep.c (emacs_open): Add commentary and don't call file name "path".
+       (emacs_fopen): New function.
+       * unexaix.c, unexcoff.c, unexelf.c, unexhp9k800.c, unexmacosx.c:
+       Include <lisp.h>, for emacs_open.
+       * unexelf.c (fatal): Remove decl; not needed with <lisp.h> included.
+
+       Remove duplicate #include directives.
+       * alloc.c [GC_MARK_STACK == GC_USE_GCPROS_CHECK_ZOMBIES]:
+       * xfaces.c:
+       Don't include stdio.h twice.
+       * buffer.c [USE_MMAP_FOR_BUFFERS]:
+       Don't include sys/types.h or stdio.h twice.
+       * fileio.c [WINDOWSNT | MSDOS]: Don't include fcntl.h twice.
+       * lread.c: Don't include coding.h twice.
+       * nsfont.m: Don't include frame.h twice.
+       * process.c [HAVE_RES_INIT]: Don't include <netinet/in.h> twice.
+       * ralloc.c: Don't include <unistd.h> twice.
+       * xdisp.c: Don't include font.h twice.
+       * xterm.c: Don't include fontset.h twice.
+       * xterm.h [USE_X_TOOLKIT]: Don't include X11/StringDefs.h twice.
+
+2013-07-04  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Scale ImageMagick images more carefully.
+       * image.c (scale_image_size) [HAVE_IMAGEMAGICK]: New function.
+       (compute_image_size): Use it.  Define only if HAVE_IMAGEMAGICK.
+       Be more careful about avoiding undefined behavior after
+       integer overflow and division by zero.
+
+2013-07-04  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * w32fns.c (Qgeometry, Qworkarea, Qmm_size, Qframes): New variables.
+       (syms_of_w32fns): DEFSYM them.
+       (MONITORINFOF_PRIMARY, SM_XVIRTUALSCREEN, SM_YVIRTUALSCREEN)
+       (CCHDEVICENAME): Define macros if not defined.
+       (struct MONITOR_INFO_EX): New struct.
+       (MonitorEnum_Proc, EnumDisplayMonitors_Proc): New prototypes.
+       (enum_display_monitors_fn): New variable.
+       (globals_of_w32fns): Initialize it.
+       (Fx_display_pixel_width, Fx_display_pixel_height)
+       (Fx_display_mm_height, Fx_display_mm_width): Mention behavior on
+       multi-monitor setups in docstrings.
+       (Fx_display_mm_height, Fx_display_mm_width): Approximate whole
+       screen size by primary monitor's millimeter per pixel.
+       (w32_monitor_enum, w32_display_monitor_attributes_list)
+       (w32_display_monitor_attributes_list_fallback)
+       (Fw32_display_monitor_attributes_list): New functions.
+       (syms_of_w32fns): Defsubr Sw32_display_monitor_attributes_list.
+
+       * w32term.c (SM_CXVIRTUALSCREEN, SM_CYVIRTUALSCREEN): Define macros
+       if not defined.
+       (x_display_pixel_height, x_display_pixel_width): Use GetSystemMetrics.
+
+2013-07-04  Michael Albinus  <michael.albinus@gmx.de>
+
+       * fileio.c (Qfile_notify_error): New error symbol.
+
+       * gfilenotify.c (Fgfile_add_watch, Fgfile_rm_watch):
+       * inotify.c (inotify_callback, symbol_to_inotifymask)
+       (Finotify_add_watch, Finotify_rm_watch): Use it.
+       (inotifyevent_to_event): Exchange order of cookie and file name.
+       (Finotify_add_watch): Adapt docstring.
+
+       * lisp.h (Qfile_notify_error): Declare.
+
+2013-07-04  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Try again to fix FreeBSD bug re multithreaded memory alloc (Bug#14569).
+       * emacs.c (main) [HAVE_PTHREAD && !SYSTEM_MALLOC && !DOUG_LEA_MALLOC]:
+       Do not clear _malloc_thread_enabled_p, undoing the previous change,
+       which did not work (see <http://bugs.gnu.org/14569#307>).
+       (main): Do not invoke malloc_enable_thread if (! CANNOT_DUMP
+       && (!noninteractive || initialized)).  This attempts to thread
+       the needle between the Scylla of FreeBSD and the Charybdis of Cygwin.
+
+2013-07-04  Juanma Barranquero  <lekktu@gmail.com>
+
+       * image.c (x_to_xcolors) [HAVE_NTGUI]: Remove unused var `hdc'.
+       (x_build_heuristic_mask) [HAVE_NTGUI]: Remove unused var `frame_dc'.
+
+2013-07-04  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Try to fix FreeBSD bug re multithreaded memory allocation (Bug#14569).
+       * emacs.c (main) [HAVE_PTHREAD && !SYSTEM_MALLOC && !DOUG_LEA_MALLOC]:
+       Clear _malloc_thread_enabled_p at startup.  Reported by Ashish SHUKLA in
+       <http://lists.gnu.org/archive/html/emacs-devel/2013-07/msg00088.html>.
+
+2013-07-02  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * sysdep.c (sys_siglist) [HAVE_DECL___SYS_SIGLIST]:
+       Define to __sys_siglist.
+
+2013-07-02  Eli Zaretskii  <eliz@gnu.org>
+
+       * xdisp.c (IT_OVERFLOW_NEWLINE_INTO_FRINGE): Don't disallow
+       word-wrap, so that overflow-newline-into-fringe would work in
+       visual-line-mode.  (Bug#2749)
+       (move_it_in_display_line_to): When the last scanned display
+       element fits exactly on the display line, and
+       overflow-newline-into-fringe is non-nil, but wrap_it is valid,
+       don't return MOVE_NEWLINE_OR_CR, but instead back up to the last
+       wrap point and return MOVE_LINE_CONTINUED.  Fixes problems with
+       finding buffer position that corresponds to pixel coordinates,
+       e.g. in buffer_posn_from_coords.
+
+2013-07-02  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * process.c (handle_child_signal): Call catch_child_signal if
+       NS_IMPL_GNUSTEP.
+
+2013-07-02  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Don't convert function pointers to void * and back.
+       It isn't portable C, and it's easy enough to avoid.
+       * alloc.c: Verify SAVE_FUNCPOINTER bits, too.
+       (make_save_value): Add support for SAVE_FUNCPOINTER.
+       * keymap.c (map_keymap_char_table_item, map_keymap_internal):
+       * print.c (print_object):
+       Distinguish function from object pointers.
+       * lisp.h (SAVE_FUNCPOINTER): New constant.
+       (SAVE_SLOT_BITS): Adjust to it.
+       (SAVE_TYPE_FUNCPTR_PTR_OBJ): New constant, replacing
+       SAVE_TYPE_PTR_PTR_OBJ.  Change the only use.
+       (voidfuncptr): New typedef.
+       (struct Lisp_Save_Value): New member data[0].funcpointer.
+       (XSAVE_FUNCPOINTER): New function.
+
+       Simplify buildobj processing.
+       * Makefile.in (buildobj.h): Make it a sequence of strings each
+       followed by comma, rather than a single string.  Put it into a
+       .tmp file in case there's an error while generating it.
+       (gl-stamp): Use .tmp for temp files.
+       (mostlyclean): Clean .tmp files.
+       * doc.c (buildobj): Move to just the routine that needs it.
+       It's now an array of strings, so processing is simpler.
+
+2013-07-01  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix bug re noninteractive multithreaded memory allocation (Bug#14569).
+       * emacs.c (malloc_enable_thread): Hoist extern decl to top level.
+       (main) [HAVE_PTHREAD && !SYSTEM_MALLOC && !DOUG_LEA_MALLOC]:
+       Invoke malloc_enable_thread even when not interactive.
+       Problem reported by Ken Brown in <http://bugs.gnu.org/14569#275>.
+       * process.c (init_process_emacs) [CYGWIN]: Tickle glib even
+       in this case, since the underlying bug has now been fixed.
+
+2013-07-01  Juanma Barranquero  <lekktu@gmail.com>
+
+       * emacs.c (Fkill_emacs): Expand Vauto_save_list_file_name before
+       unlinking it (bug#14691).
+
+2013-06-30  Michal Nazarewicz  <mina86@mina86.com>
+
+       * buffer.c (FKill_buffer): Run `kill-buffer-query-functions'
+       before checking whether buffer is modified.  This lets
+       `kill-buffer-query-functions' cancel killing of the buffer or save
+       its content before `kill-buffer' asks user the "Buffer %s
+       modified; kill anyway?" question.
+
+2013-06-30  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * nsfns.m (handlePanelKeys): Don't process Command+Function keys.
+       Let the super performKeyEquivalent deal with them (Bug#14747).
+
+2013-06-30  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * widget.c (resize_cb): Remove unused local.
+
+       Do not use GTK 3 if it exists but cannot be compiled.
+       * xmenu.c (x_menu_wait_for_event) [!USE_GTK]:
+       * xterm.c (x_error_handler) [!USE_GTK]:
+       Do not use GTK 3.
+
+       * intervals.c (get_local_map): Actually clip POSITION (Bug#14753).
+
+2013-06-30  Eli Zaretskii  <eliz@gnu.org>
+
+       * intervals.c (get_local_map): Instead of aborting, clip POSITION
+       to the valid range of values.  (Bug#14753)
+
+       * xdisp.c (Fmove_point_visually): Invalidate the cursor position
+       when moving point by using the current glyph matrix.  This avoids
+       the need to force redisplay when this function is called in a
+       loop.
+
 2013-06-29  Paul Eggert  <eggert@cs.ucla.edu>
 
        Fix minor problems found by static checking.
        coding_attr_undecided_inhibit_iso_escape_detection,
        coding_attr_undecided_prefer_utf_8.
        (undecided_spec): New struct.
-       (struct coding_system): New member `undecied' of the member
+       (struct coding_system): New member `undecided' of the member
        `spec'.
 
        * coding.c (setup_coding_system): Handle CODING->spec.undecided.
        (Fdefine_coding_system_internal): New coding system properties
        :inhibit-null-byte-detection, :inhibit-iso-escape-detection, and
        :prefer-utf-8.
-       (syms_of_coding): Adjusted for coding_arg_undecided_max.
+       (syms_of_coding): Adjust for coding_arg_undecided_max.
 
 2013-06-28  Paul Eggert  <eggert@cs.ucla.edu>
 
        (x_clear_image_1): New arg `flags' instead of 3 bools `pixmap_p',
        `mask_p', and `colors_p'.  All uses changed.
        (x_clear_image_1) [HAVE_X_WINDOWS]: Destroy `ximg' and `mask_img'.
-       (CLEAR_IMAGE_PIXMAP, CLEAR_IMAGE_MASK, CLEAR_IMAGE_COLORS): New
-       macros for `flags' arg to x_clear_image_1.
+       (CLEAR_IMAGE_PIXMAP, CLEAR_IMAGE_MASK, CLEAR_IMAGE_COLORS):
+       New macros for `flags' arg to x_clear_image_1.
        (postprocess_image, xpm_load_image, x_build_heuristic_mask)
        (png_load_body): Use x_clear_image_1 instead of Free_Pixmap.
        (ZPixmap, XGetImage) [HAVE_NS]: Remove.
 
        * floatfns.c (Flog10): Move to Lisp (marked obsolete there).
 
-2013-06-20  Rüdiger Sonderfeld <ruediger@c-plusplus.de>
+2013-06-20  Rüdiger Sonderfeld  <ruediger@c-plusplus.de>
 
        * floatfns.c (Flog) [HAVE_LOG2]: Use log2 if available and if the
        base is 2; this is more accurate.
        * textprop.c (property_set_type): New enum.
        (add_properties): Allow appending/prepending text properties.
        (add_text_properties_1): Factored out of Fadd_text_properties.
-       (Fadd_text_properties): Moved all the code into
+       (Fadd_text_properties): Move all the code into
        add_text_properties_1.
        (Fadd_face_text_property): New function that calls
        add_text_properties_1.
        Now static.
        * lisp.h: Remove the abovementioned defns and decls.
 
-       Use functions, not macros, for XINT etc. (Bug#11935).
+       Use functions, not macros, for XINT etc (Bug#11935).
        In lisp.h, prefer functions to function-like macros, and
        constants to object-like macros, when either will do.  This:
         . simplifies use, as there's no more need to worry about
        (VALMASK): Also a constant, for benefit of old GDB.
        (LISP_INT_TAG_P): Remove; no longer needed as the only caller
        is INTEGERP, which can fold it in.
-       (XLI, XIL, XHASH, XTYPE,XINT, XFASTINT, XUINT)
+       (XLI, XIL, XHASH, XTYPE, XINT, XFASTINT, XUINT)
        (make_number, XPNTR, XUNTAG, EQ, XCONS, XVECTOR, XSTRING, XSYMBOL)
        (XFLOAT, XPROCESS, XWINDOW, XTERMINAL, XSUBR, XBUFFER, XCHAR_TABLE)
        (XSUB_CHAR_TABLE, XBOOL_VECTOR, make_lisp_ptr, CHECK_TYPE)
        (Fxw_color_values): Use EmacsCGFloat
        (Fns_display_monitor_attributes_list): Only get screen number for
        Cocoa.
-       (getDirectory, getFilename): Removed from EmacsOpenPanel and
+       (getDirectory, getFilename): Remove from EmacsOpenPanel and
        EmacsSavePanel.
        (EmacsOpenPanel:ok:): Use ns_filename_from_panel and
        ns_directory_from_panel.