]> code.delx.au - gnu-emacs/commitdiff
Merge from emacs-24; up to 2012-11-17T22:12:47Z!eggert@cs.ucla.edu
authorGlenn Morris <rgm@gnu.org>
Wed, 21 Nov 2012 04:47:55 +0000 (20:47 -0800)
committerGlenn Morris <rgm@gnu.org>
Wed, 21 Nov 2012 04:47:55 +0000 (20:47 -0800)
17 files changed:
1  2 
ChangeLog
configure.ac
doc/emacs/ChangeLog
doc/lispref/ChangeLog
doc/lispref/os.texi
doc/lispref/windows.texi
etc/NEWS
lisp/ChangeLog
lisp/calendar/time-date.el
lisp/files.el
lisp/net/tramp.el
nt/ChangeLog
src/ChangeLog
src/emacs.c
src/fileio.c
src/w32.c
src/w32term.h

diff --combined ChangeLog
index cd31e9547215a55bdccbba24e36892ef60f1971a,39f9b31bf5b87c830b90286efb5b611041796da4..33dafaaea4c8f48ab8ac1a2045656ac2f83e05ca
+++ b/ChangeLog
@@@ -1,71 -1,11 +1,75 @@@
+ 2012-11-21  Glenn Morris  <rgm@gnu.org>
+       * configure.ac (--enable-profiling): Doc fix.
 +2012-11-20  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Improve static checking of integer overflow and stack smashing.
 +      * configure.ac (WARN_CFLAGS): Add -Wstack-protector
 +      if using GCC 4.7.2 or later on a platform with
 +      at least 64-bit long int.  This improves static checking on these
 +      platforms, when configured with --enable-gcc-warnings.
 +
 +2012-11-17  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Assume POSIX 1003.1-1988 or later for fcntl.h (Bug#12881).
 +      * configure.ac: Do not check for fcntl.h.
 +      * lib/gnulib.mk: Regenerate.
 +
 +2012-11-16  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Remove no-longer-used pty_max_bytes variable.
 +      * configure.ac (fpathconf): Remove unnecessary check.
 +
 +2012-11-14  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Use faccessat, not access, when checking file permissions (Bug#12632).
 +      * .bzrignore: Add lib/fcntl.h.
 +      * configure.ac (euidaccess): Remove check; gnulib does this for us now.
 +      (gl_FCNTL_O_FLAGS): Define a dummy version.
 +      * lib/at-func.c, lib/euidaccess.c, lib/faccessat.c, lib/fcntl.in.h:
 +      * lib/getgroups.c, lib/group-member.c, lib/root-uid.h:
 +      * lib/xalloc-oversized.h, m4/euidaccess.m4, m4/faccessat.m4:
 +      * m4/fcntl_h.m4, m4/getgroups.m4, m4/group-member.m4:
 +      New files, from gnulib.
 +      * lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
 +
 +2012-11-05  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Assume at least POSIX.1-1988 for getpgrp, setpgid, setsid (Bug#12800).
 +      * configure.ac (setpgid, setsid): Assume their existence.
 +      (AC_FUNC_GETPGRP, SETPGRP_RELEASES_CTTY): Remove; obsolete.
 +
 +      Simplify by assuming __fpending.
 +      Now that Emacs is using the gnulib fpending module,
 +      there's no need for Emacs to have a separate implementation.
 +      * configure.ac (stdio_ext.h, __fpending): Remove now-duplicate checks.
 +      (PENDING_OUTPUT_COUNT, DISPNEW_NEEDS_STDIO_EXT): Remove.
 +
 +2012-11-03  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * lib/makefile.w32-in (GNULIBOBJS): Add $(BLD)/fpending.$(O) and
 +      $(BLD)/close-stream.$(O).
 +      ($(BLD)/close-stream.$(O)):
 +      ($(BLD)/fpending.$(O)): New dependencies.
 +
 +2012-11-03  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Fix data-loss with --batch (Bug#9574).
 +      * lib/close-stream.c, lib/close-stream.h, lib/fpending.c
 +      * lib/fpending.h, m4/close-stream.m4, m4/fpending.m4:
 +      New files, from gnulib.
 +      * lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
 +
  2012-11-03  Eli Zaretskii  <eliz@gnu.org>
  
        * config.bat: Copy lib/execinfo.in.h to lib/execinfo.in-h if needed.
  
 +2012-11-02  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (EMACS_ICON): New variable.
 +      (install-etc): Use EMACS_ICON to allow choice of icon.
 +
  2012-10-26  Glenn Morris  <rgm@gnu.org>
  
        * Makefile.in (EMACS_NAME): New variable.
diff --combined configure.ac
index 01fe72d1ee65521e3e13c9516237dca608842940,3246372ca48ea93e6421f46c1ad498bd58dd0423..343a9e7cfb53bcac6553e2530a94b8abfae3255a
@@@ -22,7 -22,7 +22,7 @@@ dnl  You should have received a copy o
  dnl  along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
  
  AC_PREREQ(2.65)
 -AC_INIT(emacs, 24.2.50)
 +AC_INIT(emacs, 24.3.50)
  AC_CONFIG_HEADER(src/config.h:src/config.in)
  AC_CONFIG_SRCDIR(src/lisp.h)
  AC_CONFIG_AUX_DIR(build-aux)
@@@ -329,10 -329,15 +329,15 @@@ if test "${enableval}" != "no"; the
  fi)
  
  
+ dnl The name of this option is unfortunate.  It predates, and has no
+ dnl relation to, the "sampling-based elisp profiler" added in 24.3.
+ dnl Actually, it stops it working.
+ dnl http://lists.gnu.org/archive/html/emacs-devel/2012-11/msg00393.html
  AC_ARG_ENABLE(profiling,
  [AS_HELP_STRING([--enable-profiling],
-               [build emacs with profiling support.
-                This might not work on all platforms])],
+               [build emacs with low-level, gprof profiling support.
+                 Mainly useful for debugging Emacs itself.  May not work on
+                 all platforms.  Stops profiler.el working.])],
  [ac_enable_profiling="${enableval}"],[])
  if test x$ac_enable_profiling != x ; then
     PROFILING_CFLAGS="-DPROFILING=1 -pg"
@@@ -572,8 -577,6 +577,8 @@@ els
    test "x$NON_GCC_TEST_OPTIONS" != x && CC="$CC $NON_GCC_TEST_OPTIONS"
  fi
  
 +# Avoid gnulib's tests for O_NOATIME and O_NOFOLLOW, as we don't use them.
 +AC_DEFUN([gl_FCNTL_O_FLAGS])
  # Avoid gnulib's threadlib module, as we do threads our own way.
  AC_DEFUN([gl_THREADLIB])
  
@@@ -710,8 -713,6 +715,8 @@@ els
    nw="$nw -Wfloat-equal"            # warns about high-quality code
    nw="$nw -Winline"                 # OK to ignore 'inline'
    nw="$nw -Wjump-misses-init"       # We sometimes safely jump over init.
 +  nw="$nw -Wstrict-overflow"        # OK to optimize assuming that
 +                                    # signed overflow has undefined behavior
    nw="$nw -Wsync-nand"              # irrelevant here, and provokes ObjC warning
    nw="$nw -Wunsafe-loop-optimizations" # OK to suppress unsafe optimizations
  
    # <http://lists.gnu.org/archive/html/emacs-diffs/2011-11/msg00265.html>.
    nw="$nw -Wshadow"
  
 -  # The following lines should be removable at some point.
 -  nw="$nw -Wstack-protector"
 -  nw="$nw -Wstrict-overflow"
 +  # The following line should be removable at some point.
    nw="$nw -Wsuggest-attribute=pure"
  
 +  AC_MSG_CHECKING([whether to use -Wstack-protector])
 +  AC_PREPROC_IFELSE(
 +    [AC_LANG_PROGRAM(
 +       [[#if (1 <= __LONG_MAX__ >> 31 >> 31 \
 +           && 4 < __GNUC__ + (7 < __GNUC_MINOR__ + (2 <= __GNUC_PATCHLEVEL__)))
 +         /* OK */
 +         #else
 +         #error "Not GCC, or GCC before 4.7.2, or 'long int' has < 64 bits."
 +       #endif
 +       ]])],
 +    [AC_MSG_RESULT(yes)],
 +    [AC_MSG_RESULT(no)
 +     nw="$nw -Wstack-protector"])
 +
    gl_MANYWARN_ALL_GCC([ws])
    gl_MANYWARN_COMPLEMENT([ws], [$ws], [$nw])
    for w in $ws; do
  dnl checks for header files
  AC_CHECK_HEADERS_ONCE(
    linux/version.h sys/systeminfo.h
 -  stdio_ext.h fcntl.h coff.h pty.h
 +  coff.h pty.h
    sys/vlimit.h sys/resource.h
    sys/utsname.h pwd.h utmp.h dirent.h util.h)
  
@@@ -2887,10 -2876,10 +2892,10 @@@ AC_SUBST(BLESSMAIL_TARGET
  
  AC_CHECK_FUNCS(gethostname \
  closedir getrusage get_current_dir_name \
 -lrand48 setsid \
 -fpathconf select euidaccess getpagesize setlocale \
 -utimes getrlimit setrlimit setpgid getcwd shutdown getaddrinfo \
 -__fpending strsignal setitimer \
 +lrand48 \
 +select getpagesize setlocale \
 +utimes getrlimit setrlimit getcwd shutdown getaddrinfo \
 +strsignal setitimer \
  sendto recvfrom getsockname getpeername getifaddrs freeifaddrs \
  gai_strerror mkstemp getline getdelim fsync sync \
  difftime posix_memalign \
@@@ -2932,6 -2921,8 +2937,6 @@@ AC_CHECK_HEADERS_ONCE(sys/un.h
  
  AC_FUNC_FSEEKO
  
 -AC_FUNC_GETPGRP
 -
  # UNIX98 PTYs.
  AC_CHECK_FUNCS(grantpt)
  
@@@ -3664,6 -3655,100 +3669,6 @@@ case $opsys i
  esac
  
  
 -dnl Used in dispnew.c
 -AH_TEMPLATE(PENDING_OUTPUT_COUNT, [Number of chars of output in the
 -  buffer of a stdio stream.])
 -
 -AC_MSG_CHECKING([whether we are using the GNU C library])
 -AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
 -#include <features.h>
 -#ifndef __GNU_LIBRARY__
 -# error "this is not the GNU C library"
 -#endif
 -  ]], [[]])], emacs_glibc=yes, emacs_glibc=no)
 -AC_MSG_RESULT([$emacs_glibc])
 -
 -if test $emacs_glibc = yes; then
 -
 -  emacs_pending_output=unknown
 -
 -  case $opsys in
 -    gnu | gnu-linux | gnu-kfreebsd )
 -      AC_MSG_CHECKING([for style of pending output formalism])
 -      dnl In autoconf 2.67 and later, we could use a single test
 -      dnl since the preprocessed output is accessible in "conftest.i".
 -      AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
 -#include <stdio.h>
 -#if !defined (_IO_STDIO_H) && !defined (_STDIO_USES_IOSTREAM)
 -# error "stdio definitions not found"
 -#endif
 -        ]], [[]])], emacs_pending_output=new, [])
 -
 -      if test $emacs_pending_output = unknown; then
 -        case $opsys in
 -          gnu-linux | gnu-kfreebsd)
 -            AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
 -#include <stdio.h>
 -#ifndef __UCLIBC__
 -# error "not using uclibc"
 -#endif
 -            ]], [[]])], emacs_pending_output=uclibc, emacs_pending_output=old)
 -            ;;
 -        esac
 -      fi
 -
 -      AC_MSG_RESULT([$emacs_pending_output])
 -
 -      case $emacs_pending_output in
 -        new)
 -          dnl New C libio names.
 -          AC_DEFINE(PENDING_OUTPUT_COUNT(FILE),
 -            [((FILE)->_IO_write_ptr - (FILE)->_IO_write_base)])
 -          ;;
 -        uclibc)
 -          dnl Using the uClibc library.
 -          AC_DEFINE(PENDING_OUTPUT_COUNT(FILE),
 -            [((FILE)->__bufpos - (FILE)->__bufstart)])
 -          ;;
 -        old)
 -          dnl Old C++ iostream names.
 -          AC_DEFINE(PENDING_OUTPUT_COUNT(FILE),
 -            [((FILE)->_pptr - (FILE)->_pbase)])
 -          ;;
 -      esac
 -    ;;
 -  esac                          dnl opsys
 -
 -  if test $emacs_pending_output = unknown; then
 -    AC_DEFINE(PENDING_OUTPUT_COUNT(FILE), [((FILE)->__bufp - (FILE)->__buffer)])
 -  fi
 -
 -else                            dnl !emacs_glibc
 -
 -  case $opsys in
 -    cygwin | darwin | freebsd | netbsd | openbsd )
 -      AC_DEFINE(PENDING_OUTPUT_COUNT(FILE), [((FILE)->_p - (FILE)->_bf._base)])
 -      ;;
 -
 -    unixware)
 -      AC_DEFINE(PENDING_OUTPUT_COUNT(FILE), [((FILE)->__ptr - (FILE)->__base)])
 -      ;;
 -
 -    *)
 -      dnl HAVE_STDIO_EXT_H && HAVE___FPENDING
 -      if test x$ac_cv_header_stdio_ext_h = xyes && \
 -        test x$ac_cv_func___fpending = xyes; then
 -        AC_DEFINE(PENDING_OUTPUT_COUNT(FILE), [__fpending (FILE)])
 -        AC_DEFINE(DISPNEW_NEEDS_STDIO_EXT, 1,
 -          [Define if dispnew.c should include stdio_ext.h.])
 -      else
 -        AC_DEFINE(PENDING_OUTPUT_COUNT(FILE), [((FILE)->_ptr - (FILE)->_base)])
 -      fi
 -      ;;
 -  esac
 -fi                              dnl emacs_glibc
 -
 -
  dnl Used in vm-limit.c
  AH_TEMPLATE(DATA_START, [Address of the start of the data segment.])
  dnl Used in lisp.h, emacs.c, mem-limits.h
@@@ -3978,6 -4063,8 +3983,6 @@@ case $opsys i
    irix6-5)
      AC_DEFINE(PREFER_VSUSP, 1, [Define if process_send_signal should
        use VSUSP instead of VSWTCH.])
 -    AC_DEFINE(SETPGRP_RELEASES_CTTY, 1, [Define if process.c:child_setup
 -      should not call setpgrp.])
      ;;
  
    sol2-10)
diff --combined doc/emacs/ChangeLog
index dc5fa539cd1c7620586191f516c8a7c0749e1095,56001d6e29ed54f1e71a29ad446896133b292e5e..af22f0628d1e92bd712fa3e89e0df301374b7849
@@@ -1,18 -1,19 +1,24 @@@
 -2012-11-18  Dani Moncayo  <dmoncayo@gmail.com>
++2012-11-21  Dani Moncayo  <dmoncayo@gmail.com>
+       * display.texi (Auto Scrolling): Fix some inaccuracies, plus
+       clarifications (Bug#12865).
+       (Horizontal Scrolling): Clarifications.
 -2012-11-17  Dani Moncayo  <dmoncayo@gmail.com>
 +2012-11-18  Dani Moncayo  <dmoncayo@gmail.com>
  
        * mark.texi (Disabled Transient Mark): Doc fixes (Bug#12746).
  
 -2012-11-12  Chong Yidong  <cyd@gnu.org>
 +2012-11-16  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * trouble.texi (Crashing): Add information about MS-Windows and
 +      the emacs_backtrace.txt file.  (Bug#12908)
 +
 +2012-11-13  Chong Yidong  <cyd@gnu.org>
  
        * building.texi (Multithreaded Debugging): gdb-stopped-hooks is
        actually named gdb-stopped-functions.
  
 -2012-11-12  Glenn Morris  <rgm@gnu.org>
 +2012-11-13  Glenn Morris  <rgm@gnu.org>
  
        * misc.texi (Single Shell): Mention async-shell-command-buffer.
  
  
        * misc.texi (Terminal emulator): Rename `term-face' to `term'.
  
 -2012-11-09  Glenn Morris  <rgm@gnu.org>
 -
        * emacs.texi (Acknowledgments): Add profiler author.
        * ack.texi (Acknowledgments): Add some recent contributions.
  
 -2012-11-08  Chong Yidong  <cyd@gnu.org>
 +2012-11-10  Chong Yidong  <cyd@gnu.org>
  
        * files.texi (Diff Mode): Doc fixes for
        diff-delete-trailing-whitespace (Bug#12831).
  
        * trouble.texi (Crashing): Copyedits.
  
 -2012-11-08  Glenn Morris  <rgm@gnu.org>
 +2012-11-10  Glenn Morris  <rgm@gnu.org>
  
        * files.texi (Diff Mode): Trailing whitespace updates.
  
 -2012-11-07  Chong Yidong  <cyd@gnu.org>
 +2012-11-10  Chong Yidong  <cyd@gnu.org>
  
        * misc.texi (Terminal emulator): Document Term mode faces.
  
  
        * trouble.texi (Memory Full): Capitalize Buffer Menu.
  
 -2012-11-05  Eli Zaretskii  <eliz@gnu.org>
 +2012-11-10  Eli Zaretskii  <eliz@gnu.org>
  
        * display.texi (Auto Scrolling): Clarify that scroll-step is
        ignored when scroll-conservatively is set to a non-zero value.
        (Bug#12801)
  
 -2012-11-05  Chong Yidong  <cyd@gnu.org>
 +2012-11-10  Chong Yidong  <cyd@gnu.org>
  
        * dired.texi (Dired Updating): Doc fix (Bug#11744).
  
diff --combined doc/lispref/ChangeLog
index a5295adc36830586ae1ee3e95bcafbd2649c679e,b5bbd8ef93f7a3964da73c083ed16206db2dcc14..db896984c865fb9c0b2e571ea6cb2b4cc33efcf7
@@@ -1,16 -1,40 +1,33 @@@
 -      * debugging.texi (Profiling): Mention --enable-profiling (if !tex).
 -      Add some basic information about the profile report buffer.
+ 2012-11-21  Glenn Morris  <rgm@gnu.org>
 -
 -2012-11-20  Glenn Morris  <rgm@gnu.org>
 -
 -      * debugging.texi (Profiling): New section, in progress.
++      * debugging.texi (Profiling): New section.
+       (Debugging): Mention profiling in the introduction.
 -2012-11-18  Martin Rudalics  <rudalics@gmx.at>
+       * tips.texi (Compilation Tips): Move profiling to separate section.
+       * elisp.texi: Add Profiling to detailed menu.
 -2012-11-18  Paul Eggert  <eggert@cs.ucla.edu>
++2012-11-21  Martin Rudalics  <rudalics@gmx.at>
+       * windows.texi (Display Action Functions): Fix recently added
+       example.  Suggested by Michael Heerdegen.
++2012-11-21  Paul Eggert  <eggert@cs.ucla.edu>
+       Minor cleanup for times as lists of four integers.
+       * os.texi (Time Parsing): Time values can now be four integers.
  2012-11-18  Glenn Morris  <rgm@gnu.org>
  
        * loading.texi (How Programs Do Loading): Add eager macro expansion.
        * macros.texi (Expansion): Mention eager macro expansion.
  
 -2012-11-17  Glenn Morris  <rgm@gnu.org>
 -
        * minibuf.texi (Basic Completion): Mention misc completion-table funcs.
  
 -2012-11-17  Leo Liu  <sdl.web@gmail.com>
 +2012-11-18  Leo Liu  <sdl.web@gmail.com>
  
        * minibuf.texi (Programmed Completion): Doc fix for metadata
        request (Bug#12850).
  
 -2012-11-17  Glenn Morris  <rgm@gnu.org>
 +2012-11-18  Glenn Morris  <rgm@gnu.org>
  
        * display.texi (Temporary Displays): Document with-temp-buffer-window.
  
        description of display-buffer-below-selected.  Reorder actions.
        Add example (Bug#12848).
  
 -2012-11-15  Stefan Monnier  <monnier@iro.umontreal.ca>
 -
 -      * keymaps.texi (Translation Keymaps): Add a subsection "Interaction
 -      with normal keymaps" (bug#12868).
 -
 -2012-11-15  Glenn Morris  <rgm@gnu.org>
 +2012-11-16  Glenn Morris  <rgm@gnu.org>
  
        * display.texi (Face Attributes): Fix :underline COLOR description.
        (Attribute Functions): Update for set-face-underline rename.
        Tweak descriptions of face-underline-p, face-inverse-video-p.
  
 -2012-11-14  Glenn Morris  <rgm@gnu.org>
 -
        * keymaps.texi (Searching Keymaps, Tool Bar): Untabify examples,
        so they align better in info.
        (Active Keymaps, Searching Keymaps, Controlling Active Maps):
        Document set-temporary-overlay-map.
  
 -2012-11-12  Glenn Morris  <rgm@gnu.org>
 +2012-11-15  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * keymaps.texi (Translation Keymaps): Add a subsection "Interaction
 +      with normal keymaps".
 +
 +2012-11-15  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * internals.texi (Garbage Collection): Update descriptions
 +      of vectorlike_header, garbage-collect and gc-cons-threshold.
 +      (Object Internals): Explain Lisp_Object layout and the basics
 +      of an internal type system.
 +      (Buffer Internals): Update description of struct buffer.
 +
 +2012-11-13  Glenn Morris  <rgm@gnu.org>
  
        * variables.texi (Adding Generalized Variables):
        At least mention gv-define-expander and gv-letplace.
  
 -2012-11-11  Glenn Morris  <rgm@gnu.org>
 -
        * debugging.texi (Error Debugging): Mention debug-on-message.
        (Using Debugger): Mention debugger-bury-or-kill.
  
        * variables.texi (Adding Generalized Variables):
        Use standard formatting for common lisp note about setf functions.
  
 -2012-11-07  Martin Rudalics  <rudalics@gmx.at>
 +2012-11-10  Martin Rudalics  <rudalics@gmx.at>
  
        * elisp.texi (Top): Add Recombining Windows to menu.
        * windows.texi (Recombining Windows): New subsection.
        (Splitting Windows): Rewrite text on handling of window
        combinations and move it to new subsection.
  
 -2012-11-07  Chong Yidong  <cyd@gnu.org>
 +2012-11-10  Chong Yidong  <cyd@gnu.org>
  
        * searching.texi (Replacing Match): Document \? in replace-match.
  
  
        * edebug.texi (Specification List): setf is no longer CL-only.
  
 -2012-11-07  Glenn Morris  <rgm@gnu.org>
 +2012-11-10  Glenn Morris  <rgm@gnu.org>
  
        * variables.texi (Adding Generalized Variables):
        Update description of FIX-RETURN expansion.
  
 -2012-11-06  Glenn Morris  <rgm@gnu.org>
 -
        * variables.texi (Setting Generalized Variables):
        Split most of previous contents into this subsection.
        (Adding Generalized Variables): New subsection.
  
        * elisp.texi: Add Generalized Variables subsections to detailed menu.
  
 -2012-11-05  Chong Yidong  <cyd@gnu.org>
 +2012-11-10  Chong Yidong  <cyd@gnu.org>
  
        * frames.texi (Initial Parameters): Doc fix (Bug#12144).
  
 +2012-11-08  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * os.texi (Notifications): Update descriptions of
 +      notifications-notify, notifications-close-notification and
 +      notifications-get-capabilities according to latest code changes.
 +      Add notifications-get-server-information.
 +
  2012-11-03  Chong Yidong  <cyd@gnu.org>
  
        * objects.texi (General Escape Syntax): Clarify the explanation of
diff --combined doc/lispref/os.texi
index 2f06e207fc462fe37d0e6fc40cee99a771eb5be8,002632c3479c0f38dc79b48d62ba43fb00a9b8e5..7552aaccc53bfebdc5af267a7c86f6b5a85e6be5
@@@ -1373,8 -1373,8 +1373,8 @@@ on others, years as early as 1901 do wo
  @node Time Parsing
  @section Parsing and Formatting Times
  
-   These functions convert time values (lists of two or three integers)
to text in a string, and vice versa.
+   These functions convert time values to text in a string, and vice versa.
Time values are lists of two to four integers (@pxref{Time of Day}).
  
  @defun date-to-time string
  This function parses the time-string @var{string} and returns the
@@@ -2276,19 -2276,13 +2276,19 @@@ These arguments should consist of alter
  The supported keywords and values are as follows:
  
  @table @code
 +@item :bus @var{bus}
 +The D-Bus bus.  This argument is needed only if a bus other than
 +@code{:session} shall be used.
 +
  @item :title @var{title}
  The notification title.
  
  @item :body @var{text}
  The notification body text.  Depending on the implementation of the
  notification server, the text could contain HTML markups, like
 -@samp{"<b>bold text</b>"}, hyperlinks, or images.
 +@samp{"<b>bold text</b>"}, hyperlinks, or images.  Special HTML
 +characters must be encoded, as @samp{"Contact
 +&lt;postmaster@@localhost&gt;!"}.
  
  @item :app-name @var{name}
  The name of the application sending the notification.  The default is
@@@ -2323,10 -2317,7 +2323,10 @@@ When this keyword is given, the @var{ti
  interpreted as icon name.
  
  @item :category @var{category}
 -The type of notification this is, a string.
 +The type of notification this is, a string.  See the
 +@uref{http://developer.gnome.org/notification-spec/#categories,
 +Desktop Notifications Specification} for a list of standard
 +categories.
  
  @item :desktop-entry @var{filename}
  This specifies the name of the desktop filename representing the
@@@ -2429,17 -2420,13 +2429,17 @@@ A message window opens on the desktop
  @end example
  @end defun
  
 -@defun notifications-close-notification id
 +@defun notifications-close-notification id &optional bus
  This function closes a notification with identifier @var{id}.
 +@var{bus} can be a string denoting a D-Bus connection, the default is
 +@code{:session}.
  @end defun
  
 -@defun notifications-get-capabilities
 -Returns the capabilities of the notification server, a list of strings.
 -The following capabilities can be expected:
 +@defun notifications-get-capabilities &optional bus
 +Returns the capabilities of the notification server, a list of
 +symbols.  @var{bus} can be a string denoting a D-Bus connection, the
 +default is @code{:session}.  The following capabilities can be
 +expected:
  
  @table @code
  @item :actions
@@@ -2476,30 -2463,6 +2476,30 @@@ Further vendor-specific caps start wit
  @code{:x-gnome-foo-cap}.
  @end defun
  
 +@defun notifications-get-server-information &optional bus
 +Return information on the notification server, a list of strings.
 +@var{bus} can be a string denoting a D-Bus connection, the default is
 +@code{:session}.  The returned list is @code{(@var{name} @var{vendor}
 +@var{version} @var{spec-version})}.
 +
 +@table @var
 +@item name
 +The product name of the server.
 +
 +@item vendor
 +The vendor name.  For example, @samp{"KDE"}, @samp{"GNOME"}.
 +
 +@item version
 +The server's version number.
 +
 +@item spec-version
 +The specification version the server is compliant with.
 +@end table
 +
 +If @var{SPEC_VERSION} is @code{nil}, the server supports a
 +specification prior to @samp{"1.0"}.
 +@end defun
 +
  
  @node Dynamic Libraries
  @section Dynamically Loaded Libraries
diff --combined doc/lispref/windows.texi
index b8581b1cc62d6445d4de8bdf4110d75d0c5d3e6f,46b31ef0d9f8464ff08d71c8b735528e7b3a1c94..e515b24db932a8521fa11c2923946b9d513f6f8c
@@@ -1061,7 -1061,7 +1061,7 @@@ including the space earlier stolen fro
  @end smallexample
  
  @noindent
 -This can be counterintutive, in particular if @code{W4} were used for
 +This can be counterintuitive, in particular if @code{W4} were used for
  displaying a buffer only temporarily (@pxref{Temporary Displays}), and
  you want to continue working with the initial layout.
  
@@@ -2038,7 -2038,8 +2038,8 @@@ Evaluating the form above will cause @c
  follows: If `*foo*' already appears on a visible or iconified frame, it
  will reuse its window.  Otherwise, it will try to pop up a new window
  or, if that is impossible, a new frame.  If all these steps fail, it
- will try to use some existing window.
+ will proceed using whatever @code{display-buffer-base-action} and
+ @code{display-buffer-fallback-action} prescribe.
  
     Furthermore, @code{display-buffer} will try to adjust a reused window
  (provided `*foo*' was put by @code{display-buffer} there before) or a
@@@ -2431,7 -2432,7 +2432,7 @@@ buffer previously shown no longer exist
  @code{switch-to-prev-buffer} (@pxref{Window History}) to show some other
  buffer instead.
  
 -The optional argument @var{bury-or-kill} specifes how to deal with
 +The optional argument @var{bury-or-kill} specifies how to deal with
  @var{window}'s buffer.  The following values are handled:
  
  @table @code
diff --combined etc/NEWS
index a66a3858e0ece487449b22f4dc710cbb5ea2abfc,d9efc57b90764158f812f2766b2be82c7f0a774e..090715587d37b7653f3906457c2727f73d418a83
+++ b/etc/NEWS
@@@ -20,66 -20,6 +20,66 @@@ Temporary note
  When you add a new item, please add it without either +++ or ---
  so we will look at it and add it to the manual.
  
 +\f
 +* Installation Changes in Emacs 24.4
 +* Startup Changes in Emacs 24.4
 +* Changes in Emacs 24.4
 +* Editing Changes in Emacs 24.4
 +
 +\f
 +* Changes in Specialized Modes and Packages in Emacs 24.4
 +
 ++++
 +** New function `ses-rename-cell' to give SES cells arbitrary names.
 +
 +** trace-function was largely rewritten.
 +New features include:
 +- no prompting for the destination buffer, unless a prefix-arg was used.
 +- additionally to prompting for a destination buffer, when a prefix-arg is
 +  used, the user can enter a "context", i.e. Lisp expression whose value at the
 +  time the function is entered/exited will be printed along with the function
 +  name and arguments.  Useful to trace the value of (current-buffer) or
 +  (point) when the function is invoked.
 +
 +\f
 +* New Modes and Packages in Emacs 24.4
 +** New nadvice.el package offering lighter-weight advice facilities.
 +It is layered as:
 +- add-function/remove-function which can be used to add/remove code on any
 +  function-carrying place, such as process-filters or `<foo>-function' hooks.
 +- advice-add/advice-remove to add/remove a piece of advice on a named function,
 +  much like `defadvice' does.
 +
 +* Incompatible Lisp Changes in Emacs 24.4
 +
 +** nil and "unbound" are indistinguishable in symbol-function.
 +`symbol-function' never signals `void-function' any more.
 +`fboundp' returns non-nil if the symbol was `fset' to nil.
 +
 +** `defadvice' does not honor the `freeze' flag and cannot advise
 +special-forms any more.
 +
 +** `dolist' in lexical-binding mode does not bind VAR in RESULT any more.
 +VAR was bound to nil which was not tremendously useful and just lead to
 +spurious warnings about an unused var.
 +
 +* Lisp changes in Emacs 24.4
 +
 +** time-to-seconds is not obsolete any more.
 +** New function special-form-p.
 +** Docstrings can be made dynamic by adding a `dynamic-docstring-function'
 +text-property on the first char.
 +
 +** The `defalias-fset-function' property lets you catch calls to defalias
 +and redirect them to your own function instead of `fset'.
 +
 +* Changes in Emacs 24.4 on non-free operating systems
 +
 ++++
 +** The "generate a backtrace on fatal error" feature now works on MS Windows.
 +The backtrace is written to the 'emacs_backtrace.txt' file in the
 +directory where Emacs was running.
 +
  \f
  * Installation Changes in Emacs 24.3
  
@@@ -847,7 -787,7 +847,7 @@@ are deprecated and will be removed even
  ** New sampling-based Elisp profiler.
  Try M-x profiler-start, do some work, and then call M-x profiler-report.
  When finished, use M-x profiler-stop.  The sampling rate can be based on
- CPU time (only supported on some systems) or memory allocations.
+ CPU time or memory allocations.
  
  +++
  ** CL-style generalized variables are now in core Elisp.
diff --combined lisp/ChangeLog
index 3e35c8a9fcb42dd81d1793b08cef5ce73ebedc18,8502cd477e9fe42aacbcf3f93fccb68ca3eb1595..05f86ca22c0e542d834485c7fbecb7d795a9c516
 -2012-11-20  Daniel Colascione  <dancol@dancol.org>
 -
 -      * term/w32-win.el (cygwin-convert-path-from-windows): Accomodate
 -      rename of cygwin_convert_path* to cygwin_convert_file_name*.
 -      This change is a backport from trunk.
 -
 -2012-11-20  Eli Zaretskii  <eliz@gnu.org>
++2012-11-21  Eli Zaretskii  <eliz@gnu.org>
+       * simple.el (line-move): Don't call line-move-partial if
+       scroll-conservatively is in effect.  (Bug#12927)
 -2012-11-20  Michael Albinus  <michael.albinus@gmx.de>
 -
 -      * net/trampver.el (tramp-version): Downgrade to 2.2.6-24.3, in
 -      order to distinguish from trunk.
 -
 -2012-11-19  Stefan Monnier  <monnier@iro.umontreal.ca>
 -
 -      * emacs-lisp/byte-run.el (defun-declarations-alist): Don't accept
 -      non-symbols for compiler macros (yet).
++2012-11-21  Stefan Monnier  <monnier@iro.umontreal.ca>
+       * eshell/em-cmpl.el (eshell-pcomplete): Refine fix for bug#12838:
+       Fallback on completion-at-point rather than
+       pcomplete-expand-and-complete, and only if pcomplete actually failed.
+       (eshell-cmpl-initialize): Setup completion-at-point.
+       * pcomplete.el (pcomplete--entries): Obey pcomplete-ignore-case.
+       * emacs-lisp/ert.el (ert--expand-should-1): Adapt to cl-lib.
 -2012-11-19  Michael Albinus  <michael.albinus@gmx.de>
++2012-11-21  Michael Albinus  <michael.albinus@gmx.de>
+       * net/tramp-sh.el (tramp-do-copy-or-rename-file): If both files
+       are remote, check out-of-band property for both.
 -2012-11-19  Stefan Monnier  <monnier@iro.umontreal.ca>
++2012-11-21  Stefan Monnier  <monnier@iro.umontreal.ca>
+       * window.el (switch-to-buffer): Re-add the warning that was lost in the
+       code rewrite.
 -2012-11-18  Paul Eggert  <eggert@cs.ucla.edu>
++2012-11-21  Paul Eggert  <eggert@cs.ucla.edu>
+       More minor time fixes.
+       * calendar/time-date.el: Commentary fix.
+       * net/tramp-sh.el (tramp-do-file-attributes-with-ls): Undo last change;
+       too much other code depends on (0 0) time stamps.
+       * net/tramp.el (tramp-time-less-p, tramp-time-subtract):
+       Add a couple of FIXME comments.
+       Minor cleanup for times as lists of four integers.
+       * files.el (dir-locals-directory-cache):
+       * ps-bdf.el (bdf-file-mod-time, bdf-read-font-info):
+       Doc fixes.
+       * net/tramp-sh.el (tramp-do-file-attributes-with-ls):
+       * ps-bdf.el (bdf-file-newer-than-time):
+       Process four-integers time stamps, not two.  Doc fixes.
 +2012-11-20  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * uniquify.el (uniquify-managed): Use defvar-local.
 +      (rename-buffer, create-file-buffer): Advise with advice-add.
 +      (uniquify-unload-function): Unadvise accordingly.
 +
 +      * emacs-lisp/trace.el: Rewrite, use nadvice and lexical-binding.
 +      (trace-buffer): Don't purecopy.
 +      (trace-entry-message, trace-exit-message): Add `context' arg.
 +      (trace--timer): New var.
 +      (trace-make-advice): Adjust for use in nadvice.
 +      Add `context' argument.  Delay `display-buffer' via a timer.
 +      (trace-function-internal): Use advice-add.
 +      (trace--read-args): New function.
 +      (trace-function-foreground, trace-function-background): Use it.
 +      (trace-function): Rename to trace-function-foreground and redefine as
 +      an alias to that new name.
 +      (untrace-function, untrace-all): Adjust to the use of nadvice.
 +
 +      * emacs-lisp/bytecomp.el (byte-compile): Fix handling of closures.
 +
 +      * emacs-lisp/byte-run.el (defun-declarations-alist): Fix last change.
 +
 +      * subr.el (called-interactively-p-functions): New var.
 +      (internal--called-interactively-p--get-frame): New macro.
 +      (called-interactively-p, interactive-p): Rewrite in Lisp.
 +      * emacs-lisp/nadvice.el (advice--called-interactively-skip): New fun.
 +      (called-interactively-p-functions): Use it.
 +      * emacs-lisp/edebug.el (edebug--called-interactively-skip): New fun.
 +      (called-interactively-p-functions): Use it.
 +      * allout.el (allout-called-interactively-p): Don't assume
 +      called-interactively-p is a subr.
 +
 +2012-11-20  Glenn Morris  <rgm@gnu.org>
 +
 +      * profiler.el (profiler-report-mode-map): Add a menu.
 +      No need to bind `q' because we derive from special-mode.
 +      (profiler-report-find-entry): Handle calls from the menu-bar.
 +
 +2012-11-19  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/byte-run.el (defun-declarations-alist):
 +      Allow a compiler-macro to be a lambda expression.
 +
 +      * progmodes/python.el: Use cl-lib.  Move var declarations outside of
 +      eval-when-compile.
 +      (python-syntax-context): Add compiler-macro.
 +      (python-font-lock-keywords): Simplify with De Morgan.
 +
 +      * vc/diff-mode.el (diff-hunk): Don't make useless timers.
 +
 +      * files.el (load-file): Require match in minibuffer selection, as was
 +      the case in Emacs-20 before we changed the spec to allow .elc files
 +      (bug#12935).
 +
 +      * json.el: Don't require cl since we don't use it.
 +      * color.el: Don't require cl.
 +      (color-complement): `caddr' -> `nth 2'.
 +
 +      * calendar/time-date.el (time-to-seconds): De-obsolete.
 +
 +2012-11-19  Jay Belanger  <jay.p.belanger@gmail.com>
 +
 +      * calc/calc-forms.el (math-leap-year-p):  Fix formula for negative
 +      year numbers.
 +      (math-date-to-julian-dt): Adjust the initial approximation for the
 +      year to deal with the new definition of the DATE.
 +
 +2012-11-19  Daniel Colascione  <dancol@dancol.org>
 +
 +      * term/w32-win.el (cygwin-convert-path-from-windows):
 +      Accomodate rename of cygwin_convert_path* to cygwin_convert_file_name*.
 +
 +2012-11-18  Chong Yidong  <cyd@gnu.org>
 +
 +      * filecache.el (file-cache--read-list): New function.
 +      (file-cache-add-directory-list, file-cache-add-file-list)
 +      (file-cache-delete-file-list, file-cache-delete-directory-list):
 +      Use it to read a list of files or directories (Bug#12846).
 +      (file-cache-add-file, file-cache-add-directory)
 +      (file-cache-delete-file-list, file-cache-delete-file-regexp)
 +      (file-cache-delete-directory): Print an message.
 +
 +2012-11-18  Jay Belanger  <jay.p.belanger@gmail.com>
 +
 +      * calc/calc-forms.el (math-date-to-dt): Use integer date when
 +      calling `math-date-to-julian-dt' and 'math-date-to-gregorian-dt'.
 +
  2012-11-18  Glenn Morris  <rgm@gnu.org>
  
        * image.el (insert-image, insert-sliced-image): Doc fix.
  
 -2012-11-17  Chong Yidong  <cyd@gnu.org>
 +2012-11-18  Chong Yidong  <cyd@gnu.org>
  
        * emacs-lisp/syntax.el (syntax-propertize-function): Doc fix
        (Bug#12810).
  
 -2012-11-17  OKAZAKI Tetsurou  <okazaki.tetsurou@gmail.com>  (tiny change)
 +2012-11-18  OKAZAKI Tetsurou  <okazaki.tetsurou@gmail.com>  (tiny change)
  
        * vc/vc-svn.el (vc-svn-merge-news): Properly parse the merge
        response when the target file is in a subdirectory (Bug#12757).
  
 -2012-11-17  Chong Yidong  <cyd@gnu.org>
 +2012-11-18  Chong Yidong  <cyd@gnu.org>
  
        * filecache.el (file-cache-add-file-list): Doc fix (Bug#12694).
  
 -2012-11-17  Glenn Morris  <rgm@gnu.org>
 +2012-11-18  Glenn Morris  <rgm@gnu.org>
  
 -      * woman.el (woman-non-underline-faces):
        * emacs-lisp/cl-lib.el (face-underline-p):
        Use set-face-underline rather than the alias set-face-underline-p.
  
        * subr.el (with-output-to-temp-buffer):
        Add doc xref to with-temp-buffer-window.
  
 +2012-11-18  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * woman.el (woman-non-underline-faces): Use `set-face-underline'.
 +      * calc/calc.el (math-format-date-cache): Declare.
 +
 +2012-11-17  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * calc/calc-forms.el (math-julian-date-beginning)
 +      (math-julian-date-beginning-int): Implement [new date numbering].
 +
 +2012-11-17  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * descr-text.el (quail-find-key):
 +      * dired.el (desktop-file-name):
 +      * dirtrack.el (shell-prefixed-directory-name, shell-process-cd):
 +      * generic-x.el (comint-mode, comint-exec):
 +      * image-dired.el (widget-forward):
 +      * info.el (speedbar-add-expansion-list, speedbar-center-buffer-smartly)
 +      (speedbar-change-expand-button-char)
 +      (speedbar-change-initial-expansion-list, speedbar-delete-subblock)
 +      (speedbar-make-specialized-keymap, speedbar-make-tag-line):
 +      * printing.el (easy-menu-add-item, easy-menu-remove-item)
 +      (widget-field-action, widget-value-set):
 +      * speedbar.el (imenu--make-index-alist):
 +      * term.el (ring-empty-p, ring-ref, ring-insert-at-beginning)
 +      (ring-length, ring-insert):
 +      * vcursor.el (compare-windows-skip-whitespace):
 +      * woman.el (dired-get-filename):
 +      Declare functions.
 +
 +      * term/w32-win.el (cygwin-convert-path-from-windows): Fix declaration.
 +
 +2012-11-17  Jay Belanger  <jay.p.belanger@gmail.com>
 +
 +      * calc/calc.el (calc-gregorian-switch): New variable.
 +
 +      * calc/calc-forms.el (math-day-in-year, math-dt-before-p)
 +      (math-absolute-from-gregorian-dt, math-absolute-from-julian-dt)
 +      (math-date-to-julian-dt, math-date-to-gregorian-dt): New functions.
 +      (math-leap-year-p): Add option to distinguish between Julian
 +      and Gregorian calendars.
 +      (math-day-number): Use `math-day-in-year' to do the computations.
 +      (math-absolute-from-dt): Rename from `math-absolute-from-date'.
 +      Use `math-absolute-from-gregorian' and `math-absolute-from-julian'
 +      to do the computations.
 +      (math-date-to-dt): Use `math-date-to-julian-dt' and
 +      `math-date-to-gregorian-dt' to do the computations.
 +      (calcFunc-weekday, math-format-date-part): Use the new version of
 +      the DATE to determine the weekday.
 +      (calcFunc-newmonth, calcFunc-newyear): Use `calc-gregorian-switch'
 +      when necessary.
 +
 +2012-11-17  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * term/w32-win.el (w32-handle-dropped-file): Use 'file://' only on
 +      Cygwin; otherwise use 'file:'.  (Bug#12914)
 +      (cygwin-convert-path-from-windows): Declare, to avoid
 +      byte-compiler warnings.
 +
 +2012-11-17  Andreas Politz  <politza@fh-trier.de>
 +
 +      * ibuffer.el (ibuffer-mark-forward, ibuffer-unmark-forward)
 +      (ibuffer-unmark-backward, ibuffer-mark-interactive): Support plain
 +      prefix and negative numeric prefix args (Bug#12795).
 +
 +2012-11-17  Stephen Berman  <stephen.berman@gmx.net>
 +
 +      * play/gamegrid.el (gamegrid-add-score-with-update-game-score-1):
 +      Don't signal an error with a score that is too low to add to the
 +      list of top scores. (Bug#12779)
 +
 +2012-11-17  Chong Yidong  <cyd@gnu.org>
 +
 +      * help-mode.el (help-xref-interned): End on point-min (Bug#12737).
 +
 +      * filecache.el (file-cache-add-file): Handle relative file name in
 +      the argument (Bug#12694).
 +
 +2012-11-16  Jürgen Hötzel  <juergen@archlinux.org>  (tiny change)
 +
 +      * eshell/em-unix.el (eshell/mkdir): Handle "--parents" (bug#12897).
 +
  2012-11-16  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 +      * emacs-lisp/advice.el (ad-make-advised-definition): Improve last fix.
 +
        * emacs-lisp/cl-lib.el: Set more meaningful version number.
  
  2012-11-16  Martin Rudalics  <rudalics@gmx.at>
  
        * faces.el (face-underline-p): Use face-attribute-specified-or.
  
 -2012-11-15  Juanma Barranquero  <lekktu@gmail.com>
 +2012-11-16  Juanma Barranquero  <lekktu@gmail.com>
  
        * emacs-lisp/cl-macs.el (cl-loop, cl-do, cl-do*): Doc fixes.
  
 -2012-11-15  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2012-11-16  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * emacs-lisp/cl-macs.el (cl-flet, cl-flet*): Fix docstring (bug#12895).
  
 -2012-11-15  Glenn Morris  <rgm@gnu.org>
 +2012-11-16  Glenn Morris  <rgm@gnu.org>
  
        * eshell/em-cmpl.el (eshell-pcomplete): New command.  (Bug#12838)
        (eshell-cmpl-initialize): Bind eshell-pcomplete to TAB, C-i.
        * term.el (ansi-term): Don't let C-x escape-char binding
        clobber the more standard C-c binding.  (Bug#12842)
  
 -2012-11-15  Stefan Monnier  <monnier@iro.umontreal.ca>
 -
 -      * emacs-lisp/gv.el (setf): Fix debug spec for multiple assignments
 -      (bug#12879).
 -
 -2012-11-14  Glenn Morris  <rgm@gnu.org>
 -
        * subr.el (set-temporary-overlay-map): Doc fix.
  
 -2012-11-13  Martin Rudalics  <rudalics@gmx.at>
 +2012-11-16  Martin Rudalics  <rudalics@gmx.at>
  
        * window.el (record-window-buffer)
        (display-buffer-record-window): When copying the markers to
        window-point preserve window-point-insertion-type. (Bug#12588)
  
 -2012-11-13  Glenn Morris  <rgm@gnu.org>
 +2012-11-16  Glenn Morris  <rgm@gnu.org>
  
        * emacs-lisp/eieio-datadebug.el (eieio-debug-methodinvoke):
        * net/tramp-gvfs.el (tramp-gvfs-dbus-event-error):
        Use new names for hooks rather than obsolete aliases.
  
 -2012-11-12  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2012-11-15  Daniel Colascione  <dancol@dancol.org>
 +
 +      * term/w32-win.el (w32-handle-dropped-file): Use a "file://"
 +      prefix instead of "file:" so that when FILE-NAME begins with "//",
 +      as it does when the target file is on a network share, url-handler
 +      isn't confused.
 +
 +2012-11-15  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/advice.el (ad-definition-type): Make sure we don't use
 +      a preactivated advice from an old advice.el; they're not compatible!
 +
 +2012-11-15  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * emacs-lisp/nadvice.el (advice--make-interactive-form):
 +      Fix string-spec case.
 +
 +      * emacs-lisp/advice.el (ad-make-advised-definition): Fix undefined case.
 +
 +2012-11-15  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/nadvice.el: Add buffer-local support to add-function.
 +      (advice--buffer-local-function-sample): New var.
 +      (advice--set-buffer-local, advice--buffer-local): New functions.
 +      (add-function, remove-function): Use them.
 +
 +2012-11-15  Drew Adams  <drew.adams@oracle.com>
 +
 +      * imenu.el (imenu--split-submenus): Use imenu--subalist-p (bug#12717).
 +
 +2012-11-15  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/cl-macs.el (cl--transform-lambda): Defend against
 +      potential binding of print-gensym to t, and prettify (back)quotes in
 +      case they appear in args's default values (bug#12884).
 +
 +2012-11-14  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/nadvice.el: Add around advice for interactive specs.
 +      (advice-eval-interactive-spec): New function.
 +      (advice--make-interactive-form): Support around advice (bug#12844).
 +
 +2012-11-14  Dmitry Gutov  <dgutov@yandex.ru>
 +
 +      * progmodes/ruby-mode.el (ruby-expr-beg): Make heredoc detection
 +      more strict.  Add docstring.
 +      (ruby-expression-expansion-re): Extract from
 +      `ruby-match-expression-expansion'.
 +      (ruby-syntax-propertize-function): After everything else, search
 +      for expansions in string literals, mark their insides as
 +      whitespace syntax and save match data for font-lock.
 +      (ruby-font-lock-keywords): Use the 2nd group from expression
 +      expansion matches.
 +      (ruby-match-expression-expansion): Use the match data saved to the
 +      text property in ruby-syntax-propertize-function.
 +
 +2012-11-14  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/gv.el (setf): Fix debug spec for multiple assignments
 +      (bug#12879).
 +
 +2012-11-13  Dmitry Gutov  <dgutov@yandex.ru>
 +
 +      * progmodes/ruby-mode.el (ruby-move-to-block): Looks for a block
 +      start/end keyword a bit harder.  Works with different values of N.
 +      Add more comments.
 +      (ruby-end-of-block): Update accordingly.
 +
 +2012-11-13  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * woman.el (woman-file-name): Don't mess with unread-command-events
 +      (bug#12861).
 +
 +      * emacs-lisp/advice.el: Layer on top of nadvice.el.
 +      Remove out of date self-require hack.
 +      (ad-do-advised-functions): Use simple `dolist'.
 +      (ad-advice-name, ad-advice-protected, ad-advice-enabled)
 +      (ad-advice-definition): Redefine as functions.
 +      (ad-advice-classes): Move before first use.
 +      (ad-make-origname, ad-set-orig-definition, ad-clear-orig-definition)
 +      (ad-make-mapped-call, ad-make-advised-docstring,ad-make-plain-docstring)
 +      (ad--defalias-fset): Remove functions.
 +      (ad-make-advicefunname, ad-clear-advicefunname-definition): New funs.
 +      (ad-get-orig-definition): Rewrite.
 +      (ad-make-advised-definition-docstring): Change base docstring.
 +      (ad-real-orig-definition): Rewrite.
 +      (ad-map-arglists): Change name of called function.
 +      (ad--make-advised-docstring): Redirect `function' from ad-Advice-...
 +      (ad-make-advised-definition): Simplify.
 +      (ad-assemble-advised-definition): Tweak for new calling context.
 +      (ad-activate-advised-definition): Setup ad-Advice-* i.s.o ad-Orig-*.
 +      (ad--defalias-fset): Rename from ad-handle-definition.  Make it set the
 +      function and call ad-activate if needed.
 +      (ad-activate, ad-deactivate): Don't call ad-handle-definition any more.
 +      (ad-recover): Clear ad-Advice-* instead of ad-Orig-*.
 +      (ad-compile-function): Compile ad-Advice-*.
 +      (ad-activate-on-top-level, ad-with-auto-activation-disabled): Remove.
 +      (ad-start-advice, ad-stop-advice): Remove.
 +
 +2012-11-13  Dmitry Gutov  <dgutov@yandex.ru>
 +
 +      * progmodes/ruby-mode.el (ruby-add-log-current-method): Print the
 +      period before class method names, not after.  Remove handling of
 +      one impossible case.  Add comments.
 +
 +2012-11-13  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/advice.el: Remove support for freezing.
 +      (ad-make-freeze-docstring, ad-make-freeze-definition): Remove functions.
 +      (ad-make-single-advice-docstring, ad-defadvice-flags, defadvice):
 +      Remove support for `freeze'.
 +
 +      * emacs-lisp/cl.el (dolist, dotimes, declare): Use advice-add to
 +      override the default.
 +      * emacs-lisp/cl-macs.el (cl-dolist, cl-dotimes): Rewrite without using
 +      cl--dotimes/dolist.
 +      * subr.el (dolist, dotimes, declare): Redefine them normally, even when
 +      `cl' is loaded.
 +
 +      * emacs-lisp/nadvice.el (advice--normalize): New function, extracted
 +      from add-advice.
 +      (advice--strip-macro): New function.
 +      (advice--defalias-fset): Use them to handle macros.
 +      (advice-add): Use them.
 +      (advice-member-p): Correctly handle macros.
 +
 +2012-11-13  Dmitry Gutov  <dgutov@yandex.ru>
 +
 +      * progmodes/ruby-mode.el (ruby-font-lock-keywords):
 +      Never font-lock the beginning of singleton class as heredoc.
 +
 +2012-11-13  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * emacs-lisp/gv.el (gv-define-simple-setter): One more fix (bug#12871).
  
 -2012-11-12  Wolfgang Jenkner  <wjenkner@inode.at>
 +2012-11-13  Wolfgang Jenkner  <wjenkner@inode.at>
  
        * ansi-color.el (ansi-color-apply-sequence): Implement SGR codes
 -      39 and 49.  This fixes bug#12792.  Also, treat unimplemented
 -      parameters as 0, thereby restoring the behavior of revisions prior
 -      to 2012-08-15T03:33:55Z!monnier@iro.umontreal.ca.
 +      39 and 49 (bug#12792).  Also, treat unimplemented parameters as 0,
 +      thereby restoring the behavior of revisions prior to 2012-08-15T03:33:55Z!monnier@iro.umontreal.ca.
  
 -2012-11-12  Fabián Ezequiel Gallina  <fgallina@cuca>
 +2012-11-13  Fabián Ezequiel Gallina  <fgallina@cuca>
  
        Fix end-of-defun misbehavior.
        * progmodes/python.el (python-nav-beginning-of-defun): Rename from
        with new fixed python-nav-{end,beginning}-of-defun.  Stop scanning
        parent defuns as soon as possible.
  
 -2012-11-12  Glenn Morris  <rgm@gnu.org>
 +2012-11-13  Glenn Morris  <rgm@gnu.org>
  
        * progmodes/flymake.el (flymake-error-bitmap)
        (flymake-warning-bitmap, flymake-fringe-indicator-position): Doc fixes.
        (flymake-error-bitmap, flymake-warning-bitmap): Fix :types.
  
 -2012-11-12  Dmitry Gutov  <dgutov@yandex.ru>
 +2012-11-13  Dmitry Gutov  <dgutov@yandex.ru>
  
        * progmodes/ruby-mode.el (ruby-move-to-block): When moving
        backward, always stop at indentation.  Reverts the change from
        2012-08-12T22:06:56Z!monnier@iro.umontreal.ca (Bug#12851).
  
 -2012-11-11  Glenn Morris  <rgm@gnu.org>
 +2012-11-13  Glenn Morris  <rgm@gnu.org>
  
        * ibuffer.el (ibuffer-mode-map, ibuffer-mode):
        Add ibuffer-filter-by-derived-mode.
        * window.el (fit-frame-to-buffer, fit-frame-to-buffer-bottom-margin):
        * emacs-lisp/debug.el (debugger-bury-or-kill): Fix :version.
  
 -2012-11-10  Leo Liu  <sdl.web@gmail.com>
 +2012-11-12  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * ido.el (ido-set-matches-1): Fix split-string args to avoid
 -      performance issue.  (Bug#12796)
 +      * emacs-lisp/nadvice.el: New package.
 +      * subr.el (special-form-p): New function.
 +      * emacs-lisp/elp.el: Use lexical-binding and advice-add.
 +      (elp-all-instrumented-list): Remove var.
 +      (elp-not-profilable): Remove elp-wrapper.
 +      (elp-profilable-p): Use autoloadp and special-form-p.
 +      (elp--advice-name): New const.
 +      (elp-instrument-function): Use advice-add.
 +      (elp--instrumented-p): New predicate.
 +      (elp-restore-function): Use advice-remove.
 +      (elp-restore-all, elp-reset-all): Use mapatoms.
 +      (elp-set-master): Use elp--instrumented-p.
 +      (elp--make-wrapper): Rename from elp-wrapper, return a function
 +      suitable for advice-add.  Use cl-inf.
 +      (elp-results): Use mapatoms+elp--instrumented-p.
 +      * emacs-lisp/debug.el: Use lexical-binding and advice-add.
 +      (debug-function-list): Remove var.
 +      (debug): Rename arg, and then let-bind it explicitly inside.
 +      (debugger-setup-buffer): Rename arg.
 +      (debugger-setup-buffer): Adjust counts to new debug-on-entry setup.
 +      (debugger-frame-number): Adjust to new debug-on-entry setup.
 +      (debug--implement-debug-on-entry): Rename from
 +      implement-debug-on-entry, add argument.
 +      (debugger-special-form-p): Remove, use special-form-p instead.
 +      (debug-on-entry): Use advice-add.
 +      (debug--function-list): New function.
 +      (cancel-debug-on-entry): Use it, along with advice-remove.
 +      (debug-arglist, debug-convert-byte-code, debug-on-entry-1): Remove.
 +      (debugger-list-functions): Use debug--function-list instead of
 +      debug-function-list.
 +      * emacs-lisp/advice.el (ad-save-real-definition): Remove, unused.
 +      (ad-special-form-p): Remove, use special-form-p instead.
 +      (ad-set-advice-info): Use add-function and remove-function.
 +      (ad--defalias-fset): Adjust accordingly.
  
  2012-11-10  Glenn Morris  <rgm@gnu.org>
  
 +      * mail/emacsbug.el (report-emacs-bug-tracker-url)
 +      (report-emacs-bug-bug-alist, report-emacs-bug-choice-widget)
 +      (report-emacs-bug-create-existing-bugs-buffer)
 +      (report-emacs-bug-parse-query-results)
 +      (report-emacs-bug-query-existing-bugs): Remove.  (Bug#7449)
 +
        * term.el (term-default-fg-color, term-default-bg-color):
        Make obsolete, rather than just saying "deprecated" in the doc.
  
        (term-default-fg-color, term-default-bg-color, term-ansi-reset):
        Update all users.
  
 -2012-11-09  Jan Djärv  <jan.h.d@swipnet.se>
 -
 -      * server.el (server-create-window-system-frame): Improve comment.
 -
 -2012-11-08  Jan Djärv  <jan.h.d@swipnet.se>
 +2012-11-10  Jan Djärv  <jan.h.d@swipnet.se>
  
        * server.el (server-create-window-system-frame): Handle Nextstep
        specially (Bug#12780).
  
 -2012-11-08  Glenn Morris  <rgm@gnu.org>
 +2012-11-10  Glenn Morris  <rgm@gnu.org>
  
        * mail/emacsbug.el (report-emacs-bug-query-existing-bugs):
        Unautoload, and make obsolete.  (Bug#7449)
  
 -2012-11-08  Chong Yidong  <cyd@gnu.org>
 +2012-11-10  Chong Yidong  <cyd@gnu.org>
  
        * vc/diff-mode.el (diff-delete-trailing-whitespace): Rewrite, and
        rename from diff-remove-trailing-whitespace (Bug#12831).
  
 -2012-11-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2012-11-10  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * emacs-lisp/advice.el: Require `cl-lib' at run-time to fix
        miscompilation of trace.el.
  
 -2012-11-08  Glenn Morris  <rgm@gnu.org>
 +2012-11-10  Glenn Morris  <rgm@gnu.org>
  
        * vc/diff-mode.el (diff-remove-trailing-whitespace): Doc fix.
  
 -2012-11-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2012-11-10  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * emacs-lisp/gv.el (gv-define-simple-setter): Fix last change
        (bug#12812).
  
 -2012-11-07  Chong Yidong  <cyd@gnu.org>
 +2012-11-10  Chong Yidong  <cyd@gnu.org>
  
        * minibuf-eldef.el (minibuffer-eldef-shorten-default): Convert to
        a defcustom with an appropriate :set function.
        (minibuffer-default--in-prompt-regexps): New function.
  
 -2012-11-07  Glenn Morris  <rgm@gnu.org>
 +2012-11-10  Glenn Morris  <rgm@gnu.org>
  
        * emacs-lisp/cl.el (define-setf-expander, defsetf)
        (define-modify-macro): Doc fixes.
        * emacs-lisp/gv.el (gv-letplace): Fix doc typo.
        (gv-define-simple-setter): Update doc of `fix-return'.
  
 -2012-11-07  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2012-11-10  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * emacs-lisp/gv.el (gv-define-simple-setter): Don't evaluate `val'
        twice when `fix-return' is set (bug#12813).
        * emacs-lisp/cl.el (defsetf): Pass the third arg to
        gv-define-simple-setter (bug#12812).
  
 -2012-11-06  Stefan Monnier  <monnier@iro.umontreal.ca>
 -
        * woman.el (woman-decode-region): Disable adaptive-fill when rendering
        (bug#12756).
  
 -2012-11-06  Glenn Morris  <rgm@gnu.org>
 +2012-11-10  Glenn Morris  <rgm@gnu.org>
  
        * emacs-lisp/gv.el (gv-define-setter): Fix doc typo.
  
 -2012-11-05  Glenn Morris  <rgm@gnu.org>
 -
        * emacs-lisp/cl-extra.el (cl-prettyexpand):
        * emacs-lisp/cl-lib.el (cl-proclaim, cl-declaim):
        * emacs-lisp/cl-macs.el (cl-destructuring-bind, cl-locally)
  
        * emacs-lisp/cl-extra.el (cl-maplist, cl-mapcan): Doc fix.
  
 +2012-11-10  Leo Liu  <sdl.web@gmail.com>
 +
 +      * ido.el (ido-set-matches-1): Improve flex matching performance by
 +      removing backtracking in the regexp (suggested by Stefan).  (Bug#12796)
 +
 +2012-11-09  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/advice.el (ad-set-advice-info): Set defalias-fset-function.
 +      (ad--defalias-fset): New function.
 +      (ad-safe-fset): Remove.
 +      (ad-make-freeze-definition): Use cl-letf*.
 +
 +2012-11-09  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * subr.el (dolist): Don't bind VAR in RESULT.
 +
 +      * emacs-lisp/advice.el: Miscellaneous cleanup.  Use lexical-binding.
 +      (fset, documentation): Don't save real def since we don't advise.
 +      (ad-do-advised-functions): Remove problematic `result-form'.
 +      (ad-safe-fset): `ad-real-fset' => `fset'.
 +      (ad-read-advised-function): Don't assume that ad-do-advised-functions
 +      uses CL's dolist internally.
 +      (ad-arglist): Remove unused arg `name'.
 +      (ad-docstring, ad-make-advised-docstring):
 +      `ad-real-documentation' => `documentation'.
 +      (warning-suppress-types): Declare.
 +      (ad-set-arguments): Simple CSE.
 +      (ad-recover-normality): Sanity check.
 +
 +      * emacs-lisp/bytecomp.el (byte-compile-out-toplevel): Don't turn
 +      (funcall '(lambda ..) ..) into ((lambda ..) ..).
 +
 +2012-11-09  Vincent Belaïche  <vincentb1@users.sourceforge.net>
 +
 +      * ses.el: symbol to coordinate mapping is made by symbol property
 +      `ses-cell'.  This means that the same mapping is done for all SES
 +      sheets.  That is good enough for cells with standard A1 names, but
 +      not for named cell.  So a hash map is added for the latter.
 +      (defconst ses-localvars): Add local variable ses--named-cell-hashmap
 +      (ses-sym-rowcol): Use hashmap for named cell.
 +      (ses-is-cell-sym-p): New defun.
 +      (ses-decode-cell-symbol): New defun.
 +      (ses-create-cell-variable): Add cell to hashmap when name is not
 +      A1-like.
 +      (ses-rename-cell): Check that cell new name is not already in
 +      spreadsheet with the use of ses-is-cell-sym-p
 +      (ses-rename-cell): Use hash map for named cells, but accept also
 +      renaming back to A1-like.
 +
 +2012-11-09  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/advice.el: Use new dynamic docstrings.
 +      (ad-make-advised-definition-docstring, ad-advised-definition-p):
 +      Use dynamic-docstring-function instead of ad-advice-info.
 +      (ad--make-advised-docstring): New function extracted from
 +      ad-make-advised-docstring.
 +      (ad-make-advised-docstring): Use it.
 +      * progmodes/sql.el (sql--make-help-docstring): New function, extracted
 +      from sql-help.
 +      (sql-help): Use it with dynamic-docstring-function.
 +
 +      * env.el (env--substitute-vars-regexp): Don't use rx (for bootstrap).
 +
 +2012-11-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * files.el (hack-one-local-variable--obsolete): New function.
 +      (hack-one-local-variable): Use it for obsolete settings.
 +
 +      * subr.el (locate-user-emacs-file): If both old and new name exist, use
 +      the new name.
 +
 +      * progmodes/js.el (js--filling-paragraph): New var.
 +      (c-forward-sws, c-backward-sws, c-beginning-of-macro): Advise.
 +      (js-c-fill-paragraph): Prefer advice to cl-letf so the rebinding is
 +      less sneaky.
 +
 +2012-11-08  Julien Danjou  <julien@danjou.info>
 +
 +      * progmodes/ruby-mode.el (auto-mode-alist): Add Rakefile in
 +      `auto-mode-alist' (Bug#12835).
 +
 +2012-11-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/perl-mode.el (perl-prettify-symbols): New defcustom.
 +      (perl--prettify-symbols-alist): New const.
 +      (perl--font-lock-compose-symbol, perl--font-lock-symbols-keywords):
 +      New functions.
 +      (perl-font-lock-keywords-2): Use them.
 +      (perl-electric-noindent-p): New function.
 +      (perl-mode): Use it to set up electric-indent-mode.
 +      (perl-electric-terminator, perl-indent-command): Mark obsolete.
 +      (perl-mode-map): Remove bindings for them.
 +      (perl-imenu-generic-expression, perl-outline-level):
 +      Match functions&packages in column>0.
 +
 +      * env.el (env--substitute-vars-regexp): New const.
 +      (substitute-env-vars): Use it.  Add `only-defined' arg.
 +      * net/tramp.el (tramp-replace-environment-variables): Use it.
 +
 +      * emacs-lisp/bytecomp.el (byte-compile-initial-macro-environment):
 +      Byte-compile *before* eval in eval-and-compile.
 +      (byte-compile-log-warning): Remove redundant inhibit-read-only.
 +      (byte-compile-file-form-autoload): Don't hide actual definition.
 +      (byte-compile-maybe-guarded): Accept `functionp' as well.
 +
 +      * emacs-lisp/gv.el (gv-ref, gv-deref): New function and macro.
 +
 +2012-11-07  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * notifications.el (notifications-get-server-information-method):
 +      New defconst.
 +      (notifications-get-capabilities): Fix docstring.
 +      (notifications-get-server-information): New defun.
 +
 +2012-11-06  Agustín Martín Domingo  <agustin.martin@hispalinux.es>
 +
 +      * textmodes/ispell.el (ispell-region): Standard re-indent for better
 +      readability.
 +
 +      * textmodes/ispell.el: Experimental support for support debugging.
 +      (ispell-create-debug-buffer): Create a `ispell-debug-buffer' debug
 +      buffer for ispell.
 +      (ispell-print-if-debug): New function to print stuff to
 +      `ispell-debug-buffer' if debugging is enabled.
 +      (ispell-region, ispell-process-line): Use `ispell-print-if-debug' to
 +      show some debugging info.
 +      (ispell-buffer-with-debug): New function that creates a debugging
 +      buffer and calls `ispell-buffer' with debugging enabled.
 +
 +      * textmodes/ispell.el (ispell-region): Do not prefix sent string by
 +      comment in autoconf mode. (Bug#12768)
 +
 +2012-11-06  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * emacs-lisp/byte-opt.el (toplevel): Add compare-window-configurations,
 +      frame-first-window, frame-root-window, frame-selected-window,
 +      minibuffer-selected-window, minibuffer-window,
 +      window-absolute-pixel-edges, window-at, window-body-height,
 +      window-body-width, window-display-table, window-combination-limit,
 +      window-frame, window-fringes, window-inside-absolute-pixel-edges,
 +      window-inside-edges, window-inside-pixel-edges, window-left-child,
 +      window-left-column, window-margins, window-next-buffers,
 +      window-next-sibling, window-new-normal, window-new-total,
 +      window-normal-size, window-parameter, window-parameters, window-parent,
 +      window-pixel-edges, window-point, window-prev-buffers,
 +      window-prev-sibling, window-redisplay-end-trigger, window-scroll-bars,
 +      window-start, window-text-height, window-top-child, window-top-line,
 +      window-total-height, window-total-width and window-use-time to the list
 +      of functions without side-effects.
 +      (toplevel): Add window-valid-p to the list of error-free functions
 +      without side-effects.
 +
 +2012-11-05  Agustín Martín Domingo  <agustin.martin@hispalinux.es>
 +
 +      * textmodes/ispell.el (ispell-program-name):
 +      Update spellchecker parameters when customized.
 +
 +2012-11-04  Glenn Morris  <rgm@gnu.org>
 +
 +      * vc/vc-svn.el (vc-svn-state-heuristic): Avoid calling svn.  (Bug#7850)
 +
 +2012-11-04  Chong Yidong  <cyd@gnu.org>
 +
 +      * bookmark.el (bookmark-bmenu-switch-other-window): Avoid binding
 +      same-window-* variables.
 +
 +2012-11-04  Juri Linkov  <juri@jurta.org>
 +
 +      * isearch.el (isearch-help-for-help, isearch-describe-bindings)
 +      (isearch-describe-key, isearch-describe-mode): Use a display
 +      action instead of binding same-window-* variables (Bug#10040).
 +
  2012-11-03  Glenn Morris  <rgm@gnu.org>
  
        * emacs-lisp/cl-macs.el (cl-parse-loop-clause):
        * window.el (switch-to-visible-buffer)
        (switch-to-buffer-preserve-window-point): Fix doc-strings.
  
 +2012-11-03  Glenn Morris  <rgm@gnu.org>
 +
 +      * emacs-lisp/cl-lib.el (cl--random-time):
 +      Rename from cl-random-time.  (Bug#12773)
 +      (cl--gensym-counter, cl--random-state): Update callers.
 +      * emacs-lisp/cl-extra.el (cl-make-random-state): Update callers.
 +
 +2012-11-03  Chong Yidong  <cyd@gnu.org>
 +
 +      * cus-start.el: Make cursor-type customizable (Bug#11633).
 +
 +2012-11-02  Glenn Morris  <rgm@gnu.org>
 +
 +      * filecache.el: No need to load find-lisp when compiling.
 +      (find-lisp-find-files): Autoload it.
 +      (file-cache-add-directory-recursively): Don't require find-lisp.
 +
 +      * image.el (image-type-from-file-name): Trivial simplification.
 +
 +      * emacs-lisp/bytecomp.el (byte-compile-eval):
 +      Decouple "noruntime" and "cl-functions" warnings.
 +
  2012-11-01  Stephen Berman  <stephen.berman@gmx.net>
  
        * play/gomoku.el (gomoku-display-statistics): Update mode line
  2012-10-19  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * minibuffer.el (minibuffer-force-complete): Make the next completion use
 -      the same completion-field (bug@12221).
 +      the same completion-field (bug#12221).
  
  2012-10-19  Martin Rudalics  <rudalics@gmx.at>
  
index b953a6fb2b0d87d029557d5f6af74f4bad74de9a,6e967bd8c792414f0b6c869523eff2c18c08a456..9cac659d848a6521cae14fb6a4a1a4bd2b84dda1
  ;; value equal to HIGH * 2^16 + LOW + USEC * 10^-6 + PSEC * 10^-12
  ;; seconds, where missing components are treated as zero.  HIGH can be
  ;; negative, either because the value is a time difference, or because
- ;; the machine supports negative time stamps that fall before the
- ;; epoch.  The macro `with-decoded-time-value' and the
- ;; function `encode-time-value' make it easier to deal with these
- ;; three formats.  See `time-subtract' for an example of how to use
- ;; them.
+ ;; the machine supports negative time stamps that fall before the epoch.
+ ;; The macro `with-decoded-time-value' and the function
+ ;; `encode-time-value' make it easier to deal with these formats.
+ ;; See `time-subtract' for an example of how to use them.
  
  ;;; Code:
  
@@@ -134,7 -133,9 +133,7 @@@ If DATE lacks timezone information, GM
  ;;;###autoload(if (or (featurep 'emacs)
  ;;;###autoload        (and (fboundp 'float-time)
  ;;;###autoload             (subrp (symbol-function 'float-time))))
 -;;;###autoload    (progn
 -;;;###autoload      (defalias 'time-to-seconds 'float-time)
 -;;;###autoload      (make-obsolete 'time-to-seconds 'float-time "21.1"))
 +;;;###autoload    (defalias 'time-to-seconds 'float-time)
  ;;;###autoload  (autoload 'time-to-seconds "time-date"))
  
  (eval-when-compile
diff --combined lisp/files.el
index 40eddec469b4ed039e71c2848dac0ee85aee3c3e,51f8256f71ac9cec92c8323f1c1f53cef03dc858..496f9bf8fa47fa7306a4130e16c3789f95258b4b
@@@ -730,7 -730,7 +730,7 @@@ The path separator is colon in GNU and 
    ;; This is a case where .elc makes a lot of sense.
    (interactive (list (let ((completion-ignored-extensions
                            (remove ".elc" completion-ignored-extensions)))
 -                     (read-file-name "Load file: "))))
 +                     (read-file-name "Load file: " nil nil 'lambda))))
    (load (expand-file-name file) nil nil t))
  
  (defun locate-file (filename path &optional suffixes predicate)
@@@ -3387,39 -3387,30 +3387,39 @@@ It is dangerous if either of these cond
                                (setq ok t)))
                          ok))))))))
  
 +(defun hack-one-local-variable--obsolete (var)
 +  (let ((o (get var 'byte-obsolete-variable)))
 +    (when o
 +      (let ((instead (nth 0 o))
 +            (since (nth 2 o)))
 +        (message "%s is obsolete%s; %s"
 +                 var (if since (format " (since %s)" since))
 +                 (if (stringp instead) instead
 +                   (format "use `%s' instead" instead)))))))
 +
  (defun hack-one-local-variable (var val)
    "Set local variable VAR with value VAL.
  If VAR is `mode', call `VAL-mode' as a function unless it's
  already the major mode."
 -  (cond ((eq var 'mode)
 -       (let ((mode (intern (concat (downcase (symbol-name val))
 -                                   "-mode"))))
 -         (unless (eq (indirect-function mode)
 -                     (indirect-function major-mode))
 -           (if (memq mode minor-mode-list)
 -               ;; A minor mode must be passed an argument.
 -               ;; Otherwise, if the user enables the minor mode in a
 -               ;; major mode hook, this would toggle it off.
 -               (funcall mode 1)
 -             (funcall mode)))))
 -      ((eq var 'eval)
 -       (save-excursion (eval val)))
 -      (t
 -         ;; Make sure the string has no text properties.
 -         ;; Some text properties can get evaluated in various ways,
 -         ;; so it is risky to put them on with a local variable list.
 -         (if (stringp val)
 -             (set-text-properties 0 (length val) nil val))
 -         (set (make-local-variable var) val))))
 +  (pcase var
 +    (`mode
 +     (let ((mode (intern (concat (downcase (symbol-name val))
 +                                 "-mode"))))
 +       (unless (eq (indirect-function mode)
 +                   (indirect-function major-mode))
 +         (funcall mode))))
 +    (`eval
 +     (pcase val
 +       (`(add-hook ',hook . ,_) (hack-one-local-variable--obsolete hook)))
 +     (save-excursion (eval val)))
 +    (_
 +     (hack-one-local-variable--obsolete var)
 +     ;; Make sure the string has no text properties.
 +     ;; Some text properties can get evaluated in various ways,
 +     ;; so it is risky to put them on with a local variable list.
 +     (if (stringp val)
 +         (set-text-properties 0 (length val) nil val))
 +     (set (make-local-variable var) val))))
  \f
  ;;; Handling directory-local variables, aka project settings.
  
@@@ -3433,7 -3424,7 +3433,7 @@@ DIR is the name of the directory
  CLASS is the name of a variable class (a symbol).
  MTIME is the recorded modification time of the directory-local
  variables file associated with this entry.  This time is a list
- of two integers (the same format as `file-attributes'), and is
+ of integers (the same format as `file-attributes'), and is
  used to test whether the cache entry is still valid.
  Alternatively, MTIME can be nil, which means the entry is always
  considered valid.")
diff --combined lisp/net/tramp.el
index caaae5d553e5b3d54e1c5470746ef85e4615f8e9,6157da20db71ab38808a4d5922322409e39f4cb8..d6f2177b03b5a56fa43381f902888ded23207abf
@@@ -1748,26 -1748,20 +1748,26 @@@ value of `default-file-modes', without 
    (or (file-modes filename)
        (logand (default-file-modes) (tramp-compat-octal-to-decimal "0666"))))
  
 -(defun tramp-replace-environment-variables (filename)
 -  "Replace environment variables in FILENAME.
 +(defalias 'tramp-replace-environment-variables
 +  (if (ignore-errors
 +        (equal "${ tramp?}" (substitute-env-vars "${ tramp?}" 'only-defined)))
 +      (lambda (filename)
 +        "Like `substitute-env-vars' with `only-defined' non-nil."
 +        (substitute-env-vars filename 'only-defined))
 +    (lambda (filename)
 +      "Replace environment variables in FILENAME.
  Return the string with the replaced variables."
 -  (save-match-data
 -    (let ((idx (string-match "$\\(\\w+\\)" filename)))
 -      ;; `$' is coded as `$$'.
 -      (when (and idx
 -               (or (zerop idx) (not (eq ?$ (aref filename (1- idx)))))
 -               (getenv (match-string 1 filename)))
 -      (setq filename
 -            (replace-match
 -             (substitute-in-file-name (match-string 0 filename))
 -             t nil filename)))
 -      filename)))
 +      (save-match-data
 +        (let ((idx (string-match "$\\(\\w+\\)" filename)))
 +          ;; `$' is coded as `$$'.
 +          (when (and idx
 +                     (or (zerop idx) (not (eq ?$ (aref filename (1- idx)))))
 +                     (getenv (match-string 1 filename)))
 +            (setq filename
 +                  (replace-match
 +                   (substitute-in-file-name (match-string 0 filename))
 +                   t nil filename)))
 +          filename)))))
  
  ;; In XEmacs, electricity is implemented via a key map for ?/ and ?~,
  ;; which calls corresponding functions (see minibuf.el).
@@@ -3767,6 -3761,7 +3767,7 @@@ Invokes `password-read' if available, `
      ("oct" . 10) ("nov" . 11) ("dec" . 12))
    "Alist mapping month names to integers.")
  
+ ;; FIXME: Shouldn't this also look at any subseconds parts of T1 and T2?
  ;;;###tramp-autoload
  (defun tramp-time-less-p (t1 t2)
    "Say whether time value T1 is less than time value T2."
        (and (= (car t1) (car t2))
           (< (nth 1 t1) (nth 1 t2)))))
  
+ ;; FIXME: Shouldn't this also look at any subseconds parts of T1 and T2?
  (defun tramp-time-subtract (t1 t2)
    "Subtract two time values.
  Return the difference in the format of a time value."
diff --combined nt/ChangeLog
index 4f9e8a2663c2f4e5f0131bf57ecfc82a807ebf65,f11f1fc5fc5565c6eedfaef0c01033450435713c..0eda3a699d600486eb4d605a8a19183819a84262
@@@ -1,79 -1,14 +1,87 @@@
 -2012-11-20  Eli Zaretskii  <eliz@gnu.org>
++2012-11-21  Eli Zaretskii  <eliz@gnu.org>
 -      * nmake.defs: Use !if, not !ifdef.  See
++      * nmake.defs: Use !if, not !ifdef.  For the details, see
+       http://lists.gnu.org/archive/html/help-emacs-windows/2012-11/msg00027.html
 -      for the details.
 -      * inc/stdint.h (INTPTR_MIN): Define for MSVC.
++      * inc/stdint.h (INTPTR_MIN):
++      (PTRDIFF_MIN) [!__GNUC__]: Define for MSVC.
 -2012-11-19  Eli Zaretskii  <eliz@gnu.org>
 +2012-11-18  Eli Zaretskii  <eliz@gnu.org>
  
 -      * inc/stdint.h (PTRDIFF_MIN) [!__GNUC__]: Define for MSVC.
 +      * inc/unistd.h: Don't include fcntl.h and don't define O_RDWR.
 +
 +2012-11-17  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * config.nt: Sync with autogen/config.in.
 +      (HAVE_FPATHCONF): Remove.
 +
 +2012-11-17  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Assume POSIX 1003.1-1988 or later for fcntl.h (Bug#12881).
 +      * inc/sys/socket.h (O_NONBLOCK): Rename from O_NDELAY, since the
 +      POSIX name for this flag is O_NONBLOCK.  All uses changed.
 +      * inc/unistd.h (O_RDWR, O_NOCTTY): New macros.  Like AT_FDCWD etc.
 +      these really should be moved to a replacement <fcntl.h> if and
 +      when that gets implemented.  In the meantime, include <fcntl.h>
 +      to make sure we don't override its definitions.
 +
 +2012-11-17  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * inc/sys/wait.h: New file, with prototype of waitpid and
 +      definitions of macros it needs.
 +
 +      * inc/ms-w32.h (wait): Don't define, 'wait' is not used anymore.
 +      (sys_wait): Remove prototype.
 +
 +      * config.nt (HAVE_SYS_WAIT_H): Define to 1.
 +
 +2012-11-17  Dani Moncayo  <dmoncayo@gmail.com>
 +
 +      * zipdist.bat (ZIP_CHECK): Remove unused label.  When invoking 7z
 +      to check if it's installed, redirect standard output and standard
 +      error to the null device.
 +      (ZIP_DIST): Don't build the "barebin" distribution.
 +
 +2012-11-15  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * config.nt: Sync with autogen/config.in.
 +      (GETGROUPS_T, GETGROUPS_ZERO_BUG, GNULIB_FACCESSAT, HAVE_ACCESS)
 +      (HAVE_EACCESS, HAVE_FACCESSAT, HAVE_GETGROUPS, HAVE_LIBGEN_H):
 +      New macros.
 +
 +2012-11-14  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * inc/unistd.h (faccessat): Add prototype.
 +      (AT_FDCWD, AT_EACCESS, AT_SYMLINK_NOFOLLOW): New macros; the first
 +      2 moved from ms-w32.h.
 +
 +      * inc/ms-w32.h (AT_FDCWD, AT_EACCESS, faccessat): Remove macros.
 +
 +2012-11-14  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Use faccessat, not access, when checking file permissions (Bug#12632).
 +      * inc/ms-w32.h (AT_FDCWD, AT_EACCESS): New symbols.
 +      (access): Remove.
 +      (faccessat): New macro.
 +
 +2012-11-05  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * inc/unistd.h (tcgetpgrp, setsid): Provide prototypes.
 +
 +2012-11-05  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * config.nt: Sync with autogen/config.in.
 +      (DISPNEW_NEEDS_STDIO_EXT, GETPGRP_VOID, HAVE_SETPGID, HAVE_SETSID)
 +      (PENDING_OUTPUT_COUNT, SETPGRP_RELEASES_CTTY): Remove.
 +
 +2012-11-04  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * config.nt: Sync with autogen/config.in.
 +      (GNULIB_CLOSE_STREAM, HAVE_DECL___FPENDING): New macros.
 +
 +2012-11-03  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * config.nt (PENDING_OUTPUT_N_BYTES): Define.
  
  2012-11-01  Eli Zaretskii  <eliz@gnu.org>
  
diff --combined src/ChangeLog
index 332656fcf00164926b4194f74507ce25d13c83c3,f7cb0fe850fc3ef6a9f49dfbd72b46173e12b57c..c16a4dc87ce37740f5493ed31bbad8ed44794470
 -2012-11-20  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-20  Ken Brown  <kbrown@cornell.edu>
++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
+       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)
        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
diff --combined src/emacs.c
index d69dbfda7bfbdccef80ff066a13233f69d058b55,f533c3ae983c80b4f65eabd7822599b3f078ee50..b2b193e3a4fe013d03f366dad631c5cc893f771c
@@@ -27,7 -27,6 +27,7 @@@ along with GNU Emacs.  If not, see <htt
  #include <sys/file.h>
  #include <unistd.h>
  
 +#include <close-stream.h>
  #include <ignore-value.h>
  
  #include "lisp.h"
@@@ -95,6 -94,10 +95,6 @@@ extern void moncontrol (int mode)
  #include <sys/personality.h>
  #endif
  
 -#ifndef O_RDWR
 -#define O_RDWR 2
 -#endif
 -
  static const char emacs_version[] = VERSION;
  static const char emacs_copyright[] = COPYRIGHT;
  
@@@ -672,22 -675,6 +672,22 @@@ void (*__malloc_initialize_hook) (void
  
  #endif /* DOUG_LEA_MALLOC */
  
 +/* Close standard output and standard error, reporting any write
 +   errors as best we can.  This is intended for use with atexit.  */
 +static void
 +close_output_streams (void)
 +{
 +  if (close_stream (stdout) != 0)
 +    {
 +      fprintf (stderr, "Write error to standard output: %s\n",
 +             strerror (errno));
 +      fflush (stderr);
 +      _exit (EXIT_FAILURE);
 +    }
 +
 +   if (close_stream (stderr) != 0)
 +     _exit (EXIT_FAILURE);
 +}
  
  /* ARGSUSED */
  int
@@@ -715,7 -702,7 +715,7 @@@ main (int argc, char **argv
    stack_base = &dummy;
  #endif
  
- #if defined (USE_GTK) && defined (G_SLICE_ALWAYS_MALLOC)
+ #ifdef G_SLICE_ALWAYS_MALLOC
    /* This is used by the Cygwin build.  */
    setenv ("G_SLICE", "always-malloc", 1);
  #endif
      unexec_init_emacs_zone ();
  #endif
  
 +  atexit (close_output_streams);
 +
    sort_args (argc, argv);
    argc = 0;
    while (argv[argc]) argc++;
@@@ -1097,7 -1082,9 +1097,7 @@@ Using an Emacs configured with --with-x
         that it is not accessible to programs started from .emacs.  */
        fcntl (daemon_pipe[1], F_SETFD, FD_CLOEXEC);
  
 -#ifdef HAVE_SETSID
        setsid ();
 -#endif
  #else /* DOS_NT */
        fprintf (stderr, "This platform does not support the -daemon flag.\n");
        exit (1);
  
        /* Called before syms_of_fileio, because it sets up Qerror_condition.  */
        syms_of_data ();
 +      syms_of_fns ();    /* Before syms_of_charset which uses hashtables.  */
        syms_of_fileio ();
        /* Before syms_of_coding to initialize Vgc_cons_threshold.  */
        syms_of_alloc ();
  
        init_window_once ();    /* Init the window system.  */
  #ifdef HAVE_WINDOW_SYSTEM
 -      init_fringe_once ();    /* Swap bitmaps if necessary. */
 +      init_fringe_once ();    /* Swap bitmaps if necessary.  */
  #endif /* HAVE_WINDOW_SYSTEM */
      }
  
        syms_of_lread ();
        syms_of_print ();
        syms_of_eval ();
 -      syms_of_fns ();
        syms_of_floatfns ();
  
        syms_of_buffer ();
@@@ -1880,6 -1867,8 +1880,6 @@@ all of which are called before Emacs i
      exit_code = (XINT (arg) < 0
                 ? XINT (arg) | INT_MIN
                 : XINT (arg) & INT_MAX);
 -  else if (noninteractive && (fflush (stdout) || ferror (stdout)))
 -    exit_code = EXIT_FAILURE;
    else
      exit_code = EXIT_SUCCESS;
    exit (exit_code);
@@@ -1909,7 -1898,7 +1909,7 @@@ shut_down_emacs (int sig, Lisp_Object s
    /* If we are controlling the terminal, reset terminal modes.  */
  #ifndef DOS_NT
    {
 -    pid_t pgrp = EMACS_GETPGRP (0);
 +    pid_t pgrp = getpgrp ();
      pid_t tpgrp = tcgetpgrp (0);
      if ((tpgrp != -1) && tpgrp == pgrp)
        {
diff --combined src/fileio.c
index 572f6d8ef832beff91be92e51b34de511c7d3423,a04eb8ecea1b92e53a1b725f6ab396970362f800..e1a7cf55e280f8c7adaa2b84f65b82bc2e919ab5
@@@ -315,6 -315,7 +315,7 @@@ Given a Unix syntax file name, returns 
    register const char *beg;
  #else
    register char *beg;
+   Lisp_Object tem_fn;
  #endif
    register const char *p;
    Lisp_Object handler;
          p = beg + strlen (beg);
        }
      }
-   dostounix_filename (beg);
- #endif /* DOS_NT */
+   tem_fn = ENCODE_FILE (make_specified_string (beg, -1, p - beg,
+                                              STRING_MULTIBYTE (filename)));
+   dostounix_filename (SSDATA (tem_fn));
+   return DECODE_FILE (tem_fn);
+ #else  /* DOS_NT */
    return make_specified_string (beg, -1, p - beg, STRING_MULTIBYTE (filename));
+ #endif        /* DOS_NT */
  }
  
  DEFUN ("file-name-nondirectory", Ffile_name_nondirectory,
@@@ -951,7 -955,18 +955,18 @@@ filesystem tree, not (expand-file-name 
  #ifdef DOS_NT
          /* Make sure directories are all separated with /, but
             avoid allocation of a new string when not required. */
-         dostounix_filename (nm);
+         if (multibyte)
+           {
+             Lisp_Object tem_name = make_specified_string (nm, -1, strlen (nm),
+                                                           multibyte);
+             tem_name = ENCODE_FILE (tem_name);
+             dostounix_filename (SSDATA (tem_name));
+             tem_name = DECODE_FILE (tem_name);
+             memcpy (nm, SSDATA (tem_name), SBYTES (tem_name) + 1);
+           }
+         else
+           dostounix_filename (nm);
  #ifdef WINDOWSNT
          if (IS_DIRECTORY_SEP (nm[1]))
            {
        target[0] = '/';
        target[1] = ':';
        }
-     dostounix_filename (target);
- #endif /* DOS_NT */
      result = make_specified_string (target, -1, o - target, multibyte);
+     result = ENCODE_FILE (result);
+     dostounix_filename (SSDATA (result));
+     result = DECODE_FILE (result);
+ #else  /* !DOS_NT */
+     result = make_specified_string (target, -1, o - target, multibyte);
+ #endif /* !DOS_NT */
    }
  
    /* Again look to see if the file name has special constructs in it
@@@ -1587,8 -1605,18 +1605,18 @@@ those `/' is discarded.  */
    memcpy (nm, SDATA (filename), SBYTES (filename) + 1);
  
  #ifdef DOS_NT
-   dostounix_filename (nm);
-   substituted = (strcmp (nm, SDATA (filename)) != 0);
+   {
+     Lisp_Object encoded_filename = ENCODE_FILE (filename);
+     Lisp_Object tem_fn;
+     dostounix_filename (SDATA (encoded_filename));
+     tem_fn = DECODE_FILE (encoded_filename);
+     nm = alloca (SBYTES (tem_fn) + 1);
+     memcpy (nm, SDATA (tem_fn), SBYTES (tem_fn) + 1);
+     substituted = (memcmp (nm, SDATA (filename), SBYTES (filename)) != 0);
+     if (substituted)
+       filename = tem_fn;
+   }
  #endif
    endp = nm + SBYTES (filename);
  
@@@ -2425,7 -2453,15 +2453,7 @@@ On Unix, this is a name starting with 
  bool
  check_existing (const char *filename)
  {
 -#ifdef DOS_NT
 -  /* The full emulation of Posix 'stat' is too expensive on
 -     DOS/Windows, when all we want to know is whether the file exists.
 -     So we use 'access' instead, which is much more lightweight.  */
 -  return (access (filename, F_OK) >= 0);
 -#else
 -  struct stat st;
 -  return (stat (filename, &st) >= 0);
 -#endif
 +  return faccessat (AT_FDCWD, filename, F_OK, AT_EACCESS) == 0;
  }
  
  /* Return true if file FILENAME exists and can be executed.  */
  static bool
  check_executable (char *filename)
  {
 -#ifdef DOS_NT
 -  struct stat st;
 -  if (stat (filename, &st) < 0)
 -    return 0;
 -  return ((st.st_mode & S_IEXEC) != 0);
 -#else /* not DOS_NT */
 -#ifdef HAVE_EUIDACCESS
 -  return (euidaccess (filename, 1) >= 0);
 -#else
 -  /* Access isn't quite right because it uses the real uid
 -     and we really want to test with the effective uid.
 -     But Unix doesn't give us a right way to do it.  */
 -  return (access (filename, 1) >= 0);
 -#endif
 -#endif /* not DOS_NT */
 +  return faccessat (AT_FDCWD, filename, X_OK, AT_EACCESS) == 0;
  }
  
 -/* Return true if file FILENAME exists and can be written.  */
 +/* Return true if file FILENAME exists and can be accessed
 +   according to AMODE, which should include W_OK.
 +   On failure, return false and set errno.  */
  
  static bool
 -check_writable (const char *filename)
 +check_writable (const char *filename, int amode)
  {
  #ifdef MSDOS
 +  /* FIXME: an faccessat implementation should be added to the
 +     DOS/Windows ports and this #ifdef branch should be removed.  */
    struct stat st;
    if (stat (filename, &st) < 0)
      return 0;
 +  errno = EPERM;
    return (st.st_mode & S_IWRITE || S_ISDIR (st.st_mode));
  #else /* not MSDOS */
 -#ifdef HAVE_EUIDACCESS
 -  bool res = (euidaccess (filename, 2) >= 0);
 +  bool res = faccessat (AT_FDCWD, filename, amode, AT_EACCESS) == 0;
  #ifdef CYGWIN
 -  /* euidaccess may have returned failure because Cygwin couldn't
 +  /* faccessat may have returned failure because Cygwin couldn't
       determine the file's UID or GID; if so, we return success. */
    if (!res)
      {
 +      int faccessat_errno = errno;
        struct stat st;
        if (stat (filename, &st) < 0)
          return 0;
        res = (st.st_uid == -1 || st.st_gid == -1);
 +      errno = faccessat_errno;
      }
  #endif /* CYGWIN */
    return res;
 -#else /* not HAVE_EUIDACCESS */
 -  /* Access isn't quite right because it uses the real uid
 -     and we really want to test with the effective uid.
 -     But Unix doesn't give us a right way to do it.
 -     Opening with O_WRONLY could work for an ordinary file,
 -     but would lose for directories.  */
 -  return (access (filename, 2) >= 0);
 -#endif /* not HAVE_EUIDACCESS */
  #endif /* not MSDOS */
  }
  
@@@ -2523,6 -2575,9 +2551,6 @@@ See also `file-exists-p' and `file-attr
  {
    Lisp_Object absname;
    Lisp_Object handler;
 -  int desc;
 -  int flags;
 -  struct stat statbuf;
  
    CHECK_STRING (filename);
    absname = Fexpand_file_name (filename, Qnil);
      return call2 (handler, Qfile_readable_p, absname);
  
    absname = ENCODE_FILE (absname);
 -
 -#if defined (DOS_NT) || defined (macintosh)
 -  /* Under MS-DOS, Windows, and Macintosh, open does not work for
 -     directories.  */
 -  if (access (SDATA (absname), 0) == 0)
 -    return Qt;
 -  return Qnil;
 -#else /* not DOS_NT and not macintosh */
 -  flags = O_RDONLY;
 -#ifdef O_NONBLOCK
 -  /* Opening a fifo without O_NONBLOCK can wait.
 -     We don't want to wait.  But we don't want to mess wth O_NONBLOCK
 -     except in the case of a fifo, on a system which handles it.  */
 -  desc = stat (SSDATA (absname), &statbuf);
 -  if (desc < 0)
 -    return Qnil;
 -  if (S_ISFIFO (statbuf.st_mode))
 -    flags |= O_NONBLOCK;
 -#endif
 -  desc = emacs_open (SSDATA (absname), flags, 0);
 -  if (desc < 0)
 -    return Qnil;
 -  emacs_close (desc);
 -  return Qt;
 -#endif /* not DOS_NT and not macintosh */
 +  return (faccessat (AT_FDCWD, SSDATA (absname), R_OK, AT_EACCESS) == 0
 +        ? Qt : Qnil);
  }
  
 -/* Having this before file-symlink-p mysteriously caused it to be forgotten
 -   on the RT/PC.  */
  DEFUN ("file-writable-p", Ffile_writable_p, Sfile_writable_p, 1, 1, 0,
         doc: /* Return t if file FILENAME can be written or created by you.  */)
    (Lisp_Object filename)
      return call2 (handler, Qfile_writable_p, absname);
  
    encoded = ENCODE_FILE (absname);
 -  if (check_existing (SSDATA (encoded)))
 -    return (check_writable (SSDATA (encoded))
 -          ? Qt : Qnil);
 +  if (check_writable (SSDATA (encoded), W_OK))
 +    return Qt;
 +  if (errno != ENOENT)
 +    return Qnil;
  
    dir = Ffile_name_directory (absname);
 +  eassert (!NILP (dir));
  #ifdef MSDOS
 -  if (!NILP (dir))
 -    dir = Fdirectory_file_name (dir);
 +  dir = Fdirectory_file_name (dir);
  #endif /* MSDOS */
  
    dir = ENCODE_FILE (dir);
    /* The read-only attribute of the parent directory doesn't affect
       whether a file or directory can be created within it.  Some day we
       should check ACLs though, which do affect this.  */
 -  return (access (SDATA (dir), D_OK) < 0) ? Qnil : Qt;
 +  return file_directory_p (SDATA (dir)) ? Qt : Qnil;
  #else
 -  return (check_writable (!NILP (dir) ? SSDATA (dir) : "")
 -        ? Qt : Qnil);
 +  return check_writable (SSDATA (dir), W_OK | X_OK) ? Qt : Qnil;
  #endif
  }
  \f
@@@ -2651,7 -2731,8 +2679,7 @@@ Symbolic links to directories count as 
  See `file-symlink-p' to distinguish symlinks.  */)
    (Lisp_Object filename)
  {
 -  register Lisp_Object absname;
 -  struct stat st;
 +  Lisp_Object absname;
    Lisp_Object handler;
  
    absname = expand_and_dir_to_file (filename, BVAR (current_buffer, directory));
  
    absname = ENCODE_FILE (absname);
  
 -  if (stat (SSDATA (absname), &st) < 0)
 -    return Qnil;
 -  return S_ISDIR (st.st_mode) ? Qt : Qnil;
 +  return file_directory_p (SSDATA (absname)) ? Qt : Qnil;
 +}
 +
 +/* Return true if FILE is a directory or a symlink to a directory.  */
 +bool
 +file_directory_p (char const *file)
 +{
 +#ifdef WINDOWSNT
 +  /* This is cheaper than 'stat'.  */
 +  return faccessat (AT_FDCWD, file, D_OK, AT_EACCESS) == 0;
 +#else
 +  struct stat st;
 +  return stat (file, &st) == 0 && S_ISDIR (st.st_mode);
 +#endif
  }
  
  DEFUN ("file-accessible-directory-p", Ffile_accessible_directory_p,
@@@ -2691,65 -2761,21 +2719,65 @@@ if the directory so specified exists an
  searchable directory.  */)
    (Lisp_Object filename)
  {
 +  Lisp_Object absname;
    Lisp_Object handler;
 -  bool tem;
 -  struct gcpro gcpro1;
 +
 +  CHECK_STRING (filename);
 +  absname = Fexpand_file_name (filename, Qnil);
  
    /* If the file name has special constructs in it,
       call the corresponding file handler.  */
 -  handler = Ffind_file_name_handler (filename, Qfile_accessible_directory_p);
 +  handler = Ffind_file_name_handler (absname, Qfile_accessible_directory_p);
    if (!NILP (handler))
 -    return call2 (handler, Qfile_accessible_directory_p, filename);
 +    return call2 (handler, Qfile_accessible_directory_p, absname);
  
 -  GCPRO1 (filename);
 -  tem = (NILP (Ffile_directory_p (filename))
 -       || NILP (Ffile_executable_p (filename)));
 -  UNGCPRO;
 -  return tem ? Qnil : Qt;
 +  absname = ENCODE_FILE (absname);
 +  return file_accessible_directory_p (SSDATA (absname)) ? Qt : Qnil;
 +}
 +
 +/* If FILE is a searchable directory or a symlink to a
 +   searchable directory, return true.  Otherwise return
 +   false and set errno to an error number.  */
 +bool
 +file_accessible_directory_p (char const *file)
 +{
 +#ifdef DOS_NT
 +  /* There's no need to test whether FILE is searchable, as the
 +     searchable/executable bit is invented on DOS_NT platforms.  */
 +  return file_directory_p (file);
 +#else
 +  /* On POSIXish platforms, use just one system call; this avoids a
 +     race and is typically faster.  */
 +  ptrdiff_t len = strlen (file);
 +  char const *dir;
 +  bool ok;
 +  int saved_errno;
 +  USE_SAFE_ALLOCA;
 +
 +  /* Normally a file "FOO" is an accessible directory if "FOO/." exists.
 +     There are three exceptions: "", "/", and "//".  Leave "" alone,
 +     as it's invalid.  Append only "." to the other two exceptions as
 +     "/" and "//" are distinct on some platforms, whereas "/", "///",
 +     "////", etc. are all equivalent.  */
 +  if (! len)
 +    dir = file;
 +  else
 +    {
 +      /* Just check for trailing '/' when deciding whether to append '/'.
 +       That's simpler than testing the two special cases "/" and "//",
 +       and it's a safe optimization here.  */
 +      char *buf = SAFE_ALLOCA (len + 3);
 +      memcpy (buf, file, len);
 +      strcpy (buf + len, "/." + (file[len - 1] == '/'));
 +      dir = buf;
 +    }
 +
 +  ok = check_existing (dir);
 +  saved_errno = errno;
 +  SAFE_FREE ();
 +  errno = saved_errno;
 +  return ok;
 +#endif
  }
  
  DEFUN ("file-regular-p", Ffile_regular_p, Sfile_regular_p, 1, 1, 0,
@@@ -3046,8 -3072,10 +3074,8 @@@ Use the current time if TIMESTAMP is ni
      if (set_file_times (-1, SSDATA (encoded_absname), t, t))
        {
  #ifdef MSDOS
 -        struct stat st;
 -
          /* Setting times on a directory always fails.  */
 -        if (stat (SSDATA (encoded_absname), &st) == 0 && S_ISDIR (st.st_mode))
 +        if (file_directory_p (SSDATA (encoded_absname)))
            return Qnil;
  #endif
          report_file_error ("Setting file times", Fcons (absname, Qnil));
@@@ -5076,7 -5104,7 +5104,7 @@@ See Info node `(elisp)Modification Time
    struct stat st;
    Lisp_Object handler;
    Lisp_Object filename;
 -  EMACS_TIME mtime, diff;
 +  EMACS_TIME mtime;
  
    if (NILP (buf))
      b = current_buffer;
    mtime = (stat (SSDATA (filename), &st) == 0
           ? get_stat_mtime (&st)
           : time_error_value (errno));
 -  if ((EMACS_TIME_EQ (mtime, b->modtime)
 -       /* If both exist, accept them if they are off by one second.  */
 -       || (EMACS_TIME_VALID_P (mtime) && EMACS_TIME_VALID_P (b->modtime)
 -         && ((diff = (EMACS_TIME_LT (mtime, b->modtime)
 -                      ? sub_emacs_time (b->modtime, mtime)
 -                      : sub_emacs_time (mtime, b->modtime))),
 -             EMACS_TIME_LE (diff, make_emacs_time (1, 0)))))
 +  if (EMACS_TIME_EQ (mtime, b->modtime)
        && (st.st_size == b->modtime_size
            || b->modtime_size < 0))
      return Qt;
diff --combined src/w32.c
index 94cf472a4aeaffd1b597cb92f02522275f77c1b8,1c3331516d4f036d5b5474482613bdde7de3c128..b51022c60013b0b560f8748d5274245a99389be7
+++ b/src/w32.c
@@@ -119,9 -119,10 +119,10 @@@ typedef struct _PROCESS_MEMORY_COUNTERS
  #include <aclapi.h>
  
  #ifdef _MSC_VER
- /* MSVC doesn't provide the definition of REPARSE_DATA_BUFFER, except
-    on ntifs.h, which cannot be included because it triggers conflicts
-    with other Windows API headers.  So we define it here by hand.  */
+ /* MSVC doesn't provide the definition of REPARSE_DATA_BUFFER and the
+    associated macros, except on ntifs.h, which cannot be included
+    because it triggers conflicts with other Windows API headers.  So
+    we define it here by hand.  */
  
  typedef struct _REPARSE_DATA_BUFFER {
      ULONG  ReparseTag;
      } DUMMYUNIONNAME;
  } REPARSE_DATA_BUFFER, *PREPARSE_DATA_BUFFER;
  
+ #define FILE_DEVICE_FILE_SYSTEM       9
+ #define METHOD_BUFFERED               0
+ #define FILE_ANY_ACCESS               0x00000000
+ #define CTL_CODE(t,f,m,a)       (((t)<<16)|((a)<<14)|((f)<<2)|(m))
+ #define FSCTL_GET_REPARSE_POINT \
+   CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 42, METHOD_BUFFERED, FILE_ANY_ACCESS)
  #endif
  
  /* TCP connection support.  */
@@@ -1597,7 -1604,7 +1604,7 @@@ init_environment (char ** argv
         see if it succeeds.  But I think that's too much to ask.  */
  
        /* MSVCRT's _access crashes with D_OK.  */
 -      if (tmp && sys_access (tmp, D_OK) == 0)
 +      if (tmp && faccessat (AT_FDCWD, tmp, D_OK, AT_EACCESS) == 0)
        {
          char * var = alloca (strlen (tmp) + 8);
          sprintf (var, "TMPDIR=%s", tmp);
@@@ -2708,20 -2715,16 +2715,20 @@@ logon_network_drive (const char *path
    WNetAddConnection2 (&resource, NULL, NULL, CONNECT_INTERACTIVE);
  }
  
 -/* Shadow some MSVC runtime functions to map requests for long filenames
 -   to reasonable short names if necessary.  This was originally added to
 -   permit running Emacs on NT 3.1 on a FAT partition, which doesn't support
 -   long file names.  */
 -
 +/* Emulate faccessat(2).  */
  int
 -sys_access (const char * path, int mode)
 +faccessat (int dirfd, const char * path, int mode, int flags)
  {
    DWORD attributes;
  
 +  if (dirfd != AT_FDCWD
 +      && !(IS_DIRECTORY_SEP (path[0])
 +         || IS_DEVICE_SEP (path[1])))
 +    {
 +      errno = EBADF;
 +      return -1;
 +    }
 +
    /* MSVCRT implementation of 'access' doesn't recognize D_OK, and its
       newer versions blow up when passed D_OK.  */
    path = map_w32_filename (path, NULL);
       to get the attributes of its target file.  Note: any symlinks in
       PATH elements other than the last one are transparently resolved
       by GetFileAttributes below.  */
 -  if ((volume_info.flags & FILE_SUPPORTS_REPARSE_POINTS) != 0)
 +  if ((volume_info.flags & FILE_SUPPORTS_REPARSE_POINTS) != 0
 +      && (flags & AT_SYMLINK_NOFOLLOW) == 0)
      path = chase_symlinks (path);
  
    if ((attributes = GetFileAttributes (path)) == -1)
        }
        return -1;
      }
 -  if ((mode & X_OK) != 0 && !is_exec (path))
 +  if ((mode & X_OK) != 0
 +      && !(is_exec (path) || (attributes & FILE_ATTRIBUTE_DIRECTORY) != 0))
      {
        errno = EACCES;
        return -1;
    return 0;
  }
  
 +/* Shadow some MSVC runtime functions to map requests for long filenames
 +   to reasonable short names if necessary.  This was originally added to
 +   permit running Emacs on NT 3.1 on a FAT partition, which doesn't support
 +   long file names.  */
 +
  int
  sys_chdir (const char * path)
  {
@@@ -2971,7 -2967,7 +2978,7 @@@ sys_mktemp (char * template
        {
          int save_errno = errno;
          p[0] = first_char[i];
 -        if (sys_access (template, 0) < 0)
 +        if (faccessat (AT_FDCWD, template, F_OK, AT_EACCESS) < 0)
            {
              errno = save_errno;
              return template;
@@@ -4022,7 -4018,7 +4029,7 @@@ symlink (char const *filename, char con
      {
        /* Non-absolute FILENAME is understood as being relative to
         LINKNAME's directory.  We need to prepend that directory to
 -       FILENAME to get correct results from sys_access below, since
 +       FILENAME to get correct results from faccessat below, since
         otherwise it will interpret FILENAME relative to the
         directory where the Emacs process runs.  Note that
         make-symbolic-link always makes sure LINKNAME is a fully
        strncpy (tem, linkfn, p - linkfn);
        tem[p - linkfn] = '\0';
        strcat (tem, filename);
 -      dir_access = sys_access (tem, D_OK);
 +      dir_access = faccessat (AT_FDCWD, tem, D_OK, AT_EACCESS);
      }
    else
 -    dir_access = sys_access (filename, D_OK);
 +    dir_access = faccessat (AT_FDCWD, filename, D_OK, AT_EACCESS);
  
    /* Since Windows distinguishes between symlinks to directories and
       to files, we provide a kludgy feature: if FILENAME doesn't
@@@ -5854,7 -5850,7 +5861,7 @@@ fcntl (int s, int cmd, int options
    check_errno ();
    if (fd_info[s].flags & FILE_SOCKET)
      {
 -      if (cmd == F_SETFL && options == O_NDELAY)
 +      if (cmd == F_SETFL && options == O_NONBLOCK)
        {
          unsigned long nblock = 1;
          int rc = pfn_ioctlsocket (SOCK_HANDLE (s), FIONBIO, &nblock);
diff --combined src/w32term.h
index 83535b8faa3e00f9deb0e95fad6aa8f2f33b37e2,9b5a4a0189ac196f72d300220a5801e0193c6cfe..ce709c1231d87feebe7ab2a3658accfb6876b869
@@@ -415,8 -415,9 +415,8 @@@ extern struct w32_output w32term_displa
  
  struct scroll_bar {
  
 -  /* These fields are shared by all vectors.  */
 -  EMACS_INT size_from_Lisp_Vector_struct;
 -  struct Lisp_Vector *next_from_Lisp_Vector_struct;
 +  /* This field is shared by all vectors.  */
 +  struct vectorlike_header header;
  
    /* The window we're a scroll bar for.  */
    Lisp_Object window;
    Lisp_Object fringe_extended_p;
  };
  
 -/* The number of elements a vector holding a struct scroll_bar needs.  */
 -#define SCROLL_BAR_VEC_SIZE                                   \
 -  ((sizeof (struct scroll_bar)                                        \
 -    - sizeof (EMACS_INT) - sizeof (struct Lisp_Vector *))     \
 -   / word_size)
 -
  /* Turning a lisp vector value into a pointer to a struct scroll_bar.  */
  #define XSCROLL_BAR(vec) ((struct scroll_bar *) XVECTOR (vec))
  
@@@ -751,7 -758,7 +751,7 @@@ extern int w32_system_caret_y
  typedef BOOL (CALLBACK *LOCALE_ENUMPROCA)(LPSTR);
  typedef BOOL (CALLBACK *LOCALE_ENUMPROCW)(LPWSTR);
  BOOL WINAPI EnumSystemLocalesA(LOCALE_ENUMPROCA,DWORD);
- BOOL WINAPI EnumSystemLocalesW(LOCALE_ENUMPROCW,DWORD)
+ BOOL WINAPI EnumSystemLocalesW(LOCALE_ENUMPROCW,DWORD);
  #ifdef UNICODE
  #define EnumSystemLocales EnumSystemLocalesW
  #else