emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master c3ed7ce 5/9: Merge from origin/emacs-25


From: Paul Eggert
Subject: [Emacs-diffs] master c3ed7ce 5/9: Merge from origin/emacs-25
Date: Mon, 02 May 2016 01:19:47 +0000

branch: master
commit c3ed7cea0a43ab86c9d3b1627878055844bc8656
Merge: 07fafe1 16e5e8e
Author: Paul Eggert <address@hidden>
Commit: Paul Eggert <address@hidden>

    Merge from origin/emacs-25
    
    16e5e8e Fix last change to isearch-update (bug#23406)
    b755d98 Autoload cursor-sensor-inhibit (bug#23406)
    b52ebd4 org-map-entries: Fix org-agenda-prepare-buffers call
    86aa409 Followup for last commit in the user manual
    7004459 Improve doc string of 'set-goal-column'
    ccdaf04 Fix the MSDOS build
    ffe701c Remove \= from format string (bug#18190)
    1c58fa1 Fix variable-pitch font on MS-Windows
    c6077bf Restore follow-scroll-up/down to scrolling by the combined si...
    b671e21 Revert unneeded change which harms syntactic parsing.  This f...
    48b24c9 Correct indentation of ids in a C++ enum after a protection k...
    5c3534f * lisp/window.el (window--process-window-list): No-op if no p...
    734fb3a Port dumping to NetBSD with PaX
    0255a70 Don't mistake `for' inside a function for a part of array com...
    
    # Conflicts:
    #   src/Makefile.in
---
 config.bat                       |   27 ++++++--
 configure.ac                     |   38 ++++++++---
 doc/emacs/basic.texi             |    9 +--
 lisp/emacs-lisp/cursor-sensor.el |    1 +
 lisp/emacs-lisp/eieio.el         |    2 +-
 lisp/eshell/esh-cmd.el           |    4 +-
 lisp/faces.el                    |    6 +-
 lisp/follow.el                   |  138 +++++++++++++++++++++++++++++---------
 lisp/international/mule-cmds.el  |    2 +-
 lisp/isearch.el                  |    3 -
 lisp/man.el                      |    4 +-
 lisp/org/org.el                  |    4 +-
 lisp/progmodes/cc-engine.el      |   20 +++---
 lisp/progmodes/compile.el        |    2 +-
 lisp/progmodes/js.el             |    6 +-
 lisp/simple.el                   |    3 +-
 lisp/term/internal.el            |   30 +++++----
 lisp/textmodes/ispell.el         |    2 +-
 lisp/vc/diff.el                  |    2 +-
 lisp/window.el                   |   58 ++++++++--------
 msdos/sed1v2.inp                 |  119 ++++++++++++++++----------------
 msdos/sed2v2.inp                 |    7 +-
 msdos/sed3v2.inp                 |   13 ++--
 msdos/sed6.inp                   |   28 +++-----
 msdos/sedadmin.inp               |   14 ++--
 msdos/sedleim.inp                |   10 ++-
 msdos/sedlibmk.inp               |   34 +++++-----
 msdos/sedlisp.inp                |    4 ++
 src/Makefile.in                  |   18 +++--
 src/atimer.c                     |    4 ++
 src/conf_post.h                  |    3 +
 src/deps.mk                      |    4 +-
 src/dosfns.h                     |    4 ++
 src/emacs.c                      |    1 +
 src/filelock.c                   |   19 ++++++
 src/fns.c                        |    5 ++
 src/frame.c                      |   11 +--
 src/lread.c                      |    4 ++
 src/msdos.c                      |   36 +++++-----
 src/msdos.h                      |   14 ++++
 src/process.c                    |   39 ++++++-----
 src/w16select.c                  |    5 +-
 test/manual/indent/js.js         |    8 +++
 43 files changed, 479 insertions(+), 286 deletions(-)

diff --git a/config.bat b/config.bat
index 04fce0f..a5bea71 100644
--- a/config.bat
+++ b/config.bat
@@ -174,7 +174,7 @@ junk
 If ErrorLevel 1 Goto xmlDone
 Echo Configuring with libxml2 ...
 sed -e "/#undef HAVE_LIBXML2/s/^.*$/#define HAVE_LIBXML2 1/" <config.h2 
>config.h3
-mv config.h3 config.h2
+sed -e "/#define EMACS_CONFIG_FEATURES/s/^.*$/#define EMACS_CONFIG_FEATURES 
\"LIBXML2\"/" <config.h3 >config.h2
 set libxml=1
 :xmlDone
 rm -f junk.c junk junk.exe
@@ -194,7 +194,7 @@ if exist dir.h ren dir.h vmsdir.h
 
 rem   Create "makefile" from "makefile.in".
 rm -f Makefile makefile.tmp
-copy Makefile.in+lisp.mk+deps.mk makefile.tmp
+copy Makefile.in+deps.mk makefile.tmp
 sed -f ../msdos/sed1v2.inp <makefile.tmp >Makefile
 rm -f makefile.tmp
 
@@ -227,6 +227,10 @@ rem   
----------------------------------------------------------------------
 Echo Configuring the library source directory...
 cd lib-src
 sed -f ../msdos/sed3v2.inp <Makefile.in >Makefile
+mv Makefile makefile.tmp
+sed -n -e "/^AC_INIT/s/[^,]*, \([^,]*\).*/@set emver=\1/p" ../configure.ac > 
emver.bat
+call emver.bat
+sed -e "s/@version@/%emver%/g" <makefile.tmp >Makefile
 if "%X11%" == "" goto libsrc2a
 mv Makefile makefile.tmp
 sed -f ../msdos/sed3x.inp <makefile.tmp >Makefile
@@ -252,16 +256,23 @@ cd ..
 rem   ----------------------------------------------------------------------
 Echo Configuring the doc directory, expect one "File not found" message...
 cd doc
+Rem Rename files like djtar on plain DOS filesystem would.
+If Exist emacs\emacsver.texi.in update emacs/emacsver.texi.in emacs/emacsver.in
+If Exist man\emacs.1.in update man/emacs.1.in man/emacs.in
+If Exist ..\etc\refcards\emacsver.tex.in update 
../etc/refcards/emacsver.tex.in ../etc/refcards/emacsver.in
 Rem The two variants for lispintro below is for when the shell
 Rem supports long file names but DJGPP does not
-for %%d in (emacs lispref lispintro lispintr misc) do sed -f ../msdos/sed6.inp 
< %%d\Makefile.in > %%d\Makefile
+for %%d in (emacs lispref lispintro lispintr misc) do sed -e 
"s/@version@/%emver%/g" -f ../msdos/sed6.inp < %%d\Makefile.in > %%d\Makefile
+Rem produce emacs.1 from emacs.in
+If Exist man\emacs.1 goto manOk
+sed -e "s/@version@/%emver%/g" -e "s/@PACKAGE_BUGREPORT@/address@hidden/g" < 
man\emacs.in > man\emacs.1
+:manOk
 cd ..
 rem   ----------------------------------------------------------------------
 Echo Configuring the lib directory...
 If Exist build-aux\snippet\c++defs.h update build-aux/snippet/c++defs.h 
build-aux/snippet/cxxdefs.h
 cd lib
 Rem Rename files like djtar on plain DOS filesystem would.
-If Exist build-aux\snippet\c++defs.h update build-aux/snippet/c++defs.h 
build-aux/snippet/cxxdefs.h
 If Exist alloca.in.h update alloca.in.h alloca.in-h
 If Exist byteswap.in.h update byteswap.in.h byteswap.in-h
 If Exist dirent.in.h update dirent.in.h dirent.in-h
@@ -286,6 +297,7 @@ If Exist sys_types.in.h update sys_types.in.h sys_types.in-h
 If Exist sys_time.in.h update sys_time.in.h sys_time.in-h
 If Exist time.in.h update time.in.h time.in-h
 If Exist unistd.in.h update unistd.in.h unistd.in-h
+Rem Only repository has the msdos/autogen directory
 If Exist Makefile.in sed -f ../msdos/sedlibcf.inp < Makefile.in > makefile.tmp
 If Exist ..\msdos\autogen\Makefile.in sed -f ../msdos/sedlibcf.inp < 
..\msdos\autogen\Makefile.in > makefile.tmp
 sed -f ../msdos/sedlibmk.inp < makefile.tmp > Makefile
@@ -311,6 +323,12 @@ If Not Exist admin\unidata goto noadmin
 Echo Configuring the admin/unidata directory...
 cd admin\unidata
 sed -f ../../msdos/sedadmin.inp < Makefile.in > Makefile
+Echo Configuring the admin/charsets directory...
+cd ..\charsets
+sed -f ../../msdos/sedadmin.inp < Makefile.in > Makefile
+Echo Configuring the admin/grammars directory...
+cd ..\grammars
+sed -f ../../msdos/sedadmin.inp < Makefile.in > Makefile
 cd ..\..
 :noadmin
 rem   ----------------------------------------------------------------------
@@ -345,3 +363,4 @@ set nodebug=
 set djgpp_ver=
 set sys_malloc=
 set libxml=
+set emver=
diff --git a/configure.ac b/configure.ac
index 5a6a72a..448c48d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1159,16 +1159,9 @@ AC_PATH_PROG(GZIP_PROG, gzip)
 test $with_compress_install != yes && test -n "$GZIP_PROG" && \
    GZIP_PROG=" # $GZIP_PROG # (disabled by configure 
--without-compress-install)"
 
+PAXCTL_dumped=
+PAXCTL_notdumped=
 if test $opsys = gnu-linux; then
-  AC_PATH_PROG(PAXCTL, paxctl,,
-    [$PATH$PATH_SEPARATOR/sbin$PATH_SEPARATOR/usr/sbin])
-  if test "X$PAXCTL" != X; then
-    AC_MSG_CHECKING([whether binaries have a PT_PAX_FLAGS header])
-    AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
-      [if $PAXCTL -v conftest$EXEEXT >/dev/null 2>&1; then AC_MSG_RESULT(yes)
-      else AC_MSG_RESULT(no); PAXCTL=""; fi])
-  fi
-
   if test "${SETFATTR+set}" != set; then
     AC_CACHE_CHECK([for setfattr],
       [emacs_cv_prog_setfattr],
@@ -1179,6 +1172,7 @@ if test $opsys = gnu-linux; then
         emacs_cv_prog_setfattr=no
        fi])
     if test "$emacs_cv_prog_setfattr" = yes; then
+      PAXCTL_notdumped='$(SETFATTR) -n user.pax.flags -v er'
       SETFATTR=setfattr
     else
       SETFATTR=
@@ -1187,6 +1181,32 @@ if test $opsys = gnu-linux; then
     AC_SUBST([SETFATTR])
   fi
 fi
+case $opsys,$PAXCTL_notdumped in
+  gnu-linux, | netbsd,)
+    AC_PATH_PROG([PAXCTL], [paxctl], [],
+      [$PATH$PATH_SEPARATOR/sbin$PATH_SEPARATOR/usr/sbin])
+    if test -n "$PAXCTL"; then
+      if test "$opsys" = netbsd; then
+       PAXCTL_dumped='$(PAXCTL) +a'
+       PAXCTL_notdumped=$PAXCTL_dumped
+      else
+       AC_MSG_CHECKING([whether binaries have a PT_PAX_FLAGS header])
+       AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
+         [if $PAXCTL -v conftest$EXEEXT >/dev/null 2>&1; then
+            AC_MSG_RESULT([yes])
+          else
+            AC_MSG_RESULT([no])
+            PAXCTL=
+          fi])
+       if test -n "$PAXCTL"; then
+         PAXCTL_dumped='$(PAXCTL) -zex'
+         PAXCTL_notdumped='$(PAXCTL) -r'
+       fi
+      fi
+    fi;;
+esac
+AC_SUBST([PAXCTL_dumped])
+AC_SUBST([PAXCTL_notdumped])
 
 ## Need makeinfo >= 4.7 (?) to build the manuals.
 if test "$MAKEINFO" != "no"; then
diff --git a/doc/emacs/basic.texi b/doc/emacs/basic.texi
index 68581d0..b6939be 100644
--- a/doc/emacs/basic.texi
+++ b/doc/emacs/basic.texi
@@ -337,10 +337,11 @@ move to the column number specified by the argument's 
numeric value.
 @kindex C-x C-n
 @findex set-goal-column
 Use the current column of point as the @dfn{semipermanent goal column}
-for @kbd{C-n} and @kbd{C-p} (@code{set-goal-column}).  When a
-semipermanent goal column is in effect, those commands always try to
-move to this column, or as close as possible to it, after moving
-vertically.  The goal column remains in effect until canceled.
+for @kbd{C-n} and @kbd{C-p} (@code{set-goal-column}) in the current
+buffer.  When a semipermanent goal column is in effect, those commands
+always try to move to this column, or as close as possible to it,
+after moving vertically.  The goal column remains in effect until
+canceled.
 
 @item C-u C-x C-n
 Cancel the goal column.  Henceforth, @kbd{C-n} and @kbd{C-p} try to
diff --git a/lisp/emacs-lisp/cursor-sensor.el b/lisp/emacs-lisp/cursor-sensor.el
index f1ab82e..2231179 100644
--- a/lisp/emacs-lisp/cursor-sensor.el
+++ b/lisp/emacs-lisp/cursor-sensor.el
@@ -31,6 +31,7 @@
 
 ;;; Code:
 
+;;;###autoload
 (defvar cursor-sensor-inhibit nil)
 
 (defun cursor-sensor--intangible-p (pos)
diff --git a/lisp/emacs-lisp/eieio.el b/lisp/emacs-lisp/eieio.el
index 47aff33..80ac8ef 100644
--- a/lisp/emacs-lisp/eieio.el
+++ b/lisp/emacs-lisp/eieio.el
@@ -235,7 +235,7 @@ This method is obsolete."
            (let ((f (intern (format "%s-child-p" name))))
              `((defalias ',f ',testsym2)
                (make-obsolete
-                ',f ,(format "use (cl-typep ... \\='%s) instead" name)
+                ',f ,(format "use (cl-typep ... '%s) instead" name)
                 "25.1"))))
 
        ;; When using typep, (typep OBJ 'myclass) returns t for objects which
diff --git a/lisp/eshell/esh-cmd.el b/lisp/eshell/esh-cmd.el
index 6061513..d3613d3 100644
--- a/lisp/eshell/esh-cmd.el
+++ b/lisp/eshell/esh-cmd.el
@@ -800,7 +800,7 @@ This macro calls itself recursively, with NOTFIRST non-nil."
 (defmacro eshell-do-pipelines-synchronously (pipeline)
   "Execute the commands in PIPELINE in sequence synchronously.
 Output of each command is passed as input to the next one in the pipeline.
-This is used on systems where `start-process' is not supported."
+This is used on systems where async subprocesses are not supported."
   (when (setq pipeline (cadr pipeline))
     `(progn
        ,(when (cdr pipeline)
@@ -838,7 +838,7 @@ This is used on systems where `start-process' is not 
supported."
   "Execute the commands in PIPELINE, connecting each to one another."
   `(let ((eshell-in-pipeline-p t) tailproc)
      (progn
-       ,(if (fboundp 'start-process)
+       ,(if (fboundp 'make-process)
            `(eshell-do-pipelines ,pipeline)
          `(let ((tail-handles (eshell-create-handles
                                (car (aref eshell-current-handles
diff --git a/lisp/faces.el b/lisp/faces.el
index 1ceba48..3e26eadc 100644
--- a/lisp/faces.el
+++ b/lisp/faces.el
@@ -2319,7 +2319,11 @@ If you set `term-file-prefix' to nil, this function does 
nothing."
   :group 'basic-faces)
 
 (defface variable-pitch
-  '((t :family "Sans Serif"))
+  '((((type w32))
+     ;; This is a kludgey workaround for an issue discussed in
+     ;; http://lists.gnu.org/archive/html/emacs-devel/2016-04/msg00746.html.
+     :font "-outline-Arial-normal-normal-normal-sans-*-*-*-*-p-*-iso8859-1")
+    (t :family "Sans Serif"))
   "The basic variable-pitch face."
   :group 'basic-faces)
 
diff --git a/lisp/follow.el b/lisp/follow.el
index 5801f79..c510e5a 100644
--- a/lisp/follow.el
+++ b/lisp/follow.el
@@ -399,11 +399,11 @@ virtual window.  This is accomplished by two main 
techniques:
   makes it possible to walk between windows using normal cursor
   movement commands.
 
-Follow mode comes to its prime when used on a large screen and two
-side-by-side windows are used.  The user can, with the help of Follow
-mode, use two full-height windows as though they would have been
-one.  Imagine yourself editing a large function, or section of text,
-and being able to use 144 lines instead of the normal 72... (your
+Follow mode comes to its prime when used on a large screen and two or
+more side-by-side windows are used.  The user can, with the help of
+Follow mode, use these full-height windows as though they were one.
+Imagine yourself editing a large function, or section of text, and
+being able to use 144 or 216 lines instead of the normal 72... (your
 mileage may vary).
 
 To split one large window into two side-by-side windows, the commands
@@ -532,6 +532,80 @@ Return the new position."
 ;; position...  (This would also be corrected if we would have had a
 ;; good redisplay abstraction.)
 
+(defun follow-scroll-up-arg (arg)
+  "Scroll the text in a follow mode window chain up by ARG lines.
+If ARG is nil, scroll the size of the current window.
+
+This is an internal function for `follow-scroll-up' and
+`follow-scroll-up-window'."
+  (let ((opoint (point))  (owin (selected-window)))
+    (while
+        ;; If we are too near EOB, try scrolling the previous window.
+        (condition-case nil (progn (scroll-up arg) nil)
+          (end-of-buffer
+           (condition-case nil (progn (follow-previous-window) t)
+             (error
+              (select-window owin)
+              (goto-char opoint)
+              (signal 'end-of-buffer nil))))))
+    (unless (and scroll-preserve-screen-position
+                 (get this-command 'scroll-command))
+      (goto-char opoint))
+    (setq follow-fixed-window t)))
+
+(defun follow-scroll-down-arg (arg)
+  "Scroll the text in a follow mode window chain down by ARG lines.
+If ARG is nil, scroll the size of the current window.
+
+This is an internal function for `follow-scroll-down' and
+`follow-scroll-down-window'."
+  (let ((opoint (point)))
+    (scroll-down arg)
+    (unless (and scroll-preserve-screen-position
+                 (get this-command 'scroll-command))
+      (goto-char opoint))
+    (setq follow-fixed-window t)))
+
+;;;###autoload
+(defun follow-scroll-up-window (&optional arg)
+  "Scroll text in a Follow mode window up by that window's size.
+The other windows in the window chain will scroll synchronously.
+
+If called with no ARG, the `next-screen-context-lines' last lines of
+the window will be visible after the scroll.
+
+If called with an argument, scroll ARG lines up.
+Negative ARG means scroll downward.
+
+Works like `scroll-up' when not in Follow mode."
+  (interactive "P")
+  (cond ((not follow-mode)
+        (scroll-up arg))
+       ((eq arg '-)
+        (follow-scroll-down-window))
+       (t (follow-scroll-up-arg arg))))
+(put 'follow-scroll-up-window 'scroll-command t)
+
+;;;###autoload
+(defun follow-scroll-down-window (&optional arg)
+  "Scroll text in a Follow mode window down by that window's size.
+The other windows in the window chain will scroll synchronously.
+
+If called with no ARG, the `next-screen-context-lines' top lines of
+the window in the chain will be visible after the scroll.
+
+If called with an argument, scroll ARG lines down.
+Negative ARG means scroll upward.
+
+Works like `scroll-down' when not in Follow mode."
+  (interactive "P")
+  (cond ((not follow-mode)
+        (scroll-down arg))
+       ((eq arg '-)
+        (follow-scroll-up-window))
+       (t (follow-scroll-down-arg arg))))
+(put 'follow-scroll-down-window 'scroll-command t)
+
 ;;;###autoload
 (defun follow-scroll-up (&optional arg)
   "Scroll text in a Follow mode window chain up.
@@ -546,23 +620,18 @@ Works like `scroll-up' when not in Follow mode."
   (interactive "P")
   (cond ((not follow-mode)
         (scroll-up arg))
-       ((eq arg '-)
-        (follow-scroll-down))
-       (t
-        (let ((opoint (point))  (owin (selected-window)))
-          (while
-              ;; If we are too near EOB, try scrolling the previous window.
-              (condition-case nil (progn (scroll-up arg) nil)
-                (end-of-buffer
-                 (condition-case nil (progn (follow-previous-window) t)
-                   (error
-                    (select-window owin)
-                    (goto-char opoint)
-                    (signal 'end-of-buffer nil))))))
-          (unless (and scroll-preserve-screen-position
-                       (get this-command 'scroll-command))
-            (goto-char opoint))
-          (setq follow-fixed-window t)))))
+       (arg (follow-scroll-up-arg arg))
+        (t
+        (let* ((windows (follow-all-followers))
+               (end (window-end (car (reverse windows)))))
+          (if (eq end (point-max))
+              (signal 'end-of-buffer nil)
+            (select-window (car windows))
+            ;; `window-end' might return nil.
+            (if end
+                (goto-char end))
+            (vertical-motion (- next-screen-context-lines))
+            (set-window-start (car windows) (point)))))))
 (put 'follow-scroll-up 'scroll-command t)
 
 ;;;###autoload
@@ -579,15 +648,22 @@ Works like `scroll-down' when not in Follow mode."
   (interactive "P")
   (cond ((not follow-mode)
         (scroll-down arg))
-       ((eq arg '-)
-        (follow-scroll-up))
-       (t
-        (let ((opoint (point)))
-          (scroll-down arg)
-          (unless (and scroll-preserve-screen-position
-                       (get this-command 'scroll-command))
-            (goto-char opoint))
-          (setq follow-fixed-window t)))))
+       (arg (follow-scroll-down-arg arg))
+        (t
+        (let* ((windows (follow-all-followers))
+               (win (car (reverse windows)))
+               (start (window-start (car windows))))
+          (if (eq start (point-min))
+              (signal 'beginning-of-buffer nil)
+            (select-window win)
+            (goto-char start)
+            (vertical-motion (- (- (window-height win)
+                                   (if header-line-format 2 1)
+                                   next-screen-context-lines)))
+            (set-window-start win (point))
+            (goto-char start)
+            (vertical-motion (- next-screen-context-lines 1))
+            (setq follow-internal-force-redisplay t))))))
 (put 'follow-scroll-down 'scroll-command t)
 
 (declare-function comint-adjust-point "comint" (window))
diff --git a/lisp/international/mule-cmds.el b/lisp/international/mule-cmds.el
index 2ce21a8..f2bb8e2 100644
--- a/lisp/international/mule-cmds.el
+++ b/lisp/international/mule-cmds.el
@@ -72,7 +72,7 @@
   (let ((map (make-sparse-keymap "Set Coding System")))
     (bindings--define-key map [set-buffer-process-coding-system]
       '(menu-item "For I/O with Subprocess" set-buffer-process-coding-system
-        :visible (fboundp 'start-process)
+        :visible (fboundp 'make-process)
         :enable (get-buffer-process (current-buffer))
         :help "How to en/decode I/O from/to subprocess connected to this 
buffer"))
     (bindings--define-key map [set-next-selection-coding-system]
diff --git a/lisp/isearch.el b/lisp/isearch.el
index 5257a23..b2223e7 100644
--- a/lisp/isearch.el
+++ b/lisp/isearch.el
@@ -840,7 +840,6 @@ See the command `isearch-forward-symbol' for more 
information."
       (isearch-update)))))
 
 
-(defvar cursor-sensor-inhibit)
 ;; isearch-mode only sets up incremental search for the minor mode.
 ;; All the work is done by the isearch-mode commands.
 
@@ -973,8 +972,6 @@ The last thing is to trigger a new round of lazy 
highlighting."
         (setq cursor-sensor-inhibit (delq 'isearch cursor-sensor-inhibit))))
     (setq isearch--current-buffer (current-buffer))
     (make-local-variable 'cursor-sensor-inhibit)
-    (unless (boundp 'cursor-sensor-inhibit)
-      (setq cursor-sensor-inhibit nil))
     ;; Suspend things like cursor-intangible during Isearch so we can search
     ;; even within intangible text.
     (push 'isearch cursor-sensor-inhibit))
diff --git a/lisp/man.el b/lisp/man.el
index b483dd1..2b2ee99 100644
--- a/lisp/man.el
+++ b/lisp/man.el
@@ -619,7 +619,7 @@ This is necessary if one wants to dump man.el with Emacs."
                           ;; `call-process' below sends it to /dev/null,
                           ;; so we don't need `2>' even with DOS shells
                           ;; which do support stderr redirection.
-                          ((not (fboundp 'start-process)) " %s")
+                          ((not (fboundp 'make-process)) " %s")
                           ((concat " %s 2>" null-device)))))
        (flist Man-filter-list))
     (while (and flist (car flist))
@@ -1080,7 +1080,7 @@ Return the buffer in which the manpage will appear."
                                        "[cleaning...]")
                                      'face 'mode-line-emphasis)))
        (Man-start-calling
-        (if (fboundp 'start-process)
+        (if (fboundp 'make-process)
             (let ((proc (start-process
                          manual-program buffer
                          (if (memq system-type '(cygwin windows-nt))
diff --git a/lisp/org/org.el b/lisp/org/org.el
index b0e1e20..1921a59 100644
--- a/lisp/org/org.el
+++ b/lisp/org/org.el
@@ -15069,7 +15069,7 @@ a *different* entry, you cannot use these techniques."
          (if (not scope)
              (progn
                (org-agenda-prepare-buffers
-                (list (buffer-file-name (current-buffer))))
+                (and buffer-file-name (list buffer-file-name)))
                (setq res (org-scan-tags func matcher todo-only start-level)))
            ;; Get the right scope
            (cond
@@ -15081,7 +15081,7 @@ a *different* entry, you cannot use these techniques."
              (setq scope (org-agenda-files t))
              (setq scope (org-add-archive-files scope)))
             ((eq scope 'file)
-             (setq scope (list (buffer-file-name))))
+             (setq scope (and buffer-file-name (list buffer-file-name))))
             ((eq scope 'file-with-archives)
              (setq scope (org-add-archive-files (list (buffer-file-name))))))
            (org-agenda-prepare-buffers scope)
diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el
index c6aa56e..76a0b20 100644
--- a/lisp/progmodes/cc-engine.el
+++ b/lisp/progmodes/cc-engine.el
@@ -3440,7 +3440,7 @@ comment at the start of cc-engine.el for more info."
                (< c-state-old-cpp-beg here))
           (c-with-all-but-one-cpps-commented-out
            c-state-old-cpp-beg
-           (min c-state-old-cpp-end here)
+           c-state-old-cpp-end
            (c-invalidate-state-cache-1 here))
         (c-with-cpps-commented-out
          (c-invalidate-state-cache-1 here))))
@@ -5835,6 +5835,7 @@ comment at the start of cc-engine.el for more info."
   ;;
   ;; This macro might do hidden buffer changes.
   `(let (res)
+     (setq c-last-identifier-range nil)
      (while (if (setq res ,(if (eq type 'type)
                               `(c-forward-type)
                             `(c-forward-name)))
@@ -9024,11 +9025,11 @@ comment at the start of cc-engine.el for more info."
                      (not (looking-at "=")))))
       b-pos)))
 
-(defun c-backward-colon-prefixed-type ()
-  ;; We're at the token after what might be a type prefixed with a colon.  Try
-  ;; moving backward over this type and the colon.  On success, return t and
-  ;; leave point before colon; on failure, leave point unchanged.  Will clobber
-  ;; match data.
+(defun c-backward-typed-enum-colon ()
+  ;; We're at a "{" which might be the opening brace of a enum which is
+  ;; strongly typed (by a ":" followed by a type).  If this is the case, leave
+  ;; point before the colon and return t.  Otherwise leave point unchanged and 
return nil.
+  ;; Match data will be clobbered.
   (let ((here (point))
        (colon-pos nil))
     (save-excursion
@@ -9037,7 +9038,10 @@ comment at the start of cc-engine.el for more info."
               (or (not (looking-at "\\s)"))
                   (c-go-up-list-backward))
               (cond
-               ((eql (char-after) ?:)
+               ((and (eql (char-after) ?:)
+                     (save-excursion
+                       (c-backward-syntactic-ws)
+                       (c-on-identifier)))
                 (setq colon-pos (point))
                 (forward-char)
                 (c-forward-syntactic-ws)
@@ -9061,7 +9065,7 @@ comment at the start of cc-engine.el for more info."
   (let ((here (point))
        up-sexp-pos before-identifier)
     (when c-recognize-post-brace-list-type-p
-      (c-backward-colon-prefixed-type))
+      (c-backward-typed-enum-colon))
     (while
        (and
         (eq (c-backward-token-2) 0)
diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el
index cc04fe9..f2e397a 100644
--- a/lisp/progmodes/compile.el
+++ b/lisp/progmodes/compile.el
@@ -1743,7 +1743,7 @@ Returns the compilation buffer created."
            (funcall compilation-process-setup-function))
        (and outwin (compilation-set-window-height outwin))
        ;; Start the compilation.
-       (if (fboundp 'start-process)
+       (if (fboundp 'make-process)
            (let ((proc
                   (if (eq mode t)
                       ;; comint uses `start-file-process'.
diff --git a/lisp/progmodes/js.el b/lisp/progmodes/js.el
index 8c93ffa..48eb3e7 100644
--- a/lisp/progmodes/js.el
+++ b/lisp/progmodes/js.el
@@ -1892,9 +1892,11 @@ In particular, return the buffer position of the first 
`for' kwd."
           ;; To skip arbitrary expressions we need the parser,
           ;; so we'll just guess at it.
           (if (and (> end (point)) ; Not empty literal.
-                   (re-search-forward "[^,]]* \\(for\\) " end t)
+                   (re-search-forward "[^,]]* \\(for\\_>\\)" end t)
                    ;; Not inside comment or string literal.
-                   (not (nth 8 (parse-partial-sexp bracket (point)))))
+                   (let ((status (parse-partial-sexp bracket (point))))
+                     (and (= 1 (car status))
+                          (not (nth 8 status)))))
               (match-beginning 1)))))))
 
 (defun js--array-comp-indentation (bracket for-kwd)
diff --git a/lisp/simple.el b/lisp/simple.el
index 1247cb2..e257062 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -6421,7 +6421,8 @@ Those commands will move to this position in the line 
moved to
 rather than trying to keep the same horizontal position.
 With a non-nil argument ARG, clears out the goal column
 so that \\[next-line] and \\[previous-line] resume vertical motion.
-The goal column is stored in the variable `goal-column'."
+The goal column is stored in the variable `goal-column'.
+This is a buffer-local setting."
   (interactive "P")
   (if arg
       (progn
diff --git a/lisp/term/internal.el b/lisp/term/internal.el
index f73a107..0fd0f22 100644
--- a/lisp/term/internal.el
+++ b/lisp/term/internal.el
@@ -233,13 +233,13 @@
        "U*!" "U*'" "R*;" "!:" ":'" "!*" nil nil nil "w*j"
        nil nil "w*?" nil "O*!" "O*'" "W*!" "W*'" "W*J" "/*"
        ";;" nil nil nil "1N" "1M" "3M" "4M" "6M" nil          ; Gen Punct
-       nil "1T" "1H" nil nil nil "LRM" "RLM" "-1" nil
-       nil "--" "---" "===" "!2" "=2" "6`" "'9" ".9" "9'"
-       "``" "''" ":9" "9``" "/-" "/=" "sb" "3b" nil ".."
+       nil "1T" "1H" nil nil nil "LRM" "RLM" "-" "-"
+       "-" "--" "---" "===" "!2" "=2" "'" "'" ".9" "9'"
+       "\"" "\"" ":9" "9``" "/-" "/=" "sb" "3b" nil ".."
        "..." ".-" "LSep" "PSep" "LR[" "RL[" "PDF" "LRO" "RLO" 255
        "%o" "%oo" "'" "''" "\"'" "`" "``" "```" ".^" "<,"
        ",>" ":X" "!!" "?!" "'-" nil nil nil nil "-b"
-       "/f" nil nil nil nil nil nil nil nil nil
+       "/f" nil nil "??" "?!" "!?" nil nil nil nil
        nil nil nil nil nil nil nil nil nil nil
        nil nil nil nil nil nil nil nil nil nil
        nil nil nil nil nil nil nil nil nil nil
@@ -265,17 +265,17 @@
        "oK" "AO" nil nil "Est" nil nil nil nil nil
        nil "Aleph" "Bet" "Gimel" "Dalet" "=i=" nil nil nil nil
        nil nil nil nil nil nil nil nil nil nil
-       nil nil nil nil nil nil nil nil nil nil
-       nil "1/3" "2/3" "1/5" "2/5" "3/5" "4/5" "1/6" "5/6" "1/8"
+       nil nil nil nil nil nil nil nil "1/7" "1/9"
+       "1/10" "1/3" "2/3" "1/5" "2/5" "3/5" "4/5" "1/6" "5/6" "1/8"
        "3/8" "5/8" "7/8" "1/" ".I" "II" "III" "IV" ".V" "VI"
        "VII" "VIII" "IX" "X" "XI" "XII" ".L" ".C" ".D" ".M"
        ".i" "ii" "iii" "iv" ".v" "vi" "vii" "viii" "ix" ".x"
-       "xi" ".l" ".c" ".d" ".m" "CD" "DD" "CoD" "CI" nil
+       "xi" "xii" ".l" ".c" ".d" ".m" "CD" "DD" "CoD" "CI"
        nil nil nil nil nil nil nil nil nil nil
-       nil "<-" "|^" "->" "|v" "<->" "v|^" "^\\" "/^" "\\v"
-       "v/" "<-/" "/->" "<~" "~>" "<<-" "|^^" "->>" "|vv" "<-<"
-       ">->" "<-|" "_|^" "|->" "-|v" "_v|^" "<-?" "?->" "<-o" "o->"
-       "<~>" "<-/>" nil nil nil nil nil nil nil nil
+       nil nil "<-" "|^" "->" "|v" "<->" "v|^" "^\\" "/^"
+       "\\v" "v/" "<-/" "/->" "<~" "~>" "<<-" "|^^" "->>" "|vv"
+       "<-<" ">->" "<-|" "_|^" "|->" "-|v" "_v|^" "<-?" "?->" "<-o"
+       "o->" "<~>" "<-/>" nil nil nil nil nil nil nil
        nil nil nil nil nil nil nil nil nil nil
        nil nil nil nil nil nil nil nil nil nil
        nil nil nil "<=/" "<=/>" "/=>" "<=" "||^" "=>" "||v"
@@ -299,7 +299,7 @@
        "~<'" "`>~" "/<'" "/`>" "(C" ")C" "/(C" "/)C" "(_" ")_"
        "/(_" "/)_" nil nil nil nil nil nil nil nil
        nil nil nil "0+" "0-" "0x" "0/" "0." "0o" "0*"
-       "0=" "0_" nil nil nil nil "|T" "T|" "-T" "_T"
+       "0=" "0_" nil nil nil nil "|-" "-|" "-T" "_T"
        nil nil nil nil nil nil nil nil nil nil
        nil nil nil nil nil nil nil nil nil "-,-"
        nil "XOR" "NAND" "NOR" nil nil nil nil nil nil
@@ -357,8 +357,10 @@
        "M-o" "N-o" "O-o" "P-o" "Q-o" "R-o" "S-o" "T-o" "U-o" "V-o"
        "W-o" "X-o" "Y-o" "Z-o" "a-o" "b-o" "c-o" "d-o" "e-o" "f-o"
        "g-o" "h-o" "i-o" "j-o" "k-o" "l-o" "m-o" "n-o" "o-o" "p-o"
-       "q-o" "r-o" "s-o" "t-o" "u-o" "v-o" "w-o" "x-o" "y-o" "z-o"
-       "0-o" ]
+       "q-o" "r-o" "s-o" "t-o" "u-o" "v-o" "w-o" "x-o" "y-o" "z-o" "0-o" ]
+     )
+    (9733 9734
+      ["-!-" "-*-"]
      )
     )
 
diff --git a/lisp/textmodes/ispell.el b/lisp/textmodes/ispell.el
index a139c06..284fea4 100644
--- a/lisp/textmodes/ispell.el
+++ b/lisp/textmodes/ispell.el
@@ -996,7 +996,7 @@ and added as a submenu of the \"Edit\" menu.")
 (defvar ispell-async-processp (and (fboundp 'delete-process)
                                   (fboundp 'process-send-string)
                                   (fboundp 'accept-process-output)
-                                  ;;(fboundp 'start-process)
+                                  ;;(fboundp 'make-process)
                                   ;;(fboundp 'set-process-filter)
                                   ;;(fboundp 'process-kill-without-query)
                                   )
diff --git a/lisp/vc/diff.el b/lisp/vc/diff.el
index a8c3fcc..6b316c4 100644
--- a/lisp/vc/diff.el
+++ b/lisp/vc/diff.el
@@ -167,7 +167,7 @@ Possible values are:
       (setq default-directory thisdir)
       (let ((inhibit-read-only t))
        (insert command "\n"))
-      (if (and (not no-async) (fboundp 'start-process))
+      (if (and (not no-async) (fboundp 'make-process))
          (let ((proc (start-process "Diff" buf shell-file-name
                                      shell-command-switch command)))
            (set-process-filter proc 'diff-process-filter)
diff --git a/lisp/window.el b/lisp/window.el
index 9f63e86..bd5275b 100644
--- a/lisp/window.el
+++ b/lisp/window.el
@@ -8585,38 +8585,40 @@ A window is associated with a process if that window is
 displaying that processes's buffer."
   (let ((processes (process-list))
         (process-windows nil))
-    (walk-windows
-     (lambda (window)
-       (let ((buffer (window-buffer window))
-             (iter processes))
-         (while (let ((process (car iter)))
-                  (if (and (process-live-p process)
-                           (eq buffer (process-buffer process)))
-                      (let ((procwin (assq process process-windows)))
-                        ;; Add this window to the list of windows
-                        ;; displaying process.
-                        (if procwin
-                            (push window (cdr procwin))
-                          (push (list process window) process-windows))
-                        ;; We found our process for this window, so
-                        ;; stop iterating over the process list.
-                        nil)
-                    (setf iter (cdr iter)))))))
-     1 t)
+    (if processes
+        (walk-windows
+         (lambda (window)
+           (let ((buffer (window-buffer window))
+                 (iter processes))
+             (while (let ((process (car iter)))
+                      (if (and (process-live-p process)
+                               (eq buffer (process-buffer process)))
+                          (let ((procwin (assq process process-windows)))
+                            ;; Add this window to the list of windows
+                            ;; displaying process.
+                            (if procwin
+                                (push window (cdr procwin))
+                              (push (list process window) process-windows))
+                            ;; We found our process for this window, so
+                            ;; stop iterating over the process list.
+                            nil)
+                        (setf iter (cdr iter)))))))
+         1 t))
     process-windows))
 
 (defun window--adjust-process-windows ()
   "Update process window sizes to match the current window configuration."
-  (dolist (procwin (window--process-window-list))
-    (let ((process (car procwin)))
-      (with-demoted-errors "Error adjusting window size: %S"
-        (with-current-buffer (process-buffer process)
-          (let ((size (funcall
-                       (or (process-get process 'adjust-window-size-function)
-                           window-adjust-process-window-size-function)
-                       process (cdr procwin))))
-            (when size
-              (set-process-window-size process (cdr size) (car size)))))))))
+  (when (fboundp 'process-list)
+    (dolist (procwin (window--process-window-list))
+      (let ((process (car procwin)))
+        (with-demoted-errors "Error adjusting window size: %S"
+          (with-current-buffer (process-buffer process)
+            (let ((size (funcall
+                         (or (process-get process 'adjust-window-size-function)
+                             window-adjust-process-window-size-function)
+                         process (cdr procwin))))
+              (when size
+                (set-process-window-size process (cdr size) (car size))))))))))
 
 (add-hook 'window-configuration-change-hook 'window--adjust-process-windows)
 
diff --git a/msdos/sed1v2.inp b/msdos/sed1v2.inp
index 7164682..383105a 100644
--- a/msdos/sed1v2.inp
+++ b/msdos/sed1v2.inp
@@ -15,32 +15,24 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 #
 # ----------------------------------------------------------------------
-s/^#.*//
 s/^[ \f\t][ \f\t]*$//
 s/^ /  /
 s/\.h\.in/.h-in/
-/^MAKE *=/s/^/# /
 /^SHELL *=/s/^/# /
 /^srcdir *=/s/@address@hidden@/./
-/^abs_builddir *=/s|@abs_builddir@|../src|
-/^VPATH *=/s/@address@hidden@/./
-/^CC *=/s/@address@hidden@/gcc/
-/^CPP *=/s/@address@hidden@/gcc -e/
+/^top_srcdir *=/s/@address@hidden@/../
+/^CC *=/s/@address@hidden@/gcc -std=gnu99/
 /^CFLAGS *=/s/@address@hidden@/-O2 -gcoff/
 /^ALL_CFLAGS *=/s/@address@hidden@//g
 /^ALL_CFLAGS *=/s/ -I\.//g
 /^CPPFLAGS *=/s|@address@hidden@|-I../msdos|
 /^LDFLAGS *=/s/@address@hidden@//
-/^LD_FIRSTFLAG *=/s/@address@hidden@//
-/^LIBS *=/s/@address@hidden@//
-/^LIBES *=/,/^ *$/ {
-  s/@address@hidden@//g
-}
 /^LIBOBJS *=/s/@address@hidden@//
 /^C_SWITCH_MACHINE *=/s/@C_SWITCH_MACHINE@//
 /^C_SWITCH_SYSTEM *=/s/@C_SWITCH_SYSTEM@//
 /^GNUSTEP_CFLAGS *=/s/@GNUSTEP_CFLAGS@//
 /^C_SWITCH_X_SITE *=/s/@C_SWITCH_X_SITE@//
+/^PNG_CFLAGS *=/s/@PNG_CFLAGS@//
 /^WARN_CFLAGS *=/s/@WARN_CFLAGS@//
 /^WERROR_CFLAGS *=/s/@WERROR_CFLAGS@//
 /^PROFILING_CFLAGS *=/s/@PROFILING_CFLAGS@//
@@ -64,6 +56,7 @@ s/ address@hidden@//
 s/ address@hidden@//
 s/ address@hidden@//
 /^XFT_LIBS *=/s/@XFT_LIBS@//
+/^XCB_LIBS *=/s/@XCB_LIBS@//
 /^FONTCONFIG_CFLAGS *=/s/@FONTCONFIG_CFLAGS@//
 /^FONTCONFIG_LIBS *=/s/@FONTCONFIG_LIBS@//
 /^FREETYPE_CFLAGS *=/s/@FREETYPE_CFLAGS@//
@@ -78,7 +71,8 @@ s/ address@hidden@//
 /^NOTIFY_OBJ *=/s/@NOTIFY_OBJ@//
 /^SETTINGS_CFLAGS *=/s/@SETTINGS_CFLAGS@//
 /^SETTINGS_LIBS *=/s/@SETTINGS_LIBS@//
-/^GFILENOTIFY_LIBS *=/s/@GFILENOTIFY_LIBS@//
+/^NOTIFY_LIBS *=/s/@NOTIFY_LIBS@//
+/^NOTIFY_CFLAGS *=/s/@NOTIFY_CFLAGS@//
 /^GTK_OBJ *=/s/@GTK_OBJ@//
 /^LIBS_TERMCAP *=/s/@LIBS_TERMCAP@//
 /^TERMCAP_OBJ *=/s/@TERMCAP_OBJ@/termcap.o tparam.o/
@@ -92,7 +86,7 @@ s/ address@hidden@//
 /^XGSELOBJ *=/s/@XGSELOBJ@//
 /^TOOLKIT_LIBW *=/s/@TOOLKIT_LIBW@//
 /^LIBSOUND *=/s/@LIBSOUND@//
-/^LIBS_GNUSTEP *=/s/@LIBS_GNUSTEP@//
+/^LIBS_GNUSTEP *=/s/=.*$/=/
 /^CFLAGS_SOUND *=/s/@CFLAGS_SOUND@//
 /^RSVG_LIBS *=/s/@RSVG_LIBS@//
 /^RSVG_CFLAGS *=/s/@RSVG_CFLAGS@//
@@ -101,15 +95,23 @@ s/ address@hidden@//
 /^LIBXML2_LIBS *=/s/@LIBXML2_LIBS@//
 /^LIBXML2_CFLAGS *=/s/@LIBXML2_CFLAGS@//
 /^WIDGET_OBJ *=/s/@WIDGET_OBJ@//
+/^XWIDGETS_OBJ *=/s/@XWIDGETS_OBJ@//
+/^WEBKIT_LIBS *=/s/@WEBKIT_LIBS@//
+/^WEBKIT_CFLAGS *=/s/@WEBKIT_CFLAGS@//
+/^CAIRO_LIBS *=/s/@CAIRO_LIBS@//
+/^CAIRO_CFLAGS *=/s/@CAIRO_CFLAGS@//
+/^XFIXES_LIBS *=/s/@XFIXES_LIBS@//
+/^XFIXES_CFLAGS *=/s/@XFIXES_CFLAGS@//
 /^CYGWIN_OBJ *=/s/@CYGWIN_OBJ@//
 /^WINDOW_SYSTEM_OBJ *=/s/@WINDOW_SYSTEM_OBJ@//
 /^MSDOS_OBJ *=/s/= */= dosfns.o msdos.o w16select.o/
 /^NS_OBJ *=/s/@NS_OBJ@//
 /^NS_OBJC_OBJ *=/s/@NS_OBJC_OBJ@//
-/^GNU_OBJC_CFLAGS*=/s/@GNU_OBJC_CFLAGS@//
+/^GNU_OBJC_CFLAGS*=/s/=.*$/=/
 /^LIBRESOLV *=/s/@LIBRESOLV@//
+/^LIBMODULES *=/s/@LIBMODULES@//
+/^MODULES_OBJ *=/s/@MODULES_OBJ@//
 /^LIBSELINUX_LIBS *=/s/@LIBSELINUX_LIBS@//
-/^LIB_PTHREAD_SIGMASK *=/s/@address@hidden@//
 /^LIB_CLOCK_GETTIME *=/s/@address@hidden@//g
 /^LIB_TIMER_TIME *=/s/@address@hidden@//g
 /^LIB_EXECINFO *=/s/@address@hidden@//g
@@ -145,65 +147,59 @@ s/ address@hidden@//
 /^W32_LIBS *=/s/@W32_LIBS@//
 /^version *=/s/@address@hidden@//
 /^EMACSRES *=/s/@EMACSRES@//
-/^EMACS_MANIFEST *=/s/@EMACS_MANIFEST@//
 /^W32_RES_LINK *=/s/@W32_RES_LINK@//
 /^CM_OBJ *=/s/@CM_OBJ@/cm.o/
 /address@hidden@$/s/@SET_MAKE@//
-/^TEMACS_POST_LINK *=/s/@TEMACS_POST_LINK@/stubedit temacs.exe minstack=1024k/
 /^ADDSECTION *=/s/@ADDSECTION@//
-/^     [       
]*\$(libsrc)\/make-docfile.*>.*\/DOC/s!make-docfile!make-docfile -o $(etc)/DOC!
-/^     [       
]*\$(libsrc)\/make-docfile.*>.*gl.tmp/s!make-docfile!make-docfile -o gl.tmp!
-/^.\$(libsrc)\/make-doc/s!>.*$!!
-/^     [       ]*\$(libsrc)\/make-docfile /s!`[^`]*`!$(lisp); cd ../src!
-/^[   ]*$/d
-/^\$(leimdir)\/leim-list.el: /s/bootstrap-emacs\$(EXEEXT)/temacs$(EXEEXT) 
$(BOOTSTRAPEMACS)/
+/^AM_DEFAULT_VERBOSITY *=/s/@AM_DEFAULT_VERBOSITY@/1/
+/^[Aa][Mm]_/s/@AM_V@/$(V)/
+/^[Aa][Mm]_/s/@AM_DEFAULT_V@/$(AM_DEFAULT_VERBOSITY)/
+/^AUTO_DEPEND *=/s/@AUTO_DEPEND@/yes/
+/^PAXCTL_if_present *=/s/=.*$/address@hidden/
+/^lisp\.mk:/,/^$/c\
+lisp.mk: $(lispsource)/loadup.el\
+       @rm -f address@hidden
+       ${AM_V_GEN}printf 'shortlisp = \\n' > address@hidden
+       ${AM_V_GEN}sed -n 's/^[ \t]*(load "\([^"]*\)".*/\1/p' $< | sed -e 
"s/$/.elc \/" -e "s/\.el\.elc/.el/" >> address@hidden
+       ${AM_V_GEN}djecho ""  >> $@
+
+#"
+
+/^     [       ]*\$(AM_V_at)\$(libsrc)\/make-docfile 
-d/s!make-docfile!make-docfile -o $(etc)/DOC!
+/ > \$(etc)\/DOC *$/s/ >.*$//
+/^     [       
]*\$(AM_V_GLOBALS)\$(libsrc)\/make-docfile.*>.*globals.tmp/s!make-docfile!make-docfile
 -o globals.tmp!
+/^     [       ]*\$(AM_V_GLOBALS)\$(libsrc)\/make-doc/s!>.*$!!
+/^\$(libsrc)\/make-docfile\$(EXEEXT): /i\
+       cd ../src
+/^\$(leimdir)\/leim-list.el: /s/bootstrap-emacs\$(EXEEXT)/b-emacs$(EXEEXT)/
 /^     if test -f/,/^  fi$/c\
        command.com /c if exist .gdbinit rm -f _gdbinit
-/^      *test "X\$(PAXCTL)" = X/d
-/^      *test "\$(CANNOT_DUMP)" = "yes"/d
-/^     if test "\$(CANNOT_DUMP)" =/,/^ else /d
-/^      *\$(SETFATTR) -n/d
-/^     -\{0,1\} *ln /s/bootstrap-emacs\$(EXEEXT).*$/bootstrap-emacs$(EXEEXT)/
+/^      *\$(PAXCTL_if_present) -zex/d
+/^      *ln /s/ln /cp /
+/^      *\$(SETFATTR_if_present) -n/d
 /^     fi/d
+/^      *\$(RUN_TEMACS) /i\
+       stubedit temacs.exe minstack=1024k
 /^      *LC_ALL=C \$(RUN_TEMACS)/i\
        stubedit temacs.exe minstack=1024k
 /^      *LC_ALL=C.*\$(RUN_TEMACS)/s/LC_ALL=C/set &;/
 /-batch -l loadup/a\
        stubify emacs\
-       stubedit emacs.exe minstack=2048k
-s/ || exit 1\; \\$//
-s/ || true\; \\$//
+       stubedit emacs.exe minstack=3072k
 s/ @true *$/ @rem/
 s/^    [^      ]*move-if-change /      update /
-/^     echo[   ][      ]*timestamp/s/echo /djecho /
+/^     [^      ]*echo[         ][      ]*timestamp/s/echo /djecho /
 /^     .*djecho timestamp/a\
-       @rm -f gl.tmp
-/^     cd ..\/leim && \$(MAKE)/i\
-       $(RUN_TEMACS) -batch -l loadup dump\
-       stubify emacs\
-       stubedit emacs.exe minstack=2048k\
-       rm -f b-emacs$(EXEEXT)\
-       cp emacs$(EXEEXT) b-emacs$(EXEEXT)
-/^     cd ..\/leim && \$(MAKE)/c\
-       $(MAKE) $(MFLAGS) -C ../leim leim-list.el EMACS=$(bootstrap_exe)
-/^     cd ..\/admin\/unidata && \$(MAKE)/c\
-       $(MAKE) $(MFLAGS) -C ../admin/unidata all EMACS="../$(bootstrap_exe)"
-/^     cd \$(lib) && \$(MAKE)/c\
-       $(MAKE) $(MFLAGS) -C $(lib) libgnu.a
-/^RUN_TEMACS *=/s|`/bin/pwd`|.|
+       @rm -f globals.tmp
 /^      address@hidden(MKDEPDIR) *$/d
 /^     mv \.\/\.gdbinit/d
 /^     if test -f/,/^  fi$/c\
        command.com /c if exist .gdbinit rm -f _gdbinit
 /^     #/d
-/^     cd.*make-docfile/s!$!; cd ../src!
 /^     @: /d
 /^     -\{0,1\} *ln /s/ln /cp /
 /^[    ]touch /s/touch/djecho $@ >/
 s/@YMF_PASS_LDFLAGS@/flags/
-s/@lisp_frag@//
-s/@deps_frag@//
-s/@ns_frag@//
 s/@PRE_EDIT_LDFLAGS@//
 s/@POST_EDIT_LDFLAGS@//
 s/bootstrap-emacs/b-emacs/
@@ -211,21 +207,24 @@ s/bootstrap-temacs/b-temacs/
 s/bootstrap-doc/b-doc/
 /rm -f bootstrap-emacs/s/b-emacs/b-emacs b-emacs.exe/
 s/echo.*buildobj.lst/dj&/
-/ --load loadup bootstrap/i\
-       stubedit temacs.exe minstack=1024k
 / --load loadup bootstrap/a\
        stubify emacs
 /^     mv -f emacs/a\
        stubedit b-emacs.exe minstack=3072k\
        djecho bootlisp > bootlisp
 /^     -\{0,1\}rm -f/s/\\#/#/
-/^     @\{0,1\}cd ..\/lisp;.*[^\]$/s|$|\; cd ../src|
-/^      *THEFILE=/s|$|\; cd ../src|
 /^     echo.* buildobj.h/s|echo |djecho |
-/^buildobj\.h:/,/^     mv /{
-  /^    *for /,/^       *done /c\
+/^buildobj\.h:/,/^      *\$(AM_V_at)mv /{
+  /^    *\$(AM_V_GEN)for /,/^   *done /c\
        djecho "$(ALLOBJS)" | sed -e 's/^ */"/' -e 's/ *$$/"/' -e 's/  */", 
"/g' >>address@hidden
 }
+# Remove or replace dependencies we cannot have
+/^\.PRECIOUS: /s!\.\./config.status !!
+/^\.\.\/config.status: /d
+/^Makefile: /s!\.\./config.status !!
+/^\$(top_srcdir)\/aclocal\.m4 /,/^doc\.o:/c\
+\
+doc.o: buildobj.h
 # Make the GCC command line fit one screen line
 /^[    ][      ]*\$(GNUSTEP_CFLAGS)/d
 /^[    ][      ]*\$(GCONF_CFLAGS)/d
@@ -233,7 +232,13 @@ s/echo.*buildobj.lst/dj&/
 s/\$(LIBOTF_CFLAGS) \$(M17N_FLT_CFLAGS) \$(DEPFLAGS) //
 s/ \$(C_SWITCH_X_SITE)//
 s/ \$(DBUS_CFLAGS)//
-s| -I\$(srcdir)/../lib||
+s/ \$(PNG_CFLAGS) //
+s/ \$(XINERAMA_CFLAGS)//
+s/ \$(XFIXES_CFLAGS)//
+s/ \$(FREETYPE_CFLAGS)//
+s/ \$(FONTCONFIG_CFLAGS)//
+s| -I\$(srcdir)/\.\./lib||
+s| -I\$(top_srcdir)/lib||
 # Add our local inttypes.h to prerequisites where needed
 /^lread\.o:/s|lread\.c|& ../msdos/inttypes.h|
 /^      *test "X/d
diff --git a/msdos/sed2v2.inp b/msdos/sed2v2.inp
index 6079aab..d1a6eab 100644
--- a/msdos/sed2v2.inp
+++ b/msdos/sed2v2.inp
@@ -64,7 +64,7 @@
 /^#undef PACKAGE_NAME/s/^.*$/#define PACKAGE_NAME ""/
 /^#undef PACKAGE_STRING/s/^.*$/#define PACKAGE_STRING ""/
 /^#undef PACKAGE_TARNAME/s/^.*$/#define PACKAGE_TARNAME ""/
-/^#undef PACKAGE_VERSION/s/^.*$/#define PACKAGE_VERSION ""/
+/^#undef PACKAGE_VERSION/s/^.*$/#define PACKAGE_VERSION VERSION/
 /^#undef PENDING_OUTPUT_COUNT/s/^.*$/#define PENDING_OUTPUT_COUNT(FILE) 
((FILE)->_ptr - (FILE)->_base)/
 /^#undef VERSION/s/^.*$/#define VERSION "25.1.50"/
 /^#undef SYSTEM_TYPE/s/^.*$/#define SYSTEM_TYPE "ms-dos"/
@@ -82,7 +82,6 @@
 /^#undef HAVE_SIGNED_SIG_ATOMIC_T *$/s/^.*$/#define HAVE_SIGNED_SIG_ATOMIC_T 1/
 /^#undef HAVE_SIGNED_WINT_T *$/s/^.*$/#define HAVE_SIGNED_WINT_T 1/
 /^#undef HAVE_UNSIGNED_LONG_LONG_INT *$/s/^.*$/#define 
HAVE_UNSIGNED_LONG_LONG_INT 1/
-/^#undef HAVE_WCHAR_H *$/s/^.*$/#define HAVE_WCHAR_H 1/
 /^#undef DEVICE_SEP *$/s/^.*$/#define DEVICE_SEP ':'/
 /^#undef IS_DIRECTORY_SEP *$/s,^.*$,#define IS_DIRECTORY_SEP(_c_) ((_c_) == 
'/' || (_c_) == '\\\\'),
 /^#undef IS_DEVICE_SEP *$/s/^.*$/#define IS_DEVICE_SEP(_c_) ((_c_) == ':')/
@@ -91,6 +90,7 @@
 /^#undef NULL_DEVICE *$/s/^.*$/#define NULL_DEVICE "nul"/
 /^#undef SEPCHAR *$/s/^.*$/#define SEPCHAR '\;'/
 /^#undef USER_FULL_NAME *$/s/^.*$/#define USER_FULL_NAME (getenv ("NAME"))/
+/^# *undef _GNU_SOURCE *$/s/^.*$/#define _GNU_SOURCE 1/
 /^#undef inline/s/^.*$/#define inline __inline__/
 /^#undef my_strftime/s/^.*$/#define my_strftime nstrftime/
 /^#undef restrict/s/^.*$/#define restrict __restrict/
@@ -101,6 +101,7 @@
 s/^#undef STACK_DIRECTION *$/#define STACK_DIRECTION -1/
 s/^#undef EMACS_CONFIGURATION *$/#define EMACS_CONFIGURATION 
"i386-pc-msdosdjgpp"/
 s/^#undef EMACS_CONFIG_OPTIONS *$/#define EMACS_CONFIG_OPTIONS "msdos"/
+s/^#undef EMACS_CONFIG_FEATURES *$/#define EMACS_CONFIG_FEATURES ""/
 s/^#undef PROTOTYPES *$/#define PROTOTYPES 1/
 s/^#undef POINTER_TYPE *$/#define POINTER_TYPE void/
 /^#undef HAVE_INTTYPES_H/c\
@@ -115,12 +116,14 @@ s/^#undef POINTER_TYPE *$/#define POINTER_TYPE void/
 #else\
 #undef HAVE_STDINT_H\
 #endif
+s/^#undef HAVE_C_VARARRAYS *$/#define HAVE_C_VARARRAYS 1/
 s/^#undef HAVE_DECL_STRTOLL *$/#define HAVE_DECL_STRTOLL 1/
 s/^#undef HAVE_DECL_STRTOULL *$/#define HAVE_DECL_STRTOULL 1/
 s/^#undef HAVE_DECL_STRTOIMAX *$/#define HAVE_DECL_STRTOIMAX 1/
 s/^#undef HAVE_DECL_STRTOUMAX *$/#define HAVE_DECL_STRTOUMAX 1/
 s/^#undef HAVE_STRTOLL *$/#define HAVE_STRTOLL 1/
 s/^#undef HAVE_STRTOULL *$/#define HAVE_STRTOULL 1/
+s/^#undef HAVE_PUTENV *$/#define HAVE_PUTENV 1/
 /^#undef HAVE_SIGSET_T *$/s/^.*$/#define HAVE_SIGSET_T 1/
 /^#undef HAVE_SNPRINTF/c\
 #if __DJGPP__ > 2 || __DJGPP_MINOR__ > 3\
diff --git a/msdos/sed3v2.inp b/msdos/sed3v2.inp
index 711f8fe..49f2b76 100644
--- a/msdos/sed3v2.inp
+++ b/msdos/sed3v2.inp
@@ -15,11 +15,8 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 #
 # ----------------------------------------------------------------------
-/^# DIST: /d
 /^SHELL *=/s/^/# /
-/^CC *=/s/=.*$/=gcc/
-s/-DVERSION[^ ]* //
-/^configname *=/s/=.*$/=msdos/
+/^CC *=/s/=.*$/=gcc -std=gnu99/
 /^archlibdir *=/s!=.*$!=/emacs/bin!
 /^bindir *=/s!=.*$!=/emacs/bin!
 /^libdir *=/s!=.*$!=/emacs/bin!
@@ -38,12 +35,17 @@ s/-DVERSION[^ ]* //
 /^LIB_CLOCK_GETTIME *=/s/@address@hidden@//g
 /^LIB_TIMER_TIME *=/s/@address@hidden@//g
 /^CFLAGS *=/s!=.*$!=-O2 -g!
+/^CPPFLAGS *=/s/@CPPFLAGS@//
+/^LDFLAGS *=/s/@LDFLAGS@//
 /^C_SWITCH_SYSTEM *=/s!=.*$!=-DMSDOS -I../msdos!
 /^C_SWITCH_MACHINE *=/s/@C_SWITCH_MACHINE@//
 /^WARN_CFLAGS *=/s/@WARN_CFLAGS@//
 /^WERROR_CFLAGS *=/s/@WERROR_CFLAGS@//
 /^UPDATE_MANIFEST *=/s/@UPDATE_MANIFEST@//
 /^PROFILING_CFLAGS *=/s/@PROFILING_CFLAGS@//
+/^AM_DEFAULT_VERBOSITY *=/s/@AM_DEFAULT_VERBOSITY@/1/
+/^[Aa][Mm]_/s/@AM_V@/$(V)/
+/^[Aa][Mm]_/s/@AM_DEFAULT_V@/$(AM_DEFAULT_VERBOSITY)/
 /^ALLOCA *=/address@hidden@!!
 /^EXEEXT *=/address@hidden@!.exe!
 /^CLIENTW *=/s/@CLIENTW@//
@@ -56,9 +58,6 @@ s/-DVERSION[^ ]* //
 /^GETOPT_H *=/address@hidden@!getopt.h!
 /^GETOPTOBJS *=/address@hidden@!getopt.o getopt1.o!
 /^INSTALLABLES/s/emacsclient[^ ]* *//
-s!^    \./!    !
 /^UTILITIES *=/,/^$/{
   s/movemail[^ ]* *//
 }
-/^insrcdir=/s/^.*$/\#&/
-/^      *\$(insrcdir) ||/s,\$(insrcdir) ||,command.com /c if not exist $(<F),
diff --git a/msdos/sed6.inp b/msdos/sed6.inp
index 5df8c27..a209d7a 100644
--- a/msdos/sed6.inp
+++ b/msdos/sed6.inp
@@ -19,28 +19,16 @@
 /^srcdir *=/s/@address@hidden@/./
 /^VPATH *=/s/@address@hidden@/./
 /^MAKEINFO *=/s/@address@hidden@/makeinfo/
-/^INFO_EXT *=/s/@address@hidden@/.info/
-/^INFO_OPTS *=/s/@address@hidden@/--no-split/
+/^AM_DEFAULT_VERBOSITY *=/s/@AM_DEFAULT_VERBOSITY@/1/
+/^[Aa][Mm]_/s/@AM_V@/$(V)/
+/^[Aa][Mm]_/s/@AM_DEFAULT_V@/$(AM_DEFAULT_VERBOSITY)/
 /^ENVADD/,/^$/c\
 ENVADD =\
-export TEXINPUTS := $(srcdir)";"$(TEXINPUTS)\
+export TEXINPUTS := $(srcdir)";"$(texinfodir)";"$(TEXINPUTS)\
 export MAKEINFO := $(MAKEINFO) $(MAKEINFO_OPTS)
 /^SHELL *=/s/^/# /
-/^elisp.dvi:/,/^$/ {
-  /^    *if \[ *\a${permuted_index}/,/^         *fi *$/c\
-       command.com /c 'if not a${permuted_index}==a sh ./permute-index' \
-       command.com /c 'if not a${permuted_index}==a mv permuted.fns elisp.fns' 
\
-       command.com /c 'if not a${permuted_index}==a texindex elisp.tp' \
-       command.com /c 'if a${permuted_index}==a texindex elisp.??'
+/^doc-emacsver:/,/^$/ {
+  s/emacsver\.texi\.in/emacsver.in/g
+  s/\.texi\.\$\$\$\$/.tmp/g
+  s/[^  ]*move-if-change/update/
 }
-/^index.texi:/,/^$/ {
-  /^    *if \[ *\a${permuted_index}/,/^         *fi *$/c\
-       command.com /c 'if not a${permuted_index}==a cp -p ./index.perm 
index.texi' \
-       command.com /c 'if a${permuted_index}==a cp -p ./index.unperm 
index.texi'
-}
-/^maintainer-clean:/,/^$/ {
-  s/^  for file in $(INFO_TARGETS)\; do rm -f.*$/      rm -f $(INFO_TARGETS)/
-}
-
-/^mkinfodir *=/s| @.*$|@command.com /c if not exist 
..\\..\\info\\emacs$(INFO_EXT) mkdir ..\\..\\info|
-
diff --git a/msdos/sedadmin.inp b/msdos/sedadmin.inp
index 95c7c06..77812e8 100644
--- a/msdos/sedadmin.inp
+++ b/msdos/sedadmin.inp
@@ -15,15 +15,11 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 #
 # ----------------------------------------------------------------------
-/^SHELL *=/s/^/# /
+/^SHELL *=/address@hidden@!/bin/sh!
+/^AWK *=/s/@AWK@/gawk/
 /^srcdir *=/s/@address@hidden@/./
 /^top_srcdir *=/s|@address@hidden@|../..|
 /^top_builddir *=/s|@address@hidden@|../..|
-
-/^      *-if /,/^       *fi/d
-/^      *if test -f charprop/,/^        *fi/c\
-       rm -f uni-*.el
-/^      *if test -f \${DSTDIR/,/^       *fi/c\
-       rm -f ${DSTDIR}/uni-*.el ${DSTDIR}/charprop.el
-/^      *cp `sed -n/c\
-       cp uni-*.el ${DSTDIR}
+/^AM_DEFAULT_VERBOSITY *=/s/@AM_DEFAULT_VERBOSITY@/1/
+/^[Aa][Mm]_/s/@AM_V@/$(V)/
+/^[Aa][Mm]_/s/@AM_DEFAULT_V@/$(AM_DEFAULT_VERBOSITY)/
diff --git a/msdos/sedleim.inp b/msdos/sedleim.inp
index fcfcd08..ecbfd4a 100644
--- a/msdos/sedleim.inp
+++ b/msdos/sedleim.inp
@@ -19,6 +19,11 @@
 SHELL=/xyzzy/command\
 MAKESHELL=/xyzzy/command
 
+/^EXEEXT *=/s/@EXEEXT@/.exe/
+/^AM_DEFAULT_VERBOSITY *=/s/@AM_DEFAULT_VERBOSITY@/1/
+/^[Aa][Mm]_/s/@AM_V@/$(V)/
+/^[Aa][Mm]_/s/@AM_DEFAULT_V@/$(AM_DEFAULT_VERBOSITY)/
+
 /^srcdir=/s|address@hidden@|srcdir := $(subst \\,/,$(shell cd))|
 
 # Need a relative directory name for the md command, otherwise it
@@ -33,7 +38,6 @@ s|\([         ]\)echo|\1djecho|g
 export EMACSLOADPATH=\
 RUN_EMACS = ${EMACS} -batch --no-site-file --no-site-lisp
 
-/^MKDIR_P *=/s,@MKDIR_P@,-command.com /c md,
+/^MKDIR_P *=/s,@MKDIR_P@,gmkdir -p,
 
-/MKDIR_P.* \${leimdir}\/.*$/s|\${leimdir}/|$(rel_leimdir)\\|
-/MKDIR_P.* \$(leimdir)\/.*$/s|\$(leimdir)/|$(rel_leimdir)\\|
+/^\${leimdir}\/quail \${leimdir}\/ja-dic: *$/s|\${leimdir}/|$(rel_leimdir)\\|
diff --git a/msdos/sedlibmk.inp b/msdos/sedlibmk.inp
index a5f9381..9d71ef0 100644
--- a/msdos/sedlibmk.inp
+++ b/msdos/sedlibmk.inp
@@ -146,7 +146,7 @@ am__cd = cd
 /^ARFLAGS *=/s/@address@hidden@/cru/
 /^AWK *=/s/@address@hidden@/gawk/
 /^CANNOT_DUMP *=/s/@address@hidden@/no/
-/^CC *=/s/@address@hidden@/gcc/
+/^CC *=/s/@address@hidden@/gcc -std=gnu99/
 /^CPP *=/s/@address@hidden@/gcc -e/
 /^CPPFLAGS *=/s/@address@hidden@//
 /^CCDEPMODE *=/s/@address@hidden@/depmode=gcc3/
@@ -163,7 +163,6 @@ am__cd = cd
 /^WERROR_CFLAGS *=/s/@WERROR_CFLAGS@//
 /^DEFS *=/s/@address@hidden@//
 /^DEPDIR *=/s/@address@hidden@/deps/
-/^DEPFLAGS *=/s/@address@hidden@/-MMD -MF ${DEPDIR}\/$*.d/
 /^ECHO_N *=/s/@address@hidden@/-n/
 /^EXEEXT *=/s/@address@hidden@/.exe/
 /^EXECINFO_H *=/s/@address@hidden@/execinfo.h/
@@ -190,7 +189,9 @@ am__cd = cd
 /^GNULIB_GL_UNISTD_H_GETOPT *=/s/@GNULIB_GL_UNISTD_H_GETOPT@/1/
 /^GNULIB_MEMRCHR *=/s/@GNULIB_MEMRCHR@/1/
 /^GNULIB_MKOSTEMP *=/s/@GNULIB_MKOSTEMP@/1/
+/^GNULIB_MKTIME *=/s/@GNULIB_MKTIME@/1/
 /^GNULIB_TIME_R *=/s/@GNULIB_TIME_R@/1/
+/^GNULIB_TIME_RZ *=/s/@GNULIB_TIME_RZ@/1/
 /^GNULIB_UNSETENV *=/s/@GNULIB_UNSETENV@/1/
 /^GNULIB_[^ =]* *= *@/s/@address@hidden@/0/
 /^GSETTINGS_CFLAGS *=/s/@address@hidden@//
@@ -218,6 +219,7 @@ am__cd = cd
 /^HAVE_LONG_LONG_INT *=/s/@HAVE_LONG_LONG_INT@/1/
 /^HAVE_LSTAT *=/s/@HAVE_LSTAT@/HAVE_LSTAT/
 /^HAVE_MAKEINFO *=/s/@HAVE_MAKEINFO@/yes/
+/^HAVE_MAX_ALIGN_T *=/s/@HAVE_MAX_ALIGN_T@/0/
 /^HAVE_MEMCHR *=/s/@HAVE_MEMCHR@/1/
 /^HAVE_MKFIFO *=/s/@HAVE_MKFIFO@/1/
 /^HAVE_MKNOD *=/s/@HAVE_MKNOD@/1/
@@ -272,8 +274,7 @@ am__cd = cd
 /^NEXT_AS_FIRST_DIRECTIVE_FCNTL_H *=/s/@address@hidden@/<fcntl.h>/
 /^NEXT_AS_FIRST_DIRECTIVE_GETOPT_H *=/s/@address@hidden@/<getopt.h>/
 /^NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H *=/s/@address@hidden@/<signal.h>/
-/^NEXT_AS_FIRST_DIRECTIVE_STDARG_H *=/s/@address@hidden@//
-/^NEXT_AS_FIRST_DIRECTIVE_STDDEF_H *=/s/@address@hidden@//
+/^NEXT_AS_FIRST_DIRECTIVE_STDDEF_H *=/s/@address@hidden@/<stddef.h>/
 /^NEXT_AS_FIRST_DIRECTIVE_STDINT_H *=/s/@address@hidden@/<stdint.h>/
 /^NEXT_AS_FIRST_DIRECTIVE_STDIO_H *=/s/@address@hidden@/<stdio.h>/
 /^NEXT_AS_FIRST_DIRECTIVE_STDLIB_H *=/s/@address@hidden@/<stdlib.h>/
@@ -288,9 +289,8 @@ am__cd = cd
 /^NEXT_ERRNO_H *=/s/@address@hidden@//
 /^NEXT_FCNTL_H *=/s/@address@hidden@/<fcntl.h>/
 /^NEXT_GETOPT_H *=/s/@address@hidden@/<getopt.h>/
-/^NEXT_STDARG_H *=/s/@address@hidden@//
 /^NEXT_SIGNAL_H *=/s/@address@hidden@/<signal.h>/
-/^NEXT_STDDEF_H *=/s/@address@hidden@//
+/^NEXT_STDDEF_H *=/s/@address@hidden@/<stddef.h>/
 /^NEXT_STDIO_H *=/s/@address@hidden@/<stdio.h>/
 /^NEXT_STDINT_H *=/s/@address@hidden@/<stdint.h>/
 /^NEXT_STDLIB_H *=/s/@address@hidden@/<stdlib.h>/
@@ -307,7 +307,8 @@ am__cd = cd
 /^PTHREAD_H_DEFINES_STRUCT_TIMESPEC *=/s/@address@hidden@/0/
 /^PTRDIFF_T_SUFFIX *=/s/@address@hidden@//
 /^RANLIB *=/s/@address@hidden@/ranlib/
-# We never want any gnulib replacement functions
+/^REPLACE_MKTIME *=/s/@address@hidden@/1/
+# We don't want any other gnulib replacement functions
 /^REPLACE_[^ =]* *= *@/s/@address@hidden@/0/
 /^SIG_ATOMIC_T_SUFFIX *=/s/@SIG_ATOMIC_T_SUFFIX@//
 /^SIZE_T_SUFFIX *=/s/@SIZE_T_SUFFIX@/u/
@@ -316,15 +317,14 @@ am__cd = cd
 /^DIRENT_H *=/s/@address@hidden@//
 /^ERRNO_H *=/s/@address@hidden@//
 /^EXECINFO_H *=/s/@address@hidden@/execinfo.h/
-/^STDBOOL_H *=/s/@address@hidden@//
 /^STDALIGN_H *=/s/@address@hidden@/stdalign.h/
-/^STDARG_H *=/s/@address@hidden@//
-/^STDDEF_H *=/s/@address@hidden@//
+/^STDDEF_H *=/s/@address@hidden@/stddef.h/
 /^STDINT_H *=/s/@address@hidden@/stdint.h/
 /^SYS_TIME_H_DEFINES_STRUCT_TIMESPEC *=/s/@address@hidden@/0/
 /^TIME_H_DEFINES_STRUCT_TIMESPEC *=/s/@address@hidden@/0/
 /^UNISTD_H_HAVE_WINSOCK2_H *=/s/@address@hidden@/0/
 /^UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS *=/s/@address@hidden@/0/
+/^UNISTD_H_DEFINES_STRUCT_TIMESPEC *=/s/@address@hidden@/0/
 /^UNDEFINE_STRTOK_R *=/s/@UNDEFINE_STRTOK_R@/0/
 /^WCHAR_T_SUFFIX *=/s/@WCHAR_T_SUFFIX@/h/
 /^WINT_T_SUFFIX *=/s/@WINT_T_SUFFIX@//
@@ -334,7 +334,7 @@ am__cd = cd
 /am__append_[1-9][0-9]* *=.*gettext\.h/s/@address@hidden@/\#/
 /am__append_2 *=.*verify\.h/s/@address@hidden@//
 /address@hidden@/s/@address@hidden@//
-/^gl_LIBOBJS *=/s/@address@hidden@/getopt.o getopt1.o memrchr.o sig2str.o 
time_r.o getloadavg.o pthread_sigmask.o mkostemp.o fpending.o fdatasync.o 
execinfo.o/
+/^gl_LIBOBJS *=/s/@address@hidden@/getopt.o getopt1.o memrchr.o sig2str.o 
time_r.o time_rz.o timegm.o mktime.o getloadavg.o pthread_sigmask.o mkostemp.o 
fpending.o fdatasync.o execinfo.o/
 /^am__append_[1-9][0-9]* *=/,/^[^      ]/{
   s/ *inttypes\.h//
   s| *sys/select\.h||
@@ -342,13 +342,13 @@ am__cd = cd
 }
 /^am_libgnu_a_OBJECTS *=/,/^[^         ]/{
   s/allocator\.\$(OBJEXT) //
-  s/binary-io\.\$(OBJEXT) //
   s/careadlinkat\.\$(OBJEXT) //
   s/pipe2\.\$(OBJEXT) //
   s/acl-errno-valid\.\$(OBJEXT) //
-  s/file-has-acl\.\$(OBJEXT) //
+  s/acl-internal\.\$(OBJEXT) //
+  s/get-permissions\.\$(OBJEXT) //
+  s/set-permissions\.\$(OBJEXT) //
   s/qcopy-acl\.\$(OBJEXT) //
-  s/qset-acl\.\$(OBJEXT) //
   s/openat-die\.\$(OBJEXT) //
   s/save-cwd\.\$(OBJEXT) //
 }
@@ -396,13 +396,9 @@ s/address@hidden@/\#/
 s/address@hidden@//
 s/address@hidden@//
 s/address@hidden@/\#/
-s/address@hidden@/\#/
-s/address@hidden@//
 s/address@hidden@//
 s/address@hidden@/\#/
-s/address@hidden@/\#/
-s/address@hidden@/\#/
-s/address@hidden@/\#/
+s/address@hidden@//
 s/address@hidden@/\#/
 s/address@hidden@//
 s/address@hidden@/\#/
diff --git a/msdos/sedlisp.inp b/msdos/sedlisp.inp
index 7fa476e..17aa168 100644
--- a/msdos/sedlisp.inp
+++ b/msdos/sedlisp.inp
@@ -23,5 +23,9 @@ export FNCASE=y
 /^lisp *=/s|\$(srcdir)|$(CURDIR)|
 /^srcdir *=/s|@srcdir@|.|
 /^top_srcdir *=/s|@top_srcdir@|./..|
+/^EXEEXT *=/s/@EXEEXT@/.exe/
 /^XARGS_LIMIT *=/s|@XARGS_LIMIT@||
+/^AM_DEFAULT_VERBOSITY *=/s/@AM_DEFAULT_VERBOSITY@/1/
+/^[Aa][Mm]_/s/@AM_V@/$(V)/
+/^[Aa][Mm]_/s/@AM_DEFAULT_V@/$(AM_DEFAULT_VERBOSITY)/
 
diff --git a/src/Makefile.in b/src/Makefile.in
index fc9360a..8639eff 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -114,8 +114,9 @@ TEMACS_LDFLAGS = $(LD_SWITCH_SYSTEM) 
$(LD_SWITCH_SYSTEM_TEMACS)
 ## around this, newer ones setfattr.  See Bug#11398 and Bug#16343.
 PAXCTL = @PAXCTL@
 SETFATTR = @SETFATTR@
-PAXCTL_if_present = $(or $(PAXCTL),: paxctl)
-SETFATTR_if_present = $(or $(SETFATTR),: setfattr)
+## Commands to set PaX flags on dumped and not-dumped instances of Emacs.
+PAXCTL_dumped = @PAXCTL_dumped@
+PAXCTL_notdumped = @PAXCTL_notdumped@
 
 ## Some systems define this to request special libraries.
 address@hidden@
@@ -542,7 +543,9 @@ ifeq ($(CANNOT_DUMP),yes)
        ln -f temacs$(EXEEXT) $@
 else
        LC_ALL=C $(RUN_TEMACS) -batch $(BUILD_DETAILS) -l loadup dump
-       $(PAXCTL_if_present) -zex $@
+  ifneq ($(PAXCTL_dumped),)
+       $(PAXCTL_dumped) $@
+  endif
        ln -f $@ bootstrap-emacs$(EXEEXT)
 endif
 
@@ -606,8 +609,9 @@ temacs$(EXEEXT): $(LIBXMENU) $(ALLOBJS) \
          -o temacs $(ALLOBJS) $(LIBEGNU_ARCHIVE) $(W32_RES_LINK) $(LIBES)
        $(MKDIR_P) $(etc)
 ifneq ($(CANNOT_DUMP),yes)
-       $(PAXCTL_if_present) -r $@
-       $(SETFATTR_if_present) -n user.pax.flags -v er $@
+  ifneq ($(PAXCTL_notdumped),)
+       $(PAXCTL_notdumped) $@
+  endif
 endif
 
 ## The following oldxmenu-related rules are only (possibly) used if
@@ -748,7 +752,9 @@ ifeq ($(CANNOT_DUMP),yes)
        ln -f temacs$(EXEEXT) $@
 else
        $(RUN_TEMACS) --batch $(BUILD_DETAILS) --load loadup bootstrap
-       $(PAXCTL_if_present) -zex emacs$(EXEEXT)
+  ifneq ($(PAXCTL_dumped),)
+       $(PAXCTL_dumped) emacs$(EXEEXT)
+  endif
        mv -f emacs$(EXEEXT) $@
 endif
        @: Compile some files earlier to speed up further compilation.
diff --git a/src/atimer.c b/src/atimer.c
index 70d9bf5..64c9e8a 100644
--- a/src/atimer.c
+++ b/src/atimer.c
@@ -30,6 +30,10 @@ along with GNU Emacs.  If not, see 
<http://www.gnu.org/licenses/>.  */
 # include <sys/timerfd.h>
 #endif
 
+#ifdef MSDOS
+#include "msdos.h"
+#endif
+
 /* Free-list of atimer structures.  */
 
 static struct atimer *free_atimers;
diff --git a/src/conf_post.h b/src/conf_post.h
index 047e357..5d3394f 100644
--- a/src/conf_post.h
+++ b/src/conf_post.h
@@ -134,6 +134,9 @@ You lose; /* Emacs for DOS must be compiled with DJGPP */
 # define HAVE_LSTAT 1
 #else
 # define lstat stat
+/* DJGPP 2.03 and older don't have the next two.  */
+# define EOVERFLOW ERANGE
+# define SIZE_MAX  4294967295U
 #endif
 
 /* We must intercept 'opendir' calls to stash away the directory name,
diff --git a/src/deps.mk b/src/deps.mk
index 0295e70..72f68ca 100644
--- a/src/deps.mk
+++ b/src/deps.mk
@@ -35,7 +35,7 @@
 ### Code:
 
 atimer.o: atimer.c atimer.h syssignal.h systime.h lisp.h blockinput.h \
- globals.h ../lib/unistd.h $(config_h)
+ globals.h ../lib/unistd.h msdos.h $(config_h)
 bidi.o: bidi.c buffer.h character.h dispextern.h msdos.h lisp.h \
    globals.h $(config_h)
 buffer.o: buffer.c buffer.h region-cache.h commands.h window.h \
@@ -92,7 +92,7 @@ editfns.o: editfns.c window.h buffer.h systime.h 
$(INTERVALS_H) character.h \
 emacs.o: emacs.c commands.h systty.h syssignal.h blockinput.h process.h \
    termhooks.h buffer.h atimer.h systime.h $(INTERVALS_H) lisp.h $(config_h) \
    globals.h ../lib/unistd.h window.h dispextern.h keyboard.h keymap.h \
-   frame.h coding.h gnutls.h msdos.h unexec.h
+   frame.h coding.h gnutls.h msdos.h dosfns.h unexec.h
 fileio.o: fileio.c window.h buffer.h systime.h $(INTERVALS_H) character.h \
    coding.h msdos.h blockinput.h atimer.h lisp.h $(config_h) frame.h \
    commands.h globals.h ../lib/unistd.h
diff --git a/src/dosfns.h b/src/dosfns.h
index 9fbf7ed..849fb91 100644
--- a/src/dosfns.h
+++ b/src/dosfns.h
@@ -24,6 +24,10 @@ along with GNU Emacs.  If not, see 
<http://www.gnu.org/licenses/>.  */
 extern unsigned char dos_country_info[DOS_COUNTRY_INFO];
 extern int dos_memory_info (unsigned long *, unsigned long *,
                            unsigned long *, unsigned long *);
+void dos_cleanup (void);
+void syms_of_dosfns (void);
+void init_dosfns (void);
+
 #ifndef HAVE_X_WINDOWS
 extern int         msdos_stdcolor_idx  (const char *);
 extern Lisp_Object msdos_stdcolor_name (int);
diff --git a/src/emacs.c b/src/emacs.c
index a7cbb32..3e0cf59 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -54,6 +54,7 @@ along with GNU Emacs.  If not, see 
<http://www.gnu.org/licenses/>.  */
 
 #ifdef MSDOS
 #include <binary-io.h>
+#include "dosfns.h"
 #endif
 
 #ifdef HAVE_LIBSYSTEMD
diff --git a/src/filelock.c b/src/filelock.c
index 6db6daa..6201718 100644
--- a/src/filelock.c
+++ b/src/filelock.c
@@ -53,6 +53,8 @@ along with GNU Emacs.  If not, see 
<http://www.gnu.org/licenses/>.  */
 #include "w32.h"       /* for dostounix_filename */
 #endif
 
+#ifndef MSDOS
+
 #ifdef HAVE_UTMP_H
 #include <utmp.h>
 #endif
@@ -732,6 +734,19 @@ unlock_file (Lisp_Object fn)
   SAFE_FREE ();
 }
 
+#else  /* MSDOS */
+void
+lock_file (Lisp_Object fn)
+{
+}
+
+void
+unlock_file (Lisp_Object fn)
+{
+}
+
+#endif /* MSDOS */
+
 void
 unlock_all_files (void)
 {
@@ -795,6 +810,9 @@ The value is nil if the FILENAME is not locked,
 t if it is locked by you, else a string saying which user has locked it.  */)
   (Lisp_Object filename)
 {
+#ifdef MSDOS
+  return Qnil;
+#else
   Lisp_Object ret;
   char *lfname;
   int owner;
@@ -815,6 +833,7 @@ t if it is locked by you, else a string saying which user 
has locked it.  */)
 
   SAFE_FREE ();
   return ret;
+#endif
 }
 
 void
diff --git a/src/fns.c b/src/fns.c
index b21e93d..5217b06 100644
--- a/src/fns.c
+++ b/src/fns.c
@@ -34,8 +34,13 @@ along with GNU Emacs.  If not, see 
<http://www.gnu.org/licenses/>.  */
 #include "intervals.h"
 #include "window.h"
 
+#if __GNUC__ >= 4
 static void sort_vector_copy (Lisp_Object, ptrdiff_t,
                              Lisp_Object [restrict], Lisp_Object [restrict]);
+#else
+static void sort_vector_copy (Lisp_Object, ptrdiff_t,
+                             Lisp_Object [], Lisp_Object []);
+#endif
 static bool internal_equal (Lisp_Object, Lisp_Object, int, bool, Lisp_Object);
 
 DEFUN ("identity", Fidentity, Sidentity, 1, 1, 0,
diff --git a/src/frame.c b/src/frame.c
index 9c8926c..1c5c12c 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -509,10 +509,13 @@ adjust_frame_size (struct frame *f, int new_width, int 
new_height, int inhibit,
   block_input ();
 
 #ifdef MSDOS
-  /* We only can set screen dimensions to certain values supported
-     by our video hardware.  Try to find the smallest size greater
-     or equal to the requested dimensions.  */
-  dos_set_window_size (&new_lines, &new_cols);
+  /* We only can set screen dimensions to certain values supported by
+     our video hardware.  Try to find the smallest size greater or
+     equal to the requested dimensions, while accounting for the fact
+     that the menu-bar lines are not counted in the frame height.  */
+  int dos_new_lines = new_lines + FRAME_TOP_MARGIN (f);
+  dos_set_window_size (&dos_new_lines, &new_cols);
+  new_lines = dos_new_lines - FRAME_TOP_MARGIN (f);
 #endif
 
   if (new_windows_width != old_windows_width)
diff --git a/src/lread.c b/src/lread.c
index 4450728..98a4d69 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -47,6 +47,10 @@ along with GNU Emacs.  If not, see 
<http://www.gnu.org/licenses/>.  */
 
 #ifdef MSDOS
 #include "msdos.h"
+#if __DJGPP__ == 2 && __DJGPP_MINOR__ < 5
+# define INFINITY  __builtin_inf()
+# define NAN       __builtin_nan("")
+#endif
 #endif
 
 #ifdef HAVE_NS
diff --git a/src/msdos.c b/src/msdos.c
index 84e8c39..62411ea 100644
--- a/src/msdos.c
+++ b/src/msdos.c
@@ -59,6 +59,12 @@ along with GNU Emacs.  If not, see 
<http://www.gnu.org/licenses/>.  */
 #include <libc/dosio.h>  /* for _USE_LFN */
 #include <conio.h>      /* for cputs */
 
+#if (__DJGPP__ + (__DJGPP_MINOR__ > 3)) >= 3
+#define SYS_ENVIRON _environ
+#else
+#define SYS_ENVIRON environ
+#endif
+
 #include "msdos.h"
 #include "systime.h"
 #include "frame.h"
@@ -422,8 +428,6 @@ static unsigned long screen_old_address = 0;
 /* Segment and offset of the virtual screen.  If 0, DOS/V is NOT loaded.  */
 static unsigned short screen_virtual_segment = 0;
 static unsigned short screen_virtual_offset = 0;
-extern Lisp_Object Qcursor_type;
-extern Lisp_Object Qbar, Qhbar;
 
 /* The screen colors of the current frame, which serve as the default
    colors for newly-created frames.  */
@@ -1384,11 +1388,6 @@ IT_delete_glyphs (struct frame *f, int n)
 
 /* This was copied from xfaces.c  */
 
-extern Lisp_Object Qbackground_color;
-extern Lisp_Object Qforeground_color;
-Lisp_Object Qreverse;
-extern Lisp_Object Qtitle;
-
 /* IT_set_terminal_modes is called when emacs is started,
    resumed, and whenever the screen is redrawn!  */
 
@@ -3710,7 +3709,7 @@ dos_ttcooked (void)
    file TEMPOUT and stderr to TEMPERR.  */
 
 int
-run_msdos_command (unsigned char **argv, const char *working_dir,
+run_msdos_command (char **argv, const char *working_dir,
                   int tempin, int tempout, int temperr, char **envv)
 {
   char *saveargv1, *saveargv2, *lowcase_argv0, *pa, *pl;
@@ -3796,8 +3795,8 @@ run_msdos_command (unsigned char **argv, const char 
*working_dir,
        ;
       if (*cmnd)
        {
-         extern char **environ;
-         char **save_env = environ;
+         extern char **SYS_ENVIRON;
+         char **save_env = SYS_ENVIRON;
          int save_system_flags = __system_flags;
 
          /* Request the most powerful version of `system'.  We need
@@ -3809,16 +3808,16 @@ run_msdos_command (unsigned char **argv, const char 
*working_dir,
                             | __system_handle_null_commands
                             | __system_emulate_chdir);
 
-         environ = envv;
+         SYS_ENVIRON = envv;
          result = system (cmnd);
          __system_flags = save_system_flags;
-         environ = save_env;
+         SYS_ENVIRON = save_env;
        }
       else
        result = 0;     /* emulate Unixy shell behavior with empty cmd line */
     }
   else
-    result = spawnve (P_WAIT, argv[0], (char **)argv, envv);
+    result = spawnve (P_WAIT, argv[0], argv, envv);
 
   dup2 (inbak, 0);
   dup2 (outbak, 1);
@@ -4085,11 +4084,14 @@ sys_select (int nfds, fd_set *rfds, fd_set *wfds, 
fd_set *efds,
          gettime (&t);
          clnow = make_timespec (t.tv_sec, t.tv_nsec);
          cldiff = timespec_sub (clnow, cllast);
+         /* Stop when timeout value is about to cross zero.  */
+         if (timespec_cmp (*timeout, cldiff) <= 0)
+           {
+             timeout->tv_sec = 0;
+             timeout->tv_nsec = 0;
+             return 0;
+           }
          *timeout = timespec_sub (*timeout, cldiff);
-
-         /* Stop when timeout value crosses zero.  */
-         if (timespec_sign (*timeout) <= 0)
-           return 0;
          cllast = clnow;
          dos_yield_time_slice ();
        }
diff --git a/src/msdos.h b/src/msdos.h
index 863ca48..0c3ba2b 100644
--- a/src/msdos.h
+++ b/src/msdos.h
@@ -41,8 +41,12 @@ void mouse_on (void);
 void mouse_off (void);
 void mouse_moveto (int, int);
 
+void IT_set_frame_parameters (struct frame *, Lisp_Object);
+
 #include <sys/types.h>
 #include <sys/stat.h>
+#include <pc.h>
+#include <signal.h>
 
 #if __DJGPP__ == 2 && __DJGPP_MINOR__ < 4
 int readlink (const char *, char *, size_t);
@@ -50,6 +54,16 @@ int readlink (const char *, char *, size_t);
 ssize_t readlinkat (int, const char *, char *, size_t);
 int fstatat (int, char const *, struct stat *, int);
 int unsetenv (const char *);
+int faccessat (int, const char *, int, int);
+void msdos_fatal_signal (int);
+void syms_of_msdos (void);
+int pthread_sigmask (int, const sigset_t *, sigset_t *);
+int dos_keysns (void);
+int dos_keyread (void);
+int run_msdos_command (char **, const char *, int, int, int, char **);
+
+void syms_of_win16select (void);
+
 
 /* Constants.  */
 #define EINPROGRESS 112
diff --git a/src/process.c b/src/process.c
index 0dfe162..9f2d379 100644
--- a/src/process.c
+++ b/src/process.c
@@ -4278,19 +4278,6 @@ Data that is unavailable is returned as nil.  */)
 #endif
 }
 
-/* If program file NAME starts with /: for quoting a magic
-   name, remove that, preserving the multibyteness of NAME.  */
-
-Lisp_Object
-remove_slash_colon (Lisp_Object name)
-{
-  return
-    ((SBYTES (name) > 2 && SREF (name, 0) == '/' && SREF (name, 1) == ':')
-     ? make_specified_string (SSDATA (name) + 2, SCHARS (name) - 2,
-                             SBYTES (name) - 2, STRING_MULTIBYTE (name))
-     : name);
-}
-
 /* Turn off input and output for process PROC.  */
 
 static void
@@ -7483,6 +7470,19 @@ add_timer_wait_descriptor (int fd)
 
 #endif /* HAVE_TIMERFD */
 
+/* If program file NAME starts with /: for quoting a magic
+   name, remove that, preserving the multibyteness of NAME.  */
+
+Lisp_Object
+remove_slash_colon (Lisp_Object name)
+{
+  return
+    ((SBYTES (name) > 2 && SREF (name, 0) == '/' && SREF (name, 1) == ':')
+     ? make_specified_string (SSDATA (name) + 2, SCHARS (name) - 2,
+                             SBYTES (name) - 2, STRING_MULTIBYTE (name))
+     : name);
+}
+
 /* Add DESC to the set of keyboard input descriptors.  */
 
 void
@@ -8010,13 +8010,6 @@ The variable takes effect when `start-process' is 
called.  */);
   defsubr (&Sset_process_filter_multibyte);
   defsubr (&Sprocess_filter_multibyte_p);
 
-#endif /* subprocesses */
-
-  defsubr (&Sget_buffer_process);
-  defsubr (&Sprocess_inherit_coding_system_flag);
-  defsubr (&Slist_system_processes);
-  defsubr (&Sprocess_attributes);
-
  {
    Lisp_Object subfeatures = Qnil;
    const struct socket_options *sopt;
@@ -8049,4 +8042,10 @@ The variable takes effect when `start-process' is 
called.  */);
    Fprovide (intern_c_string ("make-network-process"), subfeatures);
  }
 
+#endif /* subprocesses */
+
+  defsubr (&Sget_buffer_process);
+  defsubr (&Sprocess_inherit_coding_system_flag);
+  defsubr (&Slist_system_processes);
+  defsubr (&Sprocess_attributes);
 }
diff --git a/src/w16select.c b/src/w16select.c
index 434a598..208cfcc 100644
--- a/src/w16select.c
+++ b/src/w16select.c
@@ -65,8 +65,6 @@ unsigned get_clipboard_data (unsigned, void *, unsigned, int);
 unsigned close_clipboard (void);
 unsigned clipboard_compact (unsigned);
 
-Lisp_Object QCLIPBOARD, QPRIMARY;
-
 /* The segment address and the size of the buffer in low
    memory used to move data between us and WinOldAp module.  */
 static struct {
@@ -719,8 +717,7 @@ variable is set, it is used for the next communication only.
 After the communication, this variable is set to nil.  */);
   Vnext_selection_coding_system = Qnil;
 
-  QPRIMARY   = intern ("PRIMARY");     staticpro (&QPRIMARY);
-  QCLIPBOARD = intern ("CLIPBOARD");   staticpro (&QCLIPBOARD);
+  DEFSYM (QCLIPBOARD, "CLIPBOARD");
 }
 
 #endif /* MSDOS */
diff --git a/test/manual/indent/js.js b/test/manual/indent/js.js
index 61c7b44..23fae17 100644
--- a/test/manual/indent/js.js
+++ b/test/manual/indent/js.js
@@ -53,6 +53,14 @@ var p = {
 var evens = [e for each (e in range(0, 21))
                if (ed % 2 == 0)];
 
+var funs = [
+  function() {
+    for (;;) {
+    }
+  },
+  function(){},
+];
+
 !b
   !=b
   !==b



reply via email to

[Prev in Thread] Current Thread [Next in Thread]