Merge from emacs-24; up to 2012-12-07T08:13:49Z!dmantipov@yandex.ru
[bpt/emacs.git] / src / ChangeLog
index 919e9e7..c0c85c1 100644 (file)
        * xterm.c (x_draw_glyph_string): Don't use previous underline
        thickness and position if previous underline type is underwave.
 
-2012-12-31  Glenn Morris  <rgm@gnu.org>
+2013-01-04  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * fileio.c (Ffile_acl): Undocument return format.
+
+2013-01-02  Glenn Morris  <rgm@gnu.org>
 
        * keymap.c (Fkey_description): Doc fix.  (Bug#13323)
 
-2012-12-29  Andreas Schwab  <schwab@linux-m68k.org>
+2013-01-02  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Simplify via eabs.
+       * dired.c (file_name_completion):
+       * doc.c (get_doc_string):
+       * floatfns.c (round2):
+       * font.c (font_score, font_delete_unmatched):
+       * fringe.c (compute_fringe_widths):
+       * lread.c (read_list):
+       * minibuf.c (Ftry_completion):
+       * term.c (tty_ins_del_lines):
+       * xterm.c (x_draw_image_foreground, x_draw_image_foreground_1):
+       Use eabs (x) rather than open-coding it as (x < 0 ? -x : x).
+
+2012-12-31  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32.c (unsetenv): Set up the string passed to _putenv
+       correctly.  See
+       http://lists.gnu.org/archive/html/emacs-devel/2012-12/msg00863.html
+       for the bug this caused.
+
+2012-12-30  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * coding.c (Qmac): Now static.
+
+2012-12-30  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (TOOLBAR_TOP_WIDGET): New macro.
+       (xg_pack_tool_bar): Use TOOLBAR_TOP_WIDGET, condition out use of
+       handlebox_widget.  Set toolbar_in_hbox to false/true, set
+       toolbar_is_packed to true.
+       (xg_update_tool_bar_sizes): Use widget returned by TOOLBAR_TOP_WIDGET.
+       (update_frame_tool_bar): Check toolbar_is_packed for packing.
+       Show all on TOOLBAR_TOP_WIDGET.
+       (free_frame_tool_bar): Check toolbar_is_packed.  Use widget returned
+       by TOOLBAR_TOP_WIDGET.
+       (xg_change_toolbar_position): Use widget returned by TOOLBAR_TOP_WIDGET.
+       Check toolbar_is_packed.
+       (xg_have_tear_offs, tearoff_remove, tearoff_activate): Condition on
+       HAVE_GTK_TEAROFF_MENU_ITEM_NEW.
+       (xg_have_tear_offs): When ! HAVE_GTK_TEAROFF_MENU_ITEM_NEW, return
+       false.
+       (create_menus): Create tearoff only if HAVE_GTK_TEAROFF_MENU_ITEM_NEW.
+       (xg_update_menubar): Update title only if
+       HAVE_GTK_TEAROFF_MENU_ITEM_NEW.
+       (xg_update_submenu): Skip tearoff only if
+       HAVE_GTK_TEAROFF_MENU_ITEM_NEW.
+       (xg_initialize): Initialize xg_detached_menus only if
+       HAVE_GTK_TEAROFF_MENU_ITEM_NEW.
+
+       * xterm.h (struct x_output): Surround handlebox_widget with
+       #ifdef HAVE_GTK_HANDLE_BOX_NEW.  toolbar_is_packed is new,
+       toolbar_in_hbox is bool.
+
+2012-12-30  Andreas Schwab  <schwab@linux-m68k.org>
 
        * src/Makefile.in (TEMACS_LDFLAGS2): Remove.
        (LIBS_GNUSTEP): Define.
        (LIBES): Add $(LIBS_GNUSTEP).
        (temacs$(EXEEXT)): Use $(LDFLAGS) instead of $(TEMACS_LDFLAGS2).
 
-2012-12-27  Eli Zaretskii  <eliz@gnu.org>
+2012-12-30  Eli Zaretskii  <eliz@gnu.org>
 
        * xdisp.c (set_cursor_from_row): Don't confuse a truncation or
        continuation glyph on a TTY with an indication of an empty line.
        (Bug#13277)
 
+2012-12-29  Eli Zaretskii  <eliz@gnu.org>
+
+       * fileio.c (Fset_file_selinux_context, Fset_file_acl): Return t if
+       file's SELinux context or ACLs successfully set, nil otherwise.
+       (Bug#13298)
+       (Fcopy_file) [WINDOWSNT]: Improve diagnostics when CopyFile fails.
+
+       * w32proc.c (reader_thread): Avoid passing NULL handles to
+       SetEvent and WaitForSingleObject.
+
+2012-12-28  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Port EXTERNALLY_VISIBLE to Clang 3.2.
+       * conf_post.h (__has_attribute): New macro.
+       (EXTERNALLY_VISIBLE): Use it.  This ports to Clang 3.2.
+
 2012-12-27  Glenn Morris  <rgm@gnu.org>
 
        * cygw32.c (Fcygwin_convert_file_name_to_windows)
        (Fcygwin_convert_file_name_from_windows): Doc fixes.
 
-2012-12-24  Eli Zaretskii  <eliz@gnu.org>
+2012-12-27  Eli Zaretskii  <eliz@gnu.org>
 
        * fileio.c (file_name_as_directory, directory_file_name): Accept
        an additional argument MULTIBYTE to indicate whether the input C
        input strings are multibyte, decode strings obtained from C
        library functions.
 
+2012-12-26  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * lisp.h (toplevel): Add two notices to the comment about
+       defining a new Lisp data type.
+       * print.c (print_object): If Lisp_Save_Value object's pointer
+       is the address of a memory area containing Lisp_Objects, try
+       to print them.
+       * alloc.c (valid_lisp_object_p): Adjust comment.
+
+2012-12-26  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * keyboard.c (record_asynch_buffer_change): Initialize an event
+       only if it's really needed.
+       * frame.h (enum output_method): Remove output_mac member since
+       it's a leftover from the deleted code.
+       * frame.c (Fframep): Adjust user here ...
+       * terminal.c (Fterminal_live_p): ... and here.
+       * coding.c (Qmac): Now here because it's only used to denote
+       end-of-line encoding type.
+       (syms_of_coding): DEFSYM it.
+       * frame.h (Qmac): Remove duplicated declaration.
+
+2012-12-26  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * window.c (select_window_1): Now static, since it's used only here.
+
+2012-12-25  Eli Zaretskii  <eliz@gnu.org>
+
+       * window.c (window_body_cols): Subtract display margins from the
+       window body width on TTYs as well.  See
+       http://lists.gnu.org/archive/html/help-gnu-emacs/2012-12/msg00317.html
+       for the original report.
+
+2012-12-25  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * xdisp.c (redisplay_window): Remove inner local variable
+       because the outer shadowed one has the same meaning.
+       * xterm.h (struct x_output): Remove toolbar_detached member since it's
+       set but never used.
+       * gtkutil.c (xg_tool_bar_detach_callback, xg_tool_bar_attach_callback)
+       (xg_create_tool_bar): Adjust users.
+
+2012-12-24  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * buffer.h (BUF_COMPACT): New macro to follow the common style.
+       * buffer.c (Fget_buffer_create): Use it to set compact field of
+       struct buffer_text to avoid accessing an uninitialized value
+       when compact_buffer is called for the first time.
+       (compact_buffer): Use convenient BUF_COMPACT and BUF_MODIFF.
+       (Fset_buffer_modified_p): Use buffer_window_count to check
+       whether the buffer is displayed in some window.
+       * xdisp.c (message_dolog): Likewise.
+
+2012-12-23  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32.c (acl_set_file): If setting the file security descriptor
+       fails, and the new DACL is identical to the existing one, silently
+       return success.  This fixes problems for users backing up their
+       own files without having the necessary privileges for setting
+       security descriptors.
+
+       * w32proc.c (reader_thread): Do not index fd_info[] with negative
+       values.
+       (reader_thread): Exit when cp->status becomes STATUS_READ_ERROR
+       after WaitForSingleObject returns normally.  This expedites reader
+       thread shutdown when delete_child triggers it.
+       (reap_subprocess): More accurate commentary for why we call
+       delete_child only when cp->fd is negative.
+
+       * w32.c (sys_close): Do not call delete_child on a subprocess
+       whose handle is not yet closed.  Instead, set its file descriptor
+       to a negative value, so that reap_subprocess will call
+       delete_child on that subprocess when its SIGCHLD arrives.  This
+       avoids closing handles used for communications between sys_select
+       and reader_thread, which doesn't give sys_select a chance to
+       notice that the process exited and invoke the SIGCHLD handler for
+       it.
+
+2012-12-23  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * nsfns.m (Fns_do_applescript): Run event loop until script has
+       been executed (Bug#12969).
+       (ns_run_ascript): Chech as_script for nil, set to nil after
+       executing script.
+
 2012-12-22  Martin Rudalics  <rudalics@gmx.at>
 
        * window.c (Fselect_window): Reword doc-string (Bug#13248).
 
+2012-12-22  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32term.c (w32fullscreen_hook): New function.
+       (w32_create_terminal): Plug it into the terminal's fullscreen_hook.
+
 2012-12-21  Eli Zaretskii  <eliz@gnu.org>
 
        * fileio.c (Finsert_file_contents): Doc fix.
 
        * buffer.c (Fset_buffer_major_mode): Doc fix (Bug#13231).
 
-2012-12-15  Chong Yidong  <cyd@gnu.org>
-
        * fns.c (Fcompare_strings): Doc fix (Bug#13081).
 
-2012-12-14  Eli Zaretskii  <eliz@gnu.org>
+2012-12-21  Eli Zaretskii  <eliz@gnu.org>
 
        * w32.c (get_name_and_id): Always pass NULL as the first argument
        of lookup_account_sid.  Avoids crashes with UNC file names that
        (get_file_owner_and_group): Remove now unused argument FNAME; all
        callers changed.
 
-2012-12-11  Eli Zaretskii  <eliz@gnu.org>
+2012-12-21  Chong Yidong  <cyd@gnu.org>
+
+       * editfns.c (Finsert_char): Since read-char-by-name now signals an
+       error for invalid chars, don't check for a nil return value.
+
+2012-12-20  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Avoid calls to CHAR_TO_BYTE if byte position is known.
+       * editfns.c (make_buffer_string_both): Use move_gap_both.
+       (Fbuffer_string): Use make_buffer_string_both.
+       * marker.c (buf_charpos_to_bytepos): Convert to eassert.
+       Adjust comment.
+       (buf_bytepos_to_charpos): Likewise.
+       (charpos_to_bytepos): Remove.
+       * fileio.c (Finsert_file_contents): Use move_gap_both.
+       * search.c (Freplace_match): Likewise.
+       * process.c (process_send_region): Likewise.  Use convenient
+       names for byte positions.
+       * lisp.h (charpos_to_bytepos): Remove prototype.
+       * indent.c (scan_for_column): Use CHAR_TO_BYTE.
+       * insdel.c (move_gap): Likewise.
+
+2012-12-20  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * xdisp.c (redisplay_internal): Remove now-unused local.
+
+2012-12-20  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * xdisp.c (select_frame_for_redisplay, ensure_selected_frame): Remove.
+       (redisplay_internal): Don't bother selecting the frame to get the
+       proper value of frame-local variables (bug#13225).
+
+2012-12-20  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * textprop.c (set_text_properties_1): Do not allow NULL interval.
+       Rename 4th argument since it may be buffer or string.  Adjust comment.
+       * intervals.c (graft_intervals_info_buffer): Find an interval here.
+
+2012-12-19  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * coding.c (Fdetect_coding_region): Do not check start and end with
+       CHECK_NUMBER_COERCE_MARKER since validate_region does that itself.
+       (code_convert_region): Likewise.
+
+2012-12-18  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32.c (acl_get_file, acl_set_file): Run the file name through
+       map_w32_filename, and resolve any symlinks in the file name, like
+       Posix platforms do.
+       (acl_set_file): Call revert_to_self, if any privileges were
+       enabled.
+
+2012-12-17  Juanma Barranquero  <lekktu@gmail.com>
+
+       * makefile.w32-in ($(BLD)/editfns.$(O), $(BLD)/fileio.$(O))
+       ($(BLD)/w32.$(O)): Update dependencies.
+
+2012-12-17  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * xdisp.c (select_frame_for_redisplay): Use select_window_1 to
+       propagate redisplay's scrolling (if any) to the right window.
+       (redisplay_internal): Use ensure_selected_frame.
+       (display_mode_lines): Complete last fix.
+       * window.c (select_window_1): New func, extracted from select_window.
+       (select_window): Use it.
+       * window.h (select_window_1): Declare.
+
+2012-12-17  Eli Zaretskii  <eliz@gnu.org>
+
+       Emulate Posix ACL APIs on MS-Windows.
+       * w32.c: Include sddl.h and sys/acl.h.
+       (SDDL_REVISION_1): Define if not already defined.
+       (g_b_init_get_security_descriptor_dacl)
+       (g_b_init_convert_sd_to_sddl, g_b_init_convert_sddl_to_sd)
+       (g_b_init_is_valid_security_descriptor)
+       (g_b_init_set_file_security): New static flags.
+       (globals_of_w32): Initialize them to zero.
+       (SetFileSecurity_Name): New string constant.
+       (SetFileSecurity_Proc, GetSecurityDescriptorDacl_Proc)
+       (ConvertStringSecurityDescriptorToSecurityDescriptor_Proc)
+       (ConvertSecurityDescriptorToStringSecurityDescriptor_Proc)
+       (IsValidSecurityDescriptor_Proc): New typedefs.
+       (get_file_security, get_security_descriptor_owner)
+       (get_security_descriptor_group): Set errno to ENOTSUP.
+       (set_file_security, get_security_descriptor_dacl)
+       (is_valid_security_descriptor, convert_sd_to_sddl)
+       (convert_sddl_to_sd, acl_valid, acl_to_text, acl_from_text)
+       (acl_free, acl_get_file, acl_set_file): New functions.
+
+       * fileio.c (Fcopy_file) [WINDOWSNT]: Support copying ACLs.
+
+2012-12-17  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Don't reraise SIGCHLD, as that can now lose (Bug#13192).
+       With the 2012-12-03 fix for Bug#12980 in place, an old workaround
+       for some of that bug's symptoms can now cause Emacs to abort.
+       Remove the workaround.
+       * process.c (wait_reading_process_output): Don't reraise SIGCHLD.
+       The bug that caused SIGCHLD to get lost has been fixed, and the
+       workaround for it can now cause Emacs to abort.
+
+2012-12-16  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * sysdep.c (emacs_abort): Bump backtrace size to 40.
+       Companion to the 2012-09-30 patch.  Suggested by Eli Zaretskii in
+       <http://lists.gnu.org/archive/html/emacs-devel/2012-09/msg00796.html>.
+
+2012-12-16  Romain Francoise  <romain@orebokech.com>
+
+       * fileio.c (Ffile_acl, Fset_file_acl): New functions.
+       (Fcopy_file): Change last arg to `preserve_extended_attributes'
+       and copy ACL entries of file in addition to SELinux context if set.
+       (syms_of_fileio): Add `file-acl' and `set-file-acl'.
+
+       * Makefile.in (LIBACL_LIBS): New macro.
+       (LIBES): Use it.
+
+2012-12-15  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * fileio.c (internal_delete_file): Use bool for boolean.
+
+2012-12-15  Eli Zaretskii  <eliz@gnu.org>
+
+       Fix bug #13079 on MS-Windows with temp files not being deleted.
+       * w32.h (_child_process): New members input_file and
+       pending_deletion.
+       (register_child): First argument is now pid_t.
+       (record_infile, record_pending_deletion): New prototypes.
+
+       * w32proc.c (new_child): Initialize input_file and
+       pending_deletion members of the child.
+       (delete_child): Delete the child's temporary input file, if any,
+       that is pending deletion.
+       (register_child): First argument is now pid_t.
+       (record_infile, record_pending_deletion): New functions.
+       (reap_subprocess): Fix a typo in DebPrint string.
+       (sys_spawnve, sys_kill): Use pid_t for PID arguments.
+
+       * fileio.c (internal_delete_file): Return an int again: non-zero
+       if delete-file succeeds, zero otherwise.
+
+       * lisp.h (internal_delete_file): Adjust prototype.
+
+       * callproc.c (Fcall_process): Don't overwrite infile with result
+       of DECODE_FILE.
+       [WINDOWSNT] If BUFFER is an integer, i.e. we are launching an
+       asynchronous subprocess, record the name of the input file name,
+       if any.
+       (delete_temp_file) [WINDOWSNT]: If internal_delete_file fails to
+       delete the file, record it as pending deletion when the subprocess
+       exits.
+
+2012-12-14  Eli Zaretskii  <eliz@gnu.org>
+
+       * editfns.c [HAVE_PWD_H]: Include grp.h.
+
+       * makefile.w32-in ($(BLD)/editfns.$(O)): Add $(NT_INC)/grp.h.
+
+2012-12-14  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix permissions bugs with setgid directories etc. (Bug#13125)
+       * dired.c (Ffile_attributes): Return t as the 9th attribute,
+       to mark it as a placeholder.  The old value was often wrong.
+       The only user of this attribute has been changed to use
+       file-ownership-preserved-p instead, with its new group arg.
+       * editfns.c (Fgroup_gid, Fgroup_real_gid): New functions.
+
+2012-12-14  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * xdisp.c (select_frame_for_redisplay, display_mode_lines):
+       Keep selected_window and selected_frame in sync.
+
+2012-12-14  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32.c (stat_worker): If w32_stat_get_owner_group is zero, do not
+       try to get accurate owner and group information from NT file
+       security APIs.  This is to make most callers of 'stat' and
+       'lstat', which don't need that information, much faster.
+
+       * dired.c (Ffile_attributes) [WINDOWSNT]:
+       Set w32_stat_get_owner_group to a non-zero value, to request accurate
+       owner and group information from 'lstat'.
+
+2012-12-13  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * fileio.c (Finsert_file_contents): Don't put tail into head area,
+       as that confuses set-auto-coding, so insist on the head-read
+       returning the full 1024 bytes.  Let lseek compute the tail offset;
+       less work for us.  Do not ignore I/O errors when reading the tail.
+
+       * xdisp.c: Minor style fixes.
+       (init_iterator): Hoist assignment out of if-expression.
+       (markpos_of_region): Callers now test for sign, not for -1.
+
+2012-12-13  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Minor redisplay optimization when the region length is zero.
+       * xdisp.c (markpos_of_region): New function.
+       (init_iterator): Do not highlight the region of zero length.
+       (redisplay_window): Check whether the region is of non-zero length.
+       (try_cursor_movement): Allow if the region length is zero.
+       (try_window_reusing_current_matrix, try_window_id): Likewise.
+
+2012-12-13  Eli Zaretskii  <eliz@gnu.org>
 
        * search.c (search_buffer): Check the inverse translations of each
        character in pattern when the buffer being searched is unibyte.
        (Bug#13084)
 
-2012-12-10  Paul Eggert  <eggert@cs.ucla.edu>
+2012-12-13  Paul Eggert  <eggert@cs.ucla.edu>
 
        * fileio.c (Fvisited_file_modtime): Return (-1 ...) for nonexistent
        files, fixing a regression from 24.2.
        (Fverify_visited_file_modtime): Don't read uninitialized st.st_size.
 
-2012-12-08  Jan Djärv  <jan.h.d@swipnet.se>
+2012-12-13  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * fileio.c (Fcopy_file): Make fstat failure as serious as open failure.
+       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.
+
+2012-12-12  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * dispnew.c (set_window_cursor_after_update): Use clip_to_bounds.
+       * 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.
+
+2012-12-12  Daniel Colascione  <dancol@dancol.org>
+
+       * unexcw.c (fixup_executable): Use posix_fallocate to ensure that
+       the dumped Emacs is not a sparse file, greatly improving Cygwin
+       "make bootstrap" performance.
+
+2012-12-11  Michael Albinus  <michael.albinus@gmx.de>
+
+       * inotify.c (inotify_callback): Generate an Emacs event for every
+       incoming inotify event.
+
+2012-12-11  Eli Zaretskii  <eliz@gnu.org>
+
+       * 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.  (Bug#13011)
+
+2012-12-11  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * buffer.c (Fset_buffer_multibyte): Do not force redisplay
+       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.
+
+2012-12-11  Eli Zaretskii  <eliz@gnu.org>
+
+       * inotify.c (Finotify_add_watch): Rename decoded_file_name to
+       encoded_file_name, which is what it is.
+
+2012-12-11  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Consistently use marker_position and marker_byte_position.
+       * 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.
+
+2012-12-11  Juanma Barranquero  <lekktu@gmail.com>
+
+       * makefile.w32-in (SIG2STR_H): New macro.
+       (SYSWAIT_H, $(BLD)/emacs.$(O), $(BLD)/process.$(O))
+       ($(BLD)/w32notify.$(O)): Update dependencies.
+
+2012-12-10  Daniel Colascione  <dancol@dancol.org>
+
+       * w32term.c, keyboard.c: Fix build break in cygw32 by omitting
+       Windows file notification functionality unless WINDOWSNT.
+
+       * w32gui.h (hprevinst, lpCmdLine, nCmdShow): Remove unused
+       declarations.
+
+       * w32fns.c (cache_system_info): Initialize the global hinst
+       variable here so various initialization calls DTRT.
+
+       * unexw32.c (hprevinst, lpCmdLine, nCmdShow): Remove unused variables.
+       (hinst): Remove unneeded extern declaration.
+       (_start): Remove initialization of above variables; remove
+       initialization of hinst, as cache_system_info now does that.
+
+       * emacs.c (main): Call cache_system_info early in startup; we
+       previously weren't calling it in Cygwin builds.
+
+       * Makefile.in (ntsource, WINDRES, W32_RES, W#@_RES_LINK):
+       Teach the autoconf build system how to compile a Windows resource file
+       and link it to Emacs.
+
+2012-12-10  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Per-buffer window counters.
+       * 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.
+
+2012-12-10  Eli Zaretskii  <eliz@gnu.org>
+
+       Support for filesystem notifications on MS-Windows.
+       * w32proc.c (sys_select): If drain_message_queue returns non-zero,
+       and this is a TTY frame, signal the caller that keyboard input is
+       available.
+
+       * w32xfns.c (drain_message_queue): Now returns an int: an
+       indication whether any WM_EMACS_FILENOTIFY messages were found in
+       the queue.
+
+       * w32inevt.c (handle_file_notifications): New function.
+       (w32_console_read_socket): Call it to process file notifications.
+
+       * w32console.c (initialize_w32_display): Record the main thread ID
+       in dwMainThreadId.
+
+       * deps.mk (inotify.o): New dependency list.
+
+       * Makefile.in (SOME_MACHINE_OBJECTS): Add w32notify.o.
+
+       * w32term.h (WM_EMACS_FILENOTIFY): New custom message.
+       (WM_EMACS_END): Bump value by 1.
+       (notification_buffer_in_use, file_notifications)
+       (notifications_size, notifications_desc): Declare.
+       (w32_get_watch_object, lispy_file_action, globals_of_w32notify):
+       Add prototypes.
+
+       * w32term.c (lispy_file_action, queue_notifications): New functions.
+       (syms_of_w32term) <Qadded, Qremoved, Qmodified, Qrenamed_from>
+       <Qrenamed_to>: New symbols.
+       (w32_read_socket): Handle the WM_EMACS_FILENOTIFY message.
+
+       * w32notify.c: New file, implements file event notifications for
+       MS-Windows.
+
+       * w32fns.c (w32_wnd_proc): Handle the WM_EMACS_FILENOTIFY message
+       by posting it to the w32_read_socket queue.
+
+       * termhooks.h (enum event_kind) [HAVE_NTGUI]: Support FILE_NOTIFY_EVENT.
+
+       * makefile.w32-in (OBJ2): Add $(BLD)/w32notify.$(O).
+       (GLOBAL_SOURCES): Add w32notify.c
+       ($(BLD)/w32notify.$(O)): New set of dependencies.
+
+       * lisp.h (syms_of_w32notify) [WINDOWSNT]: Add prototype.
+
+       * keyboard.c (kbd_buffer_get_event) [WINDOWSNT]:
+       Handle FILE_NOTIFY_EVENT.
+       (syms_of_keyboard) [HAVE_NTGUI] <Qfile_notify>: New symbol.
+       (keys_of_keyboard) [WINDOWSNT]: Bind file-notify to
+       w32notify-handle-event by default.
+
+       * emacs.c (main) [WINDOWSNT]: Call globals_of_w32notify and
+       syms_of_w32notify.
+
+2012-12-10  Rüdiger Sonderfeld  <ruediger@c-plusplus.de>
+
+       Support for filesystem notifications on GNU/Linux via inotify.
+       * termhooks.h (enum event_kind) [HAVE_INOTIFY]: Add FILE_NOTIFY_EVENT.
+
+       * lisp.h (syms_of_inotify) [HAVE_INOTIFY]: Add prototype.
+
+       * 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.
+
+       * emacs.c (main) [HAVE_INOTIFY]: Call syms_of_inotify.
+
+       * Makefile.in (base_obj): Add inotify.o.
+
+       * inotify.c: New file.
+
+2012-12-10  Jan Djärv  <jan.h.d@swipnet.se>
 
        * nsterm.m (fd_handler:): FD_ZERO fds (Bug#13103).
 
-2012-12-08  Fabrice Popineau  <fabrice.popineau@gmail.com>
+2012-12-10  Fabrice Popineau  <fabrice.popineau@gmail.com>
 
        * w32fns.c (cache_system_info): Cast sysinfo_cache.dwPageSize to
        DWORD_PTR, for compatibility with 64-bit builds.
        (system_process_attributes): Use SIZE_T rather than DWORD, for
        compatibility with 64-bit builds.
 
-2012-12-08  Christopher Schmidt  <christopher@ch.ristopher.com>
+2012-12-10  Christopher Schmidt  <christopher@ch.ristopher.com>
 
        * lread.c (Vload_source_file_function): Doc fix (Bug#11647).
 
-2012-12-07  Eli Zaretskii  <eliz@gnu.org>
+2012-12-10  Eli Zaretskii  <eliz@gnu.org>
 
        * 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.  (Bug#13108)
 
-2012-12-07  Martin Rudalics  <rudalics@gmx.at>
+2012-12-10  Martin Rudalics  <rudalics@gmx.at>
 
        * editfns.c (Fcompare_buffer_substrings): Reword doc-string.
 
-2012-12-05  Eli Zaretskii  <eliz@gnu.org>
+2012-12-10  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * fileio.c (Fsubstitute_in_file_name): Use ptrdiff_t, not int,
+       for string length.
+
+2012-12-08  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32.c (unsetenv): Return 0 if the input string is too long.
+
+2012-12-08  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Use putenv+unsetenv instead of modifying environ directly (Bug#13070).
+       * alloc.c (xputenv): New function.
+       * dbusbind.c (Fdbus_init_bus):
+       * emacs.c (main):
+       * xterm.c (x_term_init):
+       Use xputenv instead of setenv or putenv, to detect memory exhaustion.
+       * 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.
+       * emacs.c (dump_tz) [HAVE_TZSET]: Now const.
+       * lisp.h (xputenv): New decl.
+
+2012-12-08  Fabrice Popineau  <fabrice.popineau@gmail.com>
+
+       * w32fns.c (emacs_abort): Don't do arithmetics on void pointers.
+
+2012-12-08  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32.c (unsetenv, sys_putenv): New functions.
+
+2012-12-08  Chong Yidong  <cyd@gnu.org>
+
+       * editfns.c (Finsert_char): Make the error message more
+       informative (Bug#12992).
+
+2012-12-08  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Simplify get_lim_data.
+       * 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.
+
+       Assume POSIX 1003.1-1988 or later for signal.h (Bug#13026).
+       Exceptions: do not assume SIGCONT, SIGSTOP, SIGTSTP, SIGTTIN,
+       SIGTTOU, SIGUSR1, SIGUSR2, as Microsoft platforms lack these.
+       * 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.
+       * 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.
+       * syssignal.h (EMACS_KILLPG): Remove.
+       All uses replaced by 'kill' with a negative pid.
+       (SIGCHLD): Remove definition, as we now assume SIGCHLD.
+       * w32proc.c (sys_kill): Support negative pids compatibly with POSIX.
+
+2012-12-07  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * sysdep.c (get_child_status): Abort on internal error (Bug#13086).
+       This will cause a production Emacs to dump core instead of
+       infinite-looping.
+
+2012-12-07  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * frame.c (make_frame): Do not set window's buffer to t.
+       * 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.
+
+2012-12-07  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Convenient macro to check whether the buffer is hidden.
+       * 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.
+
+2012-12-06  Eli Zaretskii  <eliz@gnu.org>
+
+       * 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.  (Bug#13086)
+
+2012-12-06  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * frame.h (x_char_width, x_char_height): Remove prototypes.
+       * 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.
+
+2012-12-06  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix a recently-introduced delete-process race condition.
+       * 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.
+
+2012-12-06  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Avoid code duplication between prev_frame and next_frame.
+       * frame.c (candidate_frame): New function.  Add comment.
+       (prev_frame, next_frame): Use it.  Adjust comment.
+
+2012-12-06  Eli Zaretskii  <eliz@gnu.org>
 
        * callproc.c (Fcall_process_region) [!HAVE_MKSTEMP]: If mktemp
        fails, signal an error instead of continuing with an empty
        Encode expanded temp file pattern before passing it to mkstemp or
        mktemp.
 
-2012-12-04  Eli Zaretskii  <eliz@gnu.org>
-
        * 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).
        (Bug#12933)
 
-2012-12-01  Chong Yidong  <cyd@gnu.org>
+2012-12-05  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Minor call-process cleanups.
+       * 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.
+
+2012-12-04  Andreas Schwab  <schwab@linux-m68k.org>
+
+       * callproc.c (Fcall_process): Fix specpdl nesting for asynchronous
+       processes.
+
+2012-12-04  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * lisp.h (Mouse_HLInfo): Remove set-but-unused mouse_face_image_state
+       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.
+
+2012-12-03  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Don't let call-process be a zombie factory (Bug#12980).
+       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.
+
+       * bytecode.c, lisp.h (Qbytecode): Remove.
+       No longer needed after 2012-11-20 interactive-p changes.
+
+2012-12-03  Eli Zaretskii  <eliz@gnu.org>
+
+       * xdisp.c (redisplay_window): If the cursor is visible, but inside
+       the scroll margin, move point outside the margin.  (Bug#13055)
+
+2012-12-03  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (my_log_handler): New function.
+       (xg_set_geometry): Set log handler to my_log_handler (Bug#11177).
+
+2012-12-03  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * lisp.h (modify_region): Rename to...
+       (modify_region_1): ...new prototype.
+       * textprop.c (modify_region): Now static.  Adjust users.
+       * insdel.c (modify_region): Rename to...
+       (modify_region_1): ...new function to work with current buffer.
+       Adjust comment and users.  Use true and false for booleans.
+
+2012-12-03  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * alloc.c (free_save_value): New function.
+       (safe_alloca_unwind): Use it.
+       * lisp.h (free_save_value): New prototype.
+       * editfns.c (save_excursion_save): Use Lisp_Misc_Save_Value.
+       Add comment.
+       (save_excursion_restore): Adjust to match saved data structure.
+       Use free_save_value to offload some work from GC.  Drop obsolete
+       #if 0 code.
+
+2012-12-03  Chong Yidong  <cyd@gnu.org>
 
        * fileio.c (Vauto_save_list_file_name): Doc fix.
 
-2012-11-30  Fabrice Popineau  <fabrice.popineau@gmail.com>
+2012-12-03  Fabrice Popineau  <fabrice.popineau@gmail.com>
 
        * w32fns.c: Remove prototype of atof.
-       (syspage_mask): Declared DWORD_PTR, for compatibility with 64-bit
+       (syspage_mask): Make it DWORD_PTR, for compatibility with 64-bit
        builds.
-       (file_dialog_callback): Declared UINT_PTR.
+       (file_dialog_callback): Make it UINT_PTR.
 
        * w32common.h (syspage_mask): Declare DWORD_PTR, for compatibility
        with 64-bit builds.
        (FILE_ANY_ACCESS, CTL_CODE) [_MSC_VER]: Define only if not already
        defined.
 
-2012-11-27  Glenn Morris  <rgm@gnu.org>
+2012-12-03  Glenn Morris  <rgm@gnu.org>
 
        * data.c (Fboundp, Fsymbol_value): Doc fix re lexical-binding.
 
-2012-11-26  Eli Zaretskii  <eliz@gnu.org>
+2012-12-02  Paul Eggert  <eggert@cs.ucla.edu>
 
-       * fontset.c (Finternal_char_font): Return nil on non-GUI frames.
-       (Bug#11964)
+       Fix xpalloc confusion after memory is exhausted.
+       * alloc.c (xpalloc): Comment fix.
+       * charset.c (Fdefine_charset_internal): If xpalloc exhausts memory
+       and signals an error, do not clear charset_table_size, as
+       charset_table is still valid.
+       * doprnt.c (evxprintf): Clear *BUF after freeing it.
 
-2012-11-24  Paul Eggert  <eggert@cs.ucla.edu>
+       Use execve to avoid need to munge environ (Bug#13054).
+       * callproc.c (Fcall_process):
+       * process.c (create_process):
+       Don't save and restore environ; no longer needed.
+       * callproc.c (child_setup):
+       Use execve, not execvp, to preserve environ.
 
-       Revert recent change for Bug#8855.
-       As reported by Harald Hanche-Olsen in
-       <http://lists.gnu.org/archive/html/emacs-devel/2012-11/msg00445.html>
-       the change introduces a further bug, of creating lots of zombie
-       processes in some cases.  Further work is needed to come up with a
-       better fix for Bug#8855.
+2012-12-01  Paul Eggert  <eggert@cs.ucla.edu>
 
-2012-11-24  Eli Zaretskii  <eliz@gnu.org>
+       * xterm.c (x_draw_image_relief): Remove unused locals (Bug#10500).
+
+2012-12-01  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * xterm.c (x_draw_relief_rect, x_draw_image_relief): Fix relief
+       display for sliced images (Bug#10500).
+
+       * w32term.c (w32_draw_relief_rect, x_draw_image_relief): Likewise.
+
+2012-11-30  Juanma Barranquero  <lekktu@gmail.com>
+
+       * doc.c (Fdocumentation): Re-add handling of function-documentation,
+       accidentally removed in 2012-11-09T04:10:16Z!monnier@iro.umontreal.ca (bug#13034).
+
+2012-11-29  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * xdisp.c (window_outdated): Remove eassert since it hits
+       some suspicious corner cases (see Bug#13007 and Bug#13012).
+       (mode_line_update_needed): New function.
+       (redisplay_internal, redisplay_window): Use it.
+       (ensure_selected_frame): New function.
+       (redisplay_internal, unwind_redisplay): Use it.
+       (redisplay_internal): Move comment about buffer_shared...
+       (buffer_shared_and_changed): ...near to its real use.
+
+2012-11-29  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * callproc.c (Fcall_process): Don't misreport vfork failure.
+
+2012-11-28  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * callproc.c (Fcall_process): Fix vfork portability problems.
+       Do not assume that fd[0], count, filefd, and save_environ survive
+       vfork.  Fix bug whereby wrong errno value could be reported for
+       pipe failure.  Some minor cleanups, too, as follows.  Move buf and
+       bufsize to the context where they're needed.  Change new_argv to
+       be of type char **, as this is more convenient and avoids casts.
+       (CALLPROC_BUFFER_SIZE_MIN, CALLPROC_BUFFER_SIZE_MAX):
+       Now local constants, not macros.
+
+2012-11-18  Kenichi Handa  <handa@gnu.org>
+
+       * font.c (font_unparse_xlfd): Fix previous change.  Keep "const"
+       for the variable "f".
+
+2012-11-13  Kenichi Handa  <handa@gnu.org>
+
+       * font.c (font_unparse_xlfd): Exclude special characters from the
+       generating XLFD name.
+
+2012-11-27  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Assume POSIX 1003.1-1988 or later for grp.h, pwd.h.
+       * dired.c (stat_uname, stat_gname):
+       * fileio.c (Fexpand_file_name): Remove no-longer-needed casts.
+
+       Assume POSIX 1003.1-1988 or later for errno.h (Bug#12968).
+       * dired.c (directory_files_internal, file_name_completion):
+       Assume EAGAIN and EINTR are defined.
+
+       * fileio.c (Fcopy_file): Assume EISDIR is defined.
+       * gmalloc.c (ENOMEM, EINVAL): Assume they're defined.
+       * gnutls.c (emacs_gnutls_write): Assume EAGAIN is defined.
+       * lread.c (readbyte_from_file): Assume EINTR is defined.
+       * process.c (wait_reading_process_output, send_process) [subprocesses]:
+       Assume EIO and EAGAIN are defined.
+       * unexcoff.c (write_segment): Assume EFAULT is defined.
+
+2012-11-27  Eli Zaretskii  <eliz@gnu.org>
+
+       * fontset.c (Finternal_char_font): Return nil on non-GUI frames.
+       (Bug#11964)
 
        * xdisp.c (draw_glyphs): Don't draw in mouse face if mouse
        highlighting on the frame was cleared.  Prevents assertion
        violations when repeatedly clicking on the "Top" link of the
        "bread-crumbs" in Info buffers.
 
-2012-11-23  Paul Eggert  <eggert@cs.ucla.edu>
-           Eli Zaretskii  <eliz@gnu.org>
-
-       Fix a race condition with glib (Bug#8855).
-       The symptom is a diagnostic "GLib-WARNING **: In call to
-       g_spawn_sync(), exit status of a child process was requested but
-       SIGCHLD action was set to SIG_IGN and ECHILD was received by
-       waitpid(), so exit status can't be returned."  The diagnostic
-       is partly wrong, as the SIGCHLD action is not set to SIG_IGN.
-       The real bug is a race condition between Emacs and glib: Emacs
-       does a waitpid (-1, ...) and reaps glib's subprocess by mistake,
-       so that glib can't find it.  Work around the bug by invoking
-       waitpid only on subprocesses that Emacs itself creates.
+2012-11-25  Paul Eggert  <eggert@cs.ucla.edu>
 
-       This is a backport from the trunk, consisting of:
+       * sysdep.c (sys_subshell): Don't assume pid_t fits in int.
 
-       * w32proc.c (create_child): Don't clip the PID of the child
-       process to fit into an Emacs integer, as this is no longer a
-       restriction.
-       (waitpid): Rename from sys_wait.  Emulate a Posix 'waitpid' by
-       reaping only the process specified by PID argument, if that is
-       positive.  Use PID instead of dead_child to know which process to
-       reap.  Wait for the child to die only if WNOHANG is not in
-       OPTIONS.
-       (sys_select): Don't set dead_child.
+2012-11-24  Ken Brown  <kbrown@cornell.edu>
 
-       * sysdep.c (wait_for_termination_1): Remove the WINDOWSNT portion,
-       as it is no longer needed.
+       * keyboard.c (HAVE_MOUSE):
+       * frame.c (HAVE_MOUSE): Remove, and rewrite code as if HAVE_MOUSE
+       were always defined.
 
-       * process.c (waitpid, WUNTRACED) [!WNOHANG]: Remove definitions,
-       no longer needed.
-       (create_process, record_child_status_change): Don't use special
-       value -1 in pid field, as the caller now must know the pid rather
-       than having the callee infer it.  The inference was sometimes
-       incorrect anyway, due to another race.
-       (create_process): Set new 'alive' member if child is created.
-       (process_status_retrieved): New function.
-       (record_child_status_change): Use it.
-       Accept negative 1st argument, which means to wait for the
-       processes that Emacs already knows about.  Move special-case code
-       for DOS_NT (which lacks WNOHANG) here, from caller.  Keep track of
-       processes that have already been waited for, by testing and
-       clearing new 'alive' member. Remove the setting of
-       record_at_most_one_child for the !WNOHANG case.
-       (CAN_HANDLE_MULTIPLE_CHILDREN): Remove, as record_child_status_change
-       now does this internally.
-       (handle_child_signal): Let record_child_status_change do all
-       the work, since we do not want to reap all exited child processes,
-       only the child processes that Emacs itself created.
-       * process.h (Lisp_Process): New boolean member 'alive'.
-
-2012-11-23  Eli Zaretskii  <eliz@gnu.org>
+2012-11-24  Eli Zaretskii  <eliz@gnu.org>
 
        * xdisp.c (set_cursor_from_row): Skip step 2 only if point is not
        between bpos_covered and bpos_max.  This fixes cursor display when
        pointer to string data, rather than the value of the string object
        itself (which barfs under CHECK_LISP_OBJECT_TYPE).
 
-2012-11-21  Eli Zaretskii  <eliz@gnu.org>
-
        * indent.c (Fvertical_motion): If the starting position is covered
        by a display string, return to one position before that, to avoid
        overshooting it inside move_it_to.  (Bug#12930)
 
-2012-11-20  Daniel Colascione  <dancol@dancol.org>
+2012-11-23  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * frame.h (struct frame): Remove display_preempted member
+       since all users are dead long ago.
+       * nsterm.h (struct x_output): Use the only dummy member.
+       * w32menu.c (pending_menu_activation): Remove since not
+       really used.
+       (set_frame_menubar): Adjust user.
+       * w32term.h (struct x_output): Drop outdated #if 0 code.
+       (struct w32_output): Use bitfields for explicit_parent,
+       asked_for_visible and menubar_active members.
+       Drop unused pending_menu_activation member.
+       * xterm.h (struct x_output): Drop outdated #if 0 code.
+       Use bitfields for explicit_parent, asked_for_visible,
+       has_been_visible and net_wm_state_hidden_seen members.
 
-       * w32fns.c (Fx_file_dialog):
-       (Fx_file_dialog): Accomodate rename of cygwin_convert_path* to
-       cygwin_convert_file_name*.
+2012-11-23  Eli Zaretskii  <eliz@gnu.org>
 
-       * cygw32.c (Fcygwin_convert_path_to_windows, syms_of_cygw32):
-       Rename cygwin_convert_path* to cygwin_convert_file_name*.
+       * makefile.w32-in (globals.h, gl-stamp): Use $(SWITCHCHAR) instead
+       of a literal "/".  (Bug#12955)
+       (gl-stamp): Invoke fc.exe directly, not through cmd.
+
+2012-11-23  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Assume POSIX 1003.1-1988 or later for dirent.h (Bug#12958).
+       * dired.c: Assume HAVE_DIRENT_H.
+       (NAMLEN): Remove, replacing with ...
+       (dirent_namelen): New function.  All uses changed.  Use the GNU macro
+       _D_EXACT_NAMELEN if available, as it's faster than strlen.
+       (DIRENTRY): Remove, replacing all uses with 'struct dirent'.
+       (DIRENTRY_NONEMPTY): Remove.  All callers now assume it's nonzero.
+       * makefile.w32-in (DIR_H): Remove.  All uses replaced with
+       $(NT_INC)/dirent.h.
+       ($(BLD)/w32.$(O)): Do not depend on $(SRC)/ndir.h.
+       * ndir.h: Rename to ../nt/inc/dirent.h.
+       * sysdep.h (closedir) [!HAVE_CLOSEDIR]: Remove.
+       Do not include <dirent.h>; no longer needed.
+       * w32.c: Include <dirent.h> rather than "ndir.h".
+
+2012-11-23  Chong Yidong  <cyd@gnu.org>
+
+       * xftfont.c (xftfont_open): Remove duplicate assignment.
+
+2012-11-22  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * alloc.c (Fgarbage_collect): Unblock input after clearing
+       gc_in_progress to avoid note_mouse_highlight glitch with GC.
+       * frame.h (FRAME_MOUSE_UPDATE): New macro.
+       * msdos.c (IT_frame_up_to_date): Use it here...
+       * w32term.c (w32_frame_up_to_date): ...here...
+       * xterm.c (XTframe_up_to_date): ...and here...
+       * nsterm.m (ns_frame_up_to_date): ...but not here.
+       * lisp.h (Mouse_HLInfo): Remove mouse_face_deferred_gc member.
+       Adjust users.
+       * xdisp.c (message2_nolog, message3_nolog, note_mouse_highlight):
+       Do not check whether GC is in progress.
+
+2012-11-22  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * xdisp.c (window_buffer_changed): New function.
+       (update_menu_bar, update_tool_bar): Use it to
+       simplify large 'if' statements.
+       (redisplay_internal): Generalize commonly used
+       'tail' and 'frame' local variables.
+
+2012-11-22  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32.c (getcwd): Fix the 2nd argument type, to prevent conflicts
+       with Windows system header.
 
-2012-11-20  Ken Brown  <kbrown@cornell.edu>
+2012-11-21  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Assume POSIX 1003.1-1988 or later for unistd.h (Bug#12945).
+       * alloc.c: Assume unistd.h exists.
+       * fileio.c (Fexpand_file_name) [DOS_NT]: Use getcwd, not getwd.
+       * sysdep.c (get_current_dir_name): Assume getcwd exists.
+       (getwd) [USG]: Remove; no longer needed.
+       (sys_subshell) [DOS_NT]: Use getcwd, not getwd.
+       * w32.c (getcwd): Rename from getwd, and switch to getcwd's API.
+       * w32.h (getcwd): Remove decl.
+
+2012-11-21  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * xdisp.c (fast_set_selected_frame): Rename from update_tool_bar_unwind.
+       Make it set selected_window as well.
+       (update_tool_bar): Use it.
+
+2012-11-21  Ken Brown  <kbrown@cornell.edu>
 
        * emacs.c (main): Set the G_SLICE environment variable for all
        Cygwin builds, not just GTK builds.  See
        https://lists.gnu.org/archive/html/emacs-devel/2012-11/msg00368.html.
 
-2012-11-19  Eli Zaretskii  <eliz@gnu.org>
-
-       * xdisp.c (start_hourglass) [HAVE_NTGUI]: Don't mix declaration of
-       w32_note_current_window with code.  (Backport from trunk.)
+2012-11-21  Eli Zaretskii  <eliz@gnu.org>
 
        * w32.c (FILE_DEVICE_FILE_SYSTEM, METHOD_BUFFERED)
        (FILE_ANY_ACCESS, CTL_CODE, FSCTL_GET_REPARSE_POINT) [_MSC_VER]:
        Define for the MSVC compiler.
 
-       * w32term.h (EnumSystemLocalesW) [_MSC_VER]: Add a missing
-       semi-colon.
-
-2012-11-18  Eli Zaretskii  <eliz@gnu.org>
+       * w32term.h (EnumSystemLocalesW) [_MSC_VER]: Add a missing semi-colon.
 
        * fileio.c (Fsubstitute_in_file_name, Ffile_name_directory)
        (Fexpand_file_name) [DOS_NT]: Pass encoded file name to
        dostounix_filename.  Prevents crashes down the road, because
-       dostounix_filename assumes it gets a unibyte string.  Reported by
-       Michel de Ruiter <michel@sentient.nl>, see
+       dostounix_filename assumes it gets a unibyte string.
+       Reported by Michel de Ruiter <michel@sentient.nl>, see
        http://lists.gnu.org/archive/html/help-emacs-windows/2012-11/msg00017.html
 
-2012-11-17  Eli Zaretskii  <eliz@gnu.org>
+2012-11-20  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       Conflate Qnil and Qunbound for `symbol-function'.
+       * alloc.c (Fmake_symbol): Initialize `function' to Qnil.
+       * lread.c (init_obarray): Set `function' fields to Qnil.
+       * eval.c (Fcommandp): Ignore Qunbound.
+       (Fautoload, eval_sub, Fapply, Ffuncall, Fmacroexpand):
+       * data.c (Ffset, Ffboundp, indirect_function, Findirect_function):
+       Test NILP rather than Qunbound.
+       (Ffmakunbound): Set to Qnil.
+       (Fsymbol_function): Never signal an error.
+       (Finteractive_form): Ignore Qunbound.
+
+2012-11-20  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * eval.c (interactive_p): Remove no-longer-used decl.
+
+2012-11-20  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * xdisp.c (buffer_shared): Adjust comment.
+       (buffer_shared_and_changed): New function.
+       (prepare_menu_bars, redisplay_internal): Use it to
+       decide whether all windows or frames should be updated.
+       (window_outdated): New function.
+       (text_outside_line_unchanged_p, redisplay_window): Use it.
+       (redisplay_internal): Likewise.  Fix indentation.
+
+2012-11-20  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * eval.c (Finteractive_p, Fcalled_interactively_p, interactive_p): Remove.
+       (syms_of_eval): Remove corresponding defsubr.
+       * bytecode.c (exec_byte_code): `interactive-p' is now a Lisp function.
+
+2012-11-19  Daniel Colascione  <dancol@dancol.org>
+
+       * w32fns.c (Fx_file_dialog):
+       (Fx_file_dialog): Accomodate rename of cygwin_convert_path* to
+       cygwin_convert_file_name*.
+
+       * cygw32.c (Fcygwin_convert_path_to_windows, syms_of_cygw32):
+       Rename cygwin_convert_path* to cygwin_convert_file_name*.
+
+2012-11-18  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * nsterm.m (ns_select): Send SIGIO only to self, not to process group.
+
+2012-11-18  Eli Zaretskii  <eliz@gnu.org>
 
        * w32select.c: Include w32common.h before w32term.h, so that
        windows.h gets included before w32term.h uses some of its
        features, see below.
 
-       * w32term.h (LOCALE_ENUMPROCA, LOCALE_ENUMPROCW) [_MSC_VER]: New
-       typedefs.
-       (EnumSystemLocalesA, EnumSystemLocalesW) [_MSC_VER]: New
-       prototypes.
+       * w32term.h (LOCALE_ENUMPROCA, LOCALE_ENUMPROCW) [_MSC_VER]:
+       New typedefs.
+       (EnumSystemLocalesA, EnumSystemLocalesW) [_MSC_VER]:
+       New prototypes.
        (EnumSystemLocales) [_MSC_VER]: Define if undefined.  (Bug#12878)
 
-2012-11-17  Jan Djärv  <jan.h.d@swipnet.se>
+2012-11-18  Jan Djärv  <jan.h.d@swipnet.se>
 
        * nsterm.m (hold_event): Set send_appdefined to YES (Bug#12834).
        (ns_select): Return at once if events are held (Bug#12834).
 
-2012-11-16  enami tsugutomo  <tsugutomo.enami@jp.sony.com>
+2012-11-18  enami tsugutomo  <tsugutomo.enami@jp.sony.com>
 
        * unexelf.c (ELFSIZE) [__NetBSD__ && _LP64]: Set to 64.
        Needed following 2012-10-20 change.  (Bug#12902)
 
+2012-11-18  Juanma Barranquero  <lekktu@gmail.com>
+
+       * w32proc.c (waitpid): Remove unused label get_result.
+
+2012-11-17  Juanma Barranquero  <lekktu@gmail.com>
+
+       * makefile.w32-in (SYSWAIT_H): New macro.
+       ($(BLD)/callproc.$(O), $(BLD)/w32proc.$(O), $(BLD)/process.$(O))
+       ($(BLD)/sysdep.$(O)): Update dependencies.
+
+2012-11-17  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Assume POSIX 1003.1-1988 or later for fcntl.h (Bug#12881).
+       * callproc.c (relocate_fd): Assume F_DUPFD.
+       * emacs.c, term.c (O_RDWR): Remove.
+       * keyboard.c (tty_read_avail_input): Use O_NONBLOCK rather than
+       O_NDELAY, since O_NONBLOCK is the standard name for this flag.
+       * nsterm.m: Assume <fcntl.h> exists.
+       * process.c (NON_BLOCKING_CONNECT, allocate_pty, create_process)
+       (create_pty, Fmake_network_process, server_accept_connection)
+       (wait_reading_process_output, init_process_emacs):
+       Assume O_NONBLOCK.
+       (wait_reading_process_output): Put in a special case for WINDOWSNT
+       to mimick the older behavior where it had O_NDELAY but not O_NONBLOCK.
+       It's not clear this is needed, but it's a more-conservative change.
+       (create_process): Assume FD_CLOEXEC.
+       (create_process, create_pty): Assume O_NOCTTY.
+       * sysdep.c (init_sys_modes, reset_sys_modes): Assume F_SETFL.
+       (reset_sys_modes): Use O_NONBLOCK rather than O_NDELAY.
+       Omit if not DOS_NT, since F_GETFL is not defined there.
+       (serial_open): Assume O_NONBLOCK and O_NOCTTY.
+       * term.c: Include <fcntl.h>, for flags like O_NOCTTY.
+       (O_NOCTTY): Remove.
+       (init_tty): Assume O_IGNORE_CTTY is defined to 0 on platforms that
+       lack it, since gnulib guarantees this.
+       * w32.c (fcntl): Test for O_NONBLOCK rather than O_NDELAY.
+
+2012-11-17  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32.c (faccessat): Pretend that directories have the execute bit
+       set.  Emacs expects that, e.g., in files.el:cd-absolute.
+
+       * w32proc.c (create_child): Don't clip the PID of the child
+       process to fit into an Emacs integer, as this is no longer a
+       restriction.
+       (waitpid): Rename from sys_wait.  Emulate a Posix 'waitpid' by
+       reaping only the process specified by PID argument, if that is
+       positive.  Use PID instead of dead_child to know which process to
+       reap.  Wait for the child to die only if WNOHANG is not in
+       OPTIONS.
+       (sys_select): Don't set dead_child.
+
+       * sysdep.c (wait_for_termination_1): Remove the WINDOWSNT portion,
+       as it is no longer needed.
+
+       * process.c (waitpid, WUNTRACED) [!WNOHANG]: Remove definitions,
+       no longer needed.
+       (record_child_status_change): Remove the setting of
+       record_at_most_one_child for the !WNOHANG case.
+
+2012-11-17  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix problems in ns port found by static checking.
+       * nsterm.m: Include <pthread.h>, for pthread_mutex_lock etc.
+       (hold_event, setPosition:portion:whole:): Send SIGIO only to self,
+       not to process group.
+       (ns_select): Use emacs_write, not write, as that's more robust
+       in the presence of signals.
+       (fd_handler:): Check for read errors.
+
 2012-11-16  Glenn Morris  <rgm@gnu.org>
 
        * editfns.c (Fmessage): Mention message-log-max.  (Bug#12849)
 
-2012-11-15  Stefan Monnier  <monnier@iro.umontreal.ca>
+2012-11-16  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * eval.c (Finteractive_p): Revert lexbind-merge mishap.
 
-2012-11-14  Eli Zaretskii  <eliz@gnu.org>
+2012-11-16  Eli Zaretskii  <eliz@gnu.org>
 
        * w32proc.c (timer_loop): Make sure SuspendThread and ResumeThread
        use the same value of thread handle.
        (getitimer): Don't duplicate the caller thread's handle here.
        (Bug#12832)
 
-2012-11-13  Jan Djärv  <jan.h.d@swipnet.se>
+2012-11-16  Jan Djärv  <jan.h.d@swipnet.se>
 
        * nsterm.m (hold_event): Send SIGIO to make sure ns_read_socket is
        called (Bug#12834).
 
-2012-11-12  Eli Zaretskii  <eliz@gnu.org>
+2012-11-16  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Remove no-longer-used pty_max_bytes variable.
+       * process.c (pty_max_bytes): Remove; unused.
+       (send_process): Do not set it.
+
+2012-11-15  Juanma Barranquero  <lekktu@gmail.com>
+
+       * makefile.w32-in ($(BLD)/dispnew.$(O), $(BLD)/emacs.$(O)):
+       Update dependencies.
+
+2012-11-15  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * eval.c (mark_backtrace) [BYTE_MARK_STACK]: Remove stray '*'.
+       This follows up on the 2012-09-29 patch that removed indirection
+       for the 'function' field.  Reported by Sergey Vinokurov in
+       <http://lists.gnu.org/archive/html/emacs-devel/2012-11/msg00263.html>.
+
+2012-11-14  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32.c (faccessat): Rename from sys_faccessat.  (No need to use a
+       different name, as the MS runtime does not have such a function,
+       and probably never will.)  All callers changed.  Ignore DIRFD
+       value if PATH is an absolute file name, to match Posix spec
+       better.  If AT_SYMLINK_NOFOLLOW is set in FLAGS, don't resolve
+       symlinks.
+
+2012-11-14  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * xdisp.c (echo_area_display, redisplay_internal):
+       Omit redundant check whether frame_garbaged is set.
+
+2012-11-14  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Use faccessat, not access, when checking file permissions (Bug#12632).
+       This fixes a bug that has been present in Emacs since its creation.
+       It was reported by Chris Torek in 1983 even before GNU Emacs existed,
+       which must set some sort of record.  (Torek's bug report was against
+       a predecessor of GNU Emacs, but GNU Emacs happened to have the
+       same common flaw.)  See Torek's Usenet posting
+       "setuid/setgid programs & Emacs" Article-I.D.: sri-arpa.858
+       Posted: Fri Apr  8 14:18:56 1983.
+       * Makefile.in (LIB_EACCESS): New macro.
+       (LIBES): Use it.
+       * callproc.c (init_callproc):
+       * charset.c (init_charset):
+       * fileio.c (check_existing, check_executable, check_writable)
+       (Ffile_readable_p):
+       * lread.c (openp, load_path_check):
+       * process.c (allocate_pty):
+       * xrdb.c (file_p):
+       Use effective UID when checking permissions, not real UID.
+       * callproc.c (init_callproc):
+       * charset.c (init_charset):
+       * lread.c (load_path_check, init_lread):
+       Test whether directories are accessible, not merely whether they exist.
+       * conf_post.h (GNULIB_SUPPORT_ONLY_AT_FDCWD): New macro.
+       * fileio.c (check_existing, check_executable, check_writable)
+       (Ffile_readable_p):
+       Use symbolic names instead of integers for the flags, as they're
+       portable now.
+       (check_writable): New arg AMODE.  All uses changed.
+       Set errno on failure.
+       (Ffile_readable_p): Use faccessat, not stat + open + close.
+       (Ffile_writable_p): No need to call check_existing + check_writable.
+       Just call check_writable and then look at errno.  This saves a syscall.
+       dir should never be nil; replace an unnecessary runtime check
+       with an eassert.  When checking the parent directory of a nonexistent
+       file, check that the directory is searchable as well as writable, as
+       we can't create files in unsearchable directories.
+       (file_directory_p): New function, which uses 'stat' on most platforms
+       but faccessat with D_OK (for efficiency) if WINDOWSNT.
+       (Ffile_directory_p, Fset_file_times): Use it.
+       (file_accessible_directory_p): New function, which uses a single
+       syscall for efficiency.
+       (Ffile_accessible_directory_p): Use it.
+       * xrdb.c (file_p): Use file_directory_p.
+       * lisp.h (file_directory_p, file_accessible_directory_p): New decls.
+       * lread.c (openp): When opening a file, use fstat rather than
+       stat, as that avoids a permissions race.  When not opening a file,
+       use file_directory_p rather than stat.
+       (dir_warning): First arg is now a usage string, not a format.
+       Use errno.  All uses changed.
+       * nsterm.m (ns_term_init): Remove unnecessary call to file-readable
+       that merely introduced a race.
+       * process.c, sysdep.c, term.c: All uses of '#ifdef O_NONBLOCK'
+       changed to '#if O_NONBLOCK', to accommodate gnulib O_* style,
+       and similarly for the other O_* flags.
+       * w32.c (sys_faccessat): Rename from sys_access and switch to
+       faccessat's API.  All uses changed.
+       * xrdb.c: Do not include <sys/stat.h>; no longer needed.
+       (magic_db): Rename from magic_file_p.
+       (magic_db, search_magic_path): Return an XrmDatabase rather than a
+       char *, so that we don't have to test for file existence
+       separately from opening the file for reading.  This removes a race
+       fixes a permission-checking problem, and simplifies the code.
+       All uses changed.
+       (file_p): Remove; no longer needed.
+
+2012-11-13  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Omit glyphs initialization at startup.
+       * dispnew.c (glyphs_initialized_initially_p): Remove.
+       (adjust_frame_glyphs_initially): Likewise.  Adjust users.
+       (Fredraw_frame): Move actual code from here...
+       (redraw_frame): ...to here.  Add eassert.  Adjust comment.
+       (Fredraw_display): Use redraw_frame.
+       * xdisp.c (clear_garbaged_frames): Likewise.
+
+2012-11-13  Eli Zaretskii  <eliz@gnu.org>
 
        * xdisp.c (decode_mode_spec): Limit the value of WIDTH argument
        passed to pint2str and pint2hrstr to be at most the size of the
        large values of FIELD_WIDTH argument to decode_mode_spec.
        (Bug#12867)
 
-2012-11-07  Martin Rudalics  <rudalics@gmx.at>
+2012-11-13  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix a race with verify-visited-file-modtime (Bug#12863).
+       Since at least 1991 Emacs has ignored an mtime difference of no
+       more than one second, but my guess is that this was to work around
+       file system bugs that were fixed long ago.  Since the race is
+       causing problems now, let's remove that code.
+       * fileio.c (Fverify_visited_file_modtime): Do not accept a file
+       whose time stamp is off by no more than a second.  Insist that the
+       file time stamps match exactly.
+
+2012-11-12  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * frame.h (struct frame): Convert external_tool_bar member to
+       1-bit unsigned bitfield.
+       * termhooks.h (struct terminal): Remove mouse_moved member since
+       all users are long dead.  Adjust comment on mouse_position_hook.
+
+2012-11-12  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Simplify by using FOR_EACH_FRAME here and there.
+       * frame.c (next_frame, prev_frame, other_visible_frames)
+       (delete_frame, visible-frame-list): Use FOR_EACH_FRAME.
+       * w32term.c (x_window_to_scroll_bar): Likewise.
+       * window.c (window_list): Likewise.
+       * xdisp.c (x_consider_frame_title): Likewise.
+       * xfaces.c ( Fdisplay_supports_face_attributes_p): Likewise.
+       * xfns.c (x_window_to_frame, x_any_window_to_frame)
+       (x_menubar_window_to_frame, x_top_window_to_frame): Likewise.
+       * xmenu.c (menubar_id_to_frame): Likewise.
+       * xselect.c (frame_for_x_selection): Likewise.
+       * xterm.c (x_frame_of_widget, x_window_to_scroll_bar)
+       (x_window_to_menu_bar): Likewise.
+       * w32fns.c (x_window_to_frame): Likewise.  Adjust comment.
+
+2012-11-12  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * data.c (Qdefalias_fset_function): Now static.
+
+       Another tweak to vectorlike_header change.
+       * alloc.c (struct Lisp_Vectorlike_Free, NEXT_IN_FREE_LIST):
+       Remove, and replace all uses with ...
+       (next_in_free_list, set_next_in_free_list):
+       New functions, which respect C's aliasing rules better.
+
+2012-11-11  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * window.c (list4i): Rename from 'quad'.  All uses changed.
+       Needed because <sys/types.h> defines 'quad' on Solaris 10.
+
+2012-11-11  Juanma Barranquero  <lekktu@gmail.com>
+
+       * xdisp.c (start_hourglass) [HAVE_NTGUI]: Add block to silence
+       warning about mixing declarations and code in ISO C90.
+
+2012-11-10  Martin Rudalics  <rudalics@gmx.at>
 
        * window.c (Fsplit_window_internal): Set combination limit of
        new parent window to t iff Vwindow_combination_limit is t;
        fixing a regression introduced with the change from 2012-09-22.
-       (Fwindow_combination_limit, Fset_window_combination_limit):
-       Fix doc-strings.
+       (Fset_window_combination_limit): Fix doc-string.
 
-2012-11-06  Eli Zaretskii  <eliz@gnu.org>
+2012-11-10  Eli Zaretskii  <eliz@gnu.org>
 
        * xdisp.c (try_scrolling): Fix correction of aggressive-scroll
        amount when the scroll margins are too large.  When scrolling
        point is positioned many lines beyond the window top/bottom.
        (Bug#12811)
 
-2012-11-05  Eli Zaretskii  <eliz@gnu.org>
-
        * ralloc.c (relinquish): If real_morecore fails to return memory
        to the system, don't crash; instead, leave the last heap
        unchanged and return.  (Bug#12774)
 
+2012-11-09  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * lisp.h (AUTOLOADP): New macro.
+       * eval.c (Fautoload): Don't attach to loadhist, call Fdefalias instead.
+       * data.c (Ffset): Remove special ad-advice-info handling.
+       (Fdefalias): Handle autoload definitions and new Qdefalias_fset_function.
+       (Fsubr_arity): CSE.
+       (Finteractive_form): Simplify.
+       (Fquo): Don't insist on having at least 2 arguments.
+       (Qdefalias_fset_function): New var.
+
+2012-11-09  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * image.c (xpm_make_color_table_h): Change to hashtest_equal.
+
+       * nsfont.m (Qcondensed, Qexpanded): New variables.
+       (ns_descriptor_to_entity): Restore Qcondensed, Qexpanded setting.
+       (syms_of_nsfont): Defsym Qcondensed, Qexpanded.
+
+2012-11-09  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Fix recently introduced crash on MS-Windows (Bug#12839).
+       * w32term.h (struct scroll_bar): Use convenient header.
+       (SCROLL_BAR_VEC_SIZE): Remove.
+       * w32term.c (x_scroll_bar_create): Use VECSIZE.
+
+2012-11-09  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Tweak last vectorlike_header change.
+       * alloc.c (struct Lisp_Vectorlike_Free): Special type to represent
+       vectorlike object on the free list.  This is introduced to avoid
+       some (but not all) pointer casting and aliasing problems, see
+       http://lists.gnu.org/archive/html/emacs-devel/2012-11/msg00105.html.
+       * .gdbinit (pvectype, pvecsize): New commands to examine vectorlike
+       objects.
+       (xvectype, xvecsize): Use them to examine Lisp_Object values.
+
+2012-11-09  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * nsfont.m (ns_descriptor_to_entity): Qcondensed and Qexpanded has
+       been removed, so remove them here also.
+
+2012-11-09  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * doc.c (Fdocumentation): Handle new property
+       dynamic-docstring-function to replace the old ad-advice-info.
+
+2012-11-09  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * fns.c (Qeql, hashtest_eq): Now static.
+
+2012-11-08  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * lisp.h (XHASH): Redefine to be imperfect and fit in a Lisp int.
+       * fns.c (hashfn_eq, hashfn_eql, sxhash):
+       * profiler.c (hashfn_profiler): Don't use XUINT on non-integers.
+       * buffer.c (compare_overlays): Use XLI rather than XHASH.
+
+2012-11-08  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Use same hash function for hashfn_profiler as for hash_string etc.
+       * fns.c (SXHASH_COMBINE): Remove.  All uses replaced by sxhash_combine.
+       * lisp.h (sxhash_combine): New inline function, with the contents
+       of the old SXHASH_COMBINE.
+       * profiler.c (hashfn_profiler): Use it, instead of having a
+       special hash function containing a comparison that always yields 1.
+
+2012-11-08  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * xfaces.c (Qultra_light, Qreverse_oblique, Qreverse_italic)
+       (Qultra_condensed, Qextra_condensed, Qcondensed, Qsemi_condensed)
+       (Qsemi_expanded, Qextra_expanded, Qexpanded, Qultra_expanded):
+       Remove unused vars.
+
+2012-11-08  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * image.c (xpm_make_color_table_h): Fix compiler error because
+       make_hash_table changed.
+
+2012-11-08  Thomas Kappler <tkappler@gmail.com> (tiny change)
+
+       * nsfont.m (ns_findfonts): Handle empty matchingDescs (Bug#11541).
+
+2012-11-08  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       Use ad-hoc comparison function for the profiler's hash-tables.
+       * profiler.c (Qprofiler_backtrace_equal, hashtest_profiler): New vars.
+       (make_log): Use them.
+       (handle_profiler_signal): Don't inhibit quit any longer since we don't
+       call Fequal any more.
+       (Ffunction_equal): New function.
+       (cmpfn_profiler, hashfn_profiler): New functions.
+       (syms_of_profiler): Initialize them.
+       * lisp.h (struct hash_table_test): New struct.
+       (struct Lisp_Hash_Table): Use it.
+       * alloc.c (mark_object): Mark hash_table_test fields of hash tables.
+       * fns.c (make_hash_table): Take a struct to describe the test.
+       (cmpfn_eql, cmpfn_equal, cmpfn_user_defined, hashfn_eq, hashfn_eql)
+       (hashfn_equal, hashfn_user_defined): Adjust to new calling convention.
+       (hash_lookup, hash_remove_from_table): Move assertion checking of
+       hashfn result here.  Check hash-equality before calling cmpfn.
+       (Fmake_hash_table): Adjust call to make_hash_table.
+       (hashtest_eq, hashtest_eql, hashtest_equal): New structs.
+       (syms_of_fns): Initialize them.
+       * emacs.c (main): Move syms_of_fns earlier.
+       * xterm.c (syms_of_xterm):
+       * category.c (hash_get_category_set): Adjust call to make_hash_table.
+       * print.c (print_object): Adjust to new hash-table struct.
+       * composite.c (composition_gstring_put_cache): Adjust to new hashfn.
+
+2012-11-08  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32fns.c (modifier_set): Fix handling of Scroll Lock when the
+       value of w32-scroll-lock-modifier is neither nil nor one of the
+       known key modifiers.  (Bug#12806)
+
+2012-11-08  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Shrink struct vectorlike_header to the only size field.
+       * lisp.h (enum pvec_type): Avoid explicit enum member values.
+       Adjust comment.
+       (enum More_Lisp_Bits): Change PSEUDOVECTOR_SIZE_BITS and
+       PVEC_TYPE_MASK to arrange new bitfield in the vector header.
+       (PSEUDOVECTOR_REST_BITS, PSEUDOVECTOR_REST_MASK): New members.
+       (PSEUDOVECTOR_AREA_BITS): New member used to extract subtype
+       information from the vector header.  Adjust comment.
+       (XSETPVECTYPE, XSETPVECTYPESIZE, XSETTYPED_PSEUDOVECTOR)
+       (PSEUDOVECTOR_TYPEP, DEFUN): Adjust to match new vector header
+       layout.
+       (XSETSUBR, SUBRP): Adjust to match new Lisp_Subr layout.
+       (struct vectorlike_header): Remove next member.  Adjust comment.
+       (struct Lisp_Subr): Add convenient header.  Adjust comment.
+       (allocate_pseudovector): Adjust prototype.
+       * alloc.c (mark_glyph_matrix, mark_face_cache, allocate_string)
+       (sweep_string, lisp_malloc): Remove useless prototypes.
+       (enum mem_type): Adjust comment.
+       (NEXT_IN_FREE_LIST): New macro.
+       (SETUP_ON_FREE_LIST): Adjust XSETPVECTYPESIZE usage.
+       (Fmake_bool_vector): Likewise.
+       (struct large_vector): New type to represent allocation unit for
+       the vectors with the memory footprint more than VBLOOCK_BYTES_MAX.
+       (large_vectors): Change type to struct large_vector.
+       (allocate_vector_from_block): Simplify.
+       (PSEUDOVECTOR_NBYTES): Replace with...
+       (vector_nbytes): ...new function.  Adjust users.
+       (sweep_vectors): Adjust processing of large vectors.
+       (allocate_vectorlike): Likewise.
+       (allocate_pseudovector): Change type of 3rd arg to enum pvec_type.
+       Add easserts.  Adjust XSETPVECTYPESIZE usage.
+       (allocate_buffer): Use BUFFER_PVEC_INIT.
+       (live_vector_p): Adjust to match large vector.
+       * buffer.c (init_buffer_once): Use BUFFER_PVEC_INIT.
+       * buffer.h (struct buffer): Add next member.
+       (BUFFER_LISP_SIZE, BUFFER_REST_SIZE, BUFFER_PVEC_INIT):
+       New macros.
+       (FOR_EACH_BUFFER): Adjust to match struct buffer change.
+       * fns.c (internal_equal): Adjust to match enum pvec_type change.
+       (copy_hash_table): Adjust to match vector header change.
+       * lread.c (defsubr): Use XSETPVECTYPE.
+       * .gdbinit (xpr, xbacktrace): Adjust to match vector header change.
+       (xvectype): Likewise.  Print PVEC_NORMAL_VECTOR for regular vectors.
+       (xvecsize): New command.
+
+2012-11-08  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * keyboard.c (event_to_kboard): Do not dereference
+       frame_or_window field of SELECTION_REQUEST_EVENT
+       and SELECTION_CLEAR_EVENT events (Bug#12814).
+       * xterm.h (struct selection_input_event): Adjust comment.
+
+2012-11-07  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32fns.c (modifier_set): Don't report modifiers from toggle key,
+       such as Scroll Lock, if the respective keys are treated as
+       function keys, not as modifiers.  This avoids destroying non-ASCII
+       keyboard input when Scroll Lock is toggled ON.  (Bug#12806)
+
+2012-11-07  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * xfns.c (Fx_wm_set_size_hint): Use check_x_frame.  Adjust docstring.
+
+2012-11-06  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Restore some duplicate definitions (Bug#12814).
+       This undoes part of the 2012-11-03 changes.  Some people build
+       with plain -g rather than with -g3, and they need the duplicate
+       definitions for .gdbinit to work; see <http://bugs.gnu.org/12814#26>.
+       * lisp.h (GCTYPEBITS, ARRAY_MARK_FLAG, PSEUDOVECTOR_FLAG, VALMASK):
+       Define as macros, as well as as enums or as constants.
+
+2012-11-06  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * nsterm.m (convert_ns_to_X_keysym, keyDown:): Add NSNumericPadKeyMask
+       to keypad keys (Bug#12816).
+
+2012-11-06  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Minor adjustments of recently-changed frame functions.
+       * buffer.c (Fbuffer_list): Omit CHECK_FRAME, since arg is already
+       known to be a frame (we're in the FRAMEP branch).
+       * lisp.h (Qframep): Remove decl.  frame.h declares this.
+       * window.c (quad): Args are of type EMACS_INT, not ptrdiff_t,
+       since they're meant for Lisp fixnum values.
+
+2012-11-06  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * window.c (Fwindow_combination_limit): Revert to the only
+       required argument and adjust docstring as suggested in
+       http://lists.gnu.org/archive/html/emacs-diffs/2012-11/msg01082.html
+       by Martin Rudalics <rudalics@gmx.at>.
+
+2012-11-06  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Widely used frame validity and checking functions.
+       * frame.h (decode_live_frame, decode_any_frame): Add prototypes.
+       * frame.c (decode_live_frame, decode_any_frame): New functions.
+       (delete_frame, Fredirect_frame_focus, Fframe_parameters)
+       (Fframe_parameter, Fframe_char_height, Fframe_char_width)
+       (Fframe_pixel_height, Fframe_pixel_width, Ftool_bar_pixel_width)
+       (Fframe_pointer_visible_p): Use decode_any_frame.
+       (Fmake_frame_visible, Fmake_frame_invisible, Ficonify_frame)
+       (Fraise_frame, Flower_frame, Fmodify_frame_parameters)
+       (Fset_frame_height, Fset_frame_width): Use decode_live_frame.
+       (Fframe_focus): Likewise.  Allow zero number of arguments.
+       Adjust docstring.
+       (frame_buffer_list, frame_buffer_predicate): Remove.
+       * lisp.h (frame_buffer_predicate): Remove prototype.
+       * buffer.c (Fother_buffer): Use decode_any_frame.
+       * xdisp.c (Ftool_bar_lines_needed): Likewise.
+       * xfaces.c (Fcolor_gray_p, Fcolor_supported_p): Likewise.
+       * font.c (Ffont_face_attributes, Ffont_family_list, Fopen_font)
+       (Fclose_font, Ffont_info): Use decode_live_frame.
+       * fontset.c (check_fontset_name): Likewise.
+       * terminal.c (Fframe_terminal): Likewise.
+       * w32fns.c (check_x_frame): Likewise.
+       * window.c (Fminibuffer_window, Fwindow_at)
+       (Fcurrent_window_configuration): Likewise.
+       (Frun_window_configuration_change_hook, Fwindow_resize_apply):
+       Likewise.  Allow zero number of arguments.  Adjust docstring.
+       * dispnew.c (Fredraw_frame): Likewise.
+       * xfaces.c (frame_or_selected_frame): Remove.
+       (Fx_list_fonts, Finternal_get_lisp_face_attribute, Fface_font)
+       (Finternal_lisp_face_equal_p, Finternal_lisp_face_empty_p)
+       (Fframe_face_alist): Use decode_live_frame.
+       * xfns.c (check_x_frame): Likewise.
+
+2012-11-06  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * window.c (quad): New function.
+       (Fwindow_edges, Fwindow_pixel_edges, Fwindow_inside_edges)
+       (Fwindow_absolute_pixel_edges, Fwindow_inside_absolute_pixel_edges)
+       (Fwindow_inside_pixel_edges, Fpos_visible_in_window_p)
+       (Fwindow_line_height): Use it.
+       (Fwindow_fringes): Use list3.
+       (Fwindow_scroll_bars): Use list4.
+       (Fwindow_frame, Fwindow_top_child, Fwindow_left_child)
+       (Fwindow_combination_limit): Allow zero number of arguments.
+
+2012-11-05  Eli Zaretskii  <eliz@gnu.org>
+
+       * makefile.w32-in ($(BLD)/w32fns.$(O)): Depend on $(NT_INC)/unistd.h.
+
+       * w32fns.c: Include unistd.h, to avoid compiler warnings on Cygwin.
+       (emacs_abort) [CYGWIN]: Don't call _open_osfhandle; instead, use
+       file descriptor 2 for standard error.  (Bug#12805)
+
+2012-11-05  Chong Yidong  <cyd@gnu.org>
+
+       * process.c (wait_reading_process_output): Revert previous change.
+
+2012-11-05  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Assume at least POSIX.1-1988 for getpgrp, setpgid, setsid (Bug#12800).
+       This removes code that has been obsolete since around 1990.
+       * callproc.c (Fcall_process):
+       * emacs.c (main):
+       * process.c (create_process):
+       * term.c (dissociate_if_controlling_tty):
+       Assume setsid exists.
+       * callproc.c (child_setup): Assume setpgid exists and behaves as
+       per POSIX.1-1988 or later.
+       * conf_post.h (setpgid) [!HAVE_SETPGID]: Remove.
+       * emacs.c (shut_down_emacs):
+       * sysdep.c (sys_suspend, init_foreground_group):
+       Assume getpgrp behaves as per POSIX.1-1998 or later.
+       * msdos.c (setpgrp): Remove.
+       (tcgetpgrp, setpgid, setsid): New functions.
+       * systty.h (EMACS_GETPGRP): Remove.  All callers now use getpgrp.
+       * term.c (no_controlling_tty): Remove; unused.
+       * w32proc.c (setpgrp): Remove.
+       (setsid, tcgetpgrp): New functions.
+
+       Simplify by assuming __fpending.
+       * dispnew.c: Include <fpending.h>, not <stdio_ext.h>.
+       (update_frame_1): Use __fpending, not PENDING_OUTPUT_COUNT.
+       Do not assume that __fpending's result fits in int.
+
+2012-11-04  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Remove EMACS_OUTQSIZE+sleep hack.
+       * dispnew.c (update_frame_1): Remove hack for terminals slower
+       than 2400 bps, which throttled Emacs by having it sleep.
+       This code hasn't worked since at least 2007, when the multi-tty stuff
+       was added, and anyway those old terminals are long dead.
+       * systty.h (EMACS_OUTQSIZE): Remove; unused.  The macro isn't used even
+       without the dispnew.c change, as dispnew.c doesn't include systty.h.
+
+       Fix data-loss with --version (Bug#9574).
+       * emacs.c (close_output_streams): Use strerror, not emacs_strerror,
+       as we can't assume that emacs_strerror is initialized, and strerror
+       is good enough here.
+       (main): Invoke atexit earlier, to catch earlier instances of
+       sending data to stdout and exiting, e.g., "emacs --version >/dev/full".
+
+2012-11-04  Michael Marchionna  <tralfaz@pacbell.net>
+
+       * nsterm.m: Add NSClearLineFunctionKey and keypad keys (Bug#8680).
+       (keyDown): Remap keypad keys to X11 virtual key codes.
+
+2012-11-03  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix data-loss with --batch (Bug#9574).
+       * emacs.c: Include <close-stream.h>.
+       (close_output_streams): New function.
+       (main): Pass it to atexit, so that Emacs closes stdout and stderr
+       and handles errors appropriately.
+       (Fkill_emacs): Don't worry about flushing, as close_output_stream
+       does that now.
+
+       Fix a race condition that causes Emacs to mess up glib (Bug#8855).
+       The symptom is a diagnostic "GLib-WARNING **: In call to
+       g_spawn_sync(), exit status of a child process was requested but
+       SIGCHLD action was set to SIG_IGN and ECHILD was received by
+       waitpid(), so exit status can't be returned."  The diagnostic
+       is partly wrong, as the SIGCHLD action is not set to SIG_IGN.
+       The real bug is a race condition between Emacs and glib: Emacs
+       does a waitpid (-1, ...) and reaps glib's subprocess by mistake,
+       so that glib can't find it.  Work around the bug by invoking
+       waitpid only on subprocesses that Emacs itself creates.
+       * process.c (create_process, record_child_status_change):
+       Don't use special value -1 in pid field, as the caller now must
+       know the pid rather than having the callee infer it.
+       The inference was sometimes incorrect anyway, due to another race.
+       (create_process): Set new 'alive' member if child is created.
+       (process_status_retrieved): New function.
+       (record_child_status_change): Use it.
+       Accept negative 1st argument, which means to wait for the
+       processes that Emacs already knows about.  Move special-case code
+       for DOS_NT (which lacks WNOHANG) here, from caller.  Keep track of
+       processes that have already been waited for, by testing and
+       clearing new 'alive' member.
+       (CAN_HANDLE_MULTIPLE_CHILDREN): Remove, as record_child_status_change
+       now does this internally.
+       (handle_child_signal): Let record_child_status_change do all
+       the work, since we do not want to reap all exited child processes,
+       only the child processes that Emacs itself created.
+       * process.h (Lisp_Process): New boolean member 'alive'.
+
+       Omit duplicate definitions no longer needed with gcc -g3.
+       * lisp.h (GCTYPEBITS, GCALIGNMENT, ARRAY_MARK_FLAG, PSEUDOVECTOR_FLAG)
+       (VALMASK, MOST_POSITIVE_FIXNUM, MOST_NEGATIVE_FIXNUM):
+       Define only as macros.  There's no longer any need to also define
+       these symbols as enums or as constants, since we now assume
+       gcc -g3 when debugging.
+
 2012-11-03  Eli Zaretskii  <eliz@gnu.org>
 
        * lisp.mk: Adjust comments to the fact that term/internal is now
        iterator when starting in the middle of a display or overlay
        string.  (Bug#12745)
 
-2012-11-03  Jan Djärv  <jan.h.d@swipnet.se>
+2012-11-03  Chong Yidong  <cyd@gnu.org>
+
+       * process.c (wait_reading_process_output): Clean up the last
+       change.
+
+2012-11-03  Jim Paris  <jim@jtan.com>  (tiny change)
+
+       * process.c (wait_reading_process_output): Avoid a race condition
+       with SIGIO delivery (Bug#11536).
+
+2012-11-03  Chong Yidong  <cyd@gnu.org>
+
+       * buffer.c (cursor_type): Untabify docstring.
+
+2012-11-03  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * frame.h (struct frame): Drop can_have_scroll_bars member
+       which is meaningless for a long time.  Adjust comments.
+       (FRAME_CAN_HAVE_SCROLL_BARS): Remove.
+       * frame.c, nsfns.m, term.c, w32fns.c, xfns.c: Adjust users.
+
+2012-11-03  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * window.c (decode_next_window_args): Update window arg after
+       calling decode_live_window and so fix crash reported at
+       http://lists.gnu.org/archive/html/emacs-devel/2012-11/msg00035.html
+       by Juanma Barranquero <lekktu@gmail.com>.
+       (Fwindow_body_width, Fwindow_body_height): Simplify a bit.
+       * font.c (Ffont_at): Likewise.
+
+2012-11-01  Jan Djärv  <jan.h.d@swipnet.se>
 
        * widget.c (resize_cb): New function.
        (EmacsFrameRealize): Add resize_cb as event handler (Bug#12733).
        (EmacsFrameResize): Check if all is up to date before changing frame
        size.
 
+2012-11-02  Eli Zaretskii  <eliz@gnu.org>
+
+       Implement backtrace output for fatal errors on MS-Windows.
+       * w32fns.c (CaptureStackBackTrace_proc): New typedef.
+       (BACKTRACE_LIMIT_MAX): New macro.
+       (w32_backtrace): New function.
+       (emacs_abort): Use w32_backtrace when the user chooses not to
+       attach a debugger.  Update the text of the abort dialog.
+
+2012-11-02  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Window-related stuff cleanup here and there.
+       * dispnew.c (Finternal_show_cursor, Finternal_show_cursor_p):
+       Use decode_any_window.
+       * fringe.c (Ffringe_bitmaps_at_pos): Likewise.
+       * xdisp.c (Fformat_mode_line): Likewise.
+       * font.c (Ffont_at): Use decode_live_window.
+       * indent.c (Fcompute_motion, Fvertical_motion): Likewise.
+       * window.c (decode_next_window_args): Likewise.
+       (decode_any_window): Remove static.
+       * window.h (decode_any_window): Add prototype.
+       * lisp.h (CHECK_VALID_WINDOW, CHECK_LIVE_WINDOW): Move from here...
+       * window.h: ...to here, redefine via WINDOW_VALID_P and WINDOW_LIVE_P,
+       respectively.
+
+2012-11-02  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Remove pad from struct input_event.
+       * termhooks.h (struct input_event): Remove padding field.
+       Adjust comment.
+       * keyboard.c (event_to_kboard): Simplify because frame_or_window
+       member is never cons for a long time.  Adjust comment.
+       (mark_kboards): Adjust because SELECTION_REQUEST_EVENT and
+       SELECTION_CLEAR_EVENT has no Lisp_Objects to mark.  Add comment.
+       * xterm.c (handle_one_xevent): Do not initialize frame_or_window
+       field of SELECTION_REQUEST_EVENT and SELECTION_CLEAR_EVENT.
+
 2012-11-01  Eli Zaretskii  <eliz@gnu.org>
 
        * w32proc.c (getpgrp, setpgid): New functions.  (Bug#12776)
 
 2012-10-19  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * fns.c (Fnreverse): Include the problem element when signalling an
+       * fns.c (Fnreverse): Include the problem element when signaling an
        error (bug#12677).
 
 2012-10-18  Jan Djärv  <jan.h.d@swipnet.se>
        now a supported configuration.
 
        * Makefile.in: consolidate image variables into LIBIMAGE; add
-       W32_OBJ and W32_LIBS. Compile new files.
+       W32_OBJ and W32_LIBS.  Compile new files.
 
        * conf_post.h:
        (_DebPrint) declare tracing facility for W32 debugging.  We need
 2012-05-09  Michael Albinus  <michael.albinus@gmx.de>
 
        * dbusbind.c (xd_registered_buses): New internal Lisp object.
-       Rename all occurences of Vdbus_registered_buses to xd_registered_buses.
+       Rename all occurrences of Vdbus_registered_buses to xd_registered_buses.
        (syms_of_dbusbind): Remove declaration of Vdbus_registered_buses.
        Initialize xd_registered_buses.