From 88d9610cae8004cf9856be84d76c389e7fc3b14b Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Wed, 28 Sep 2011 16:50:16 -0400 Subject: [PATCH 01/17] * simple.el (delete-trailing-whitespace): Fix last change. --- lisp/ChangeLog | 2 ++ lisp/simple.el | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index f83dbdd344a..0927ff478c2 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,7 @@ 2011-09-28 Stefan Monnier + * simple.el (delete-trailing-whitespace): Fix last change. + * progmodes/perl-mode.el (perl-syntax-propertize-function): Don't confuse "y => 3" as the beginning of a `y' operation. diff --git a/lisp/simple.el b/lisp/simple.el index 142270930ca..14ce5ed18ec 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -589,9 +589,9 @@ If the region is active, only delete whitespace within the region." ;; Delete trailing empty lines. (goto-char end-marker) (when (and (not end) - (<= (skip-chars-backward "\n") -2) ;; Really the end of buffer. - (save-restriction (widen) (eobp))) + (save-restriction (widen) (eobp)) + (<= (skip-chars-backward "\n") -2)) (delete-region (1+ (point)) end-marker)) (set-marker end-marker nil)))) ;; Return nil for the benefit of `write-file-functions'. From df9a7357d2494add9ea23ccd63780beefbc2edd2 Mon Sep 17 00:00:00 2001 From: Juanma Barranquero Date: Thu, 29 Sep 2011 02:12:44 +0200 Subject: [PATCH 02/17] lisp/descr-text.el (describe-char-categories): Accept multiline descriptions. --- lisp/ChangeLog | 5 +++++ lisp/descr-text.el | 5 +++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 0927ff478c2..a5ca53e9f4a 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2011-09-29 Juanma Barranquero + + * descr-text.el (describe-char-categories): Accept category + descriptions more than one line long. + 2011-09-28 Stefan Monnier * simple.el (delete-trailing-whitespace): Fix last change. diff --git a/lisp/descr-text.el b/lisp/descr-text.el index fca06adb2a9..7d267cec480 100644 --- a/lisp/descr-text.el +++ b/lisp/descr-text.el @@ -366,9 +366,10 @@ This function is semi-obsolete. Use `get-char-code-property'." (list (mapconcat (lambda (x) (let* ((c (category-docstring x)) - (doc (if (string-match "\\`\\(.*?\\)\n\\(.*\\)\\'" c) + (doc (if (string-match "\\`\\(.*?\\)\n" c) (propertize (match-string 1 c) - 'help-echo (match-string 2 c)) + 'help-echo + (substring c (1+ (match-end 1)))) c))) (format "%c:%s" x doc))) mnemonics ", "))))) From 52aa0014e753e81ec0ed1d6fcd7cf25c01dd0071 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Thu, 29 Sep 2011 00:21:06 -0700 Subject: [PATCH 03/17] * lisp/pcmpl-cvs.el (pcomplete/cvs): Add "status" handler. --- lisp/ChangeLog | 4 ++++ lisp/pcmpl-cvs.el | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index a5ca53e9f4a..c8db50ac3bd 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,7 @@ +2011-09-29 Glenn Morris + + * pcmpl-cvs.el (pcomplete/cvs): Add "status" handler. + 2011-09-29 Juanma Barranquero * descr-text.el (describe-char-categories): Accept category diff --git a/lisp/pcmpl-cvs.el b/lisp/pcmpl-cvs.el index 3ff07bca20e..9c9b72ab701 100644 --- a/lisp/pcmpl-cvs.el +++ b/lisp/pcmpl-cvs.el @@ -107,6 +107,10 @@ "j(pcmpl-cvs-tags '(?U ?P))" "I(pcmpl-cvs-entries '(??))W?")) (while (pcomplete-here (pcmpl-cvs-entries '(?U ?P))))) + ((pcomplete-test "status") + (setq pcomplete-help "(cvs)File status") + (pcomplete-opt "vlR") + (while (pcomplete-here (pcmpl-cvs-entries)))) (t (while (pcomplete-here (pcmpl-cvs-entries))))))) From b5516bbd83019a2bf549991f1a73afe754cfc439 Mon Sep 17 00:00:00 2001 From: Martin Rudalics Date: Thu, 29 Sep 2011 10:16:15 +0200 Subject: [PATCH 04/17] In command-line-1 insert initial-scratch-message before markers (Bug#9605). * startup.el (command-line-1): Use insert-before-markers when inserting initial-scratch-message. (Bug#9605) * help.el (help-window): Remove variable. --- lisp/ChangeLog | 6 ++++++ lisp/help.el | 11 ----------- lisp/startup.el | 5 ++++- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index c8db50ac3bd..a5d048247a7 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2011-09-29 Martin Rudalics + + * startup.el (command-line-1): Use insert-before-markers when + inserting initial-scratch-message. (Bug#9605) + * help.el (help-window): Remove variable. + 2011-09-29 Glenn Morris * pcmpl-cvs.el (pcomplete/cvs): Add "status" handler. diff --git a/lisp/help.el b/lisp/help.el index f4338c28ffb..e2af0759a65 100644 --- a/lisp/help.el +++ b/lisp/help.el @@ -37,17 +37,6 @@ (add-hook 'temp-buffer-setup-hook 'help-mode-setup) (add-hook 'temp-buffer-show-hook 'help-mode-finish) -;; The variable `help-window' below is used by `help-mode-finish' to -;; communicate the window displaying help (the "help window") to the -;; macro `with-help-window'. The latter sets `help-window' to t before -;; invoking `with-output-to-temp-buffer'. If and only if `help-window' -;; is eq to t, `help-mode-finish' (called by `temp-buffer-setup-hook') -;; sets `help-window' to the window selected by `display-buffer'. -;; Exiting `with-help-window' and calling `help-print-return-message' -;; reset `help-window' to nil. -(defvar help-window nil - "Window chosen for displaying help.") - ;; `help-window-point-marker' is a marker you can move to a valid ;; position of the buffer shown in the help window in order to override ;; the standard positioning mechanism (`point-min') chosen by diff --git a/lisp/startup.el b/lisp/startup.el index 6c3bb397e9a..4e6f0af0368 100644 --- a/lisp/startup.el +++ b/lisp/startup.el @@ -2318,7 +2318,10 @@ A fancy display is used on graphic displays, normal otherwise." (get-buffer "*scratch*") (with-current-buffer "*scratch*" (when (zerop (buffer-size)) - (insert initial-scratch-message) + ;; Insert before markers to make sure that window-point + ;; appears at end of buffer when *scratch* is displayed + ;; (Bug#9605). + (insert-before-markers initial-scratch-message) (set-buffer-modified-p nil)))) (if (or inhibit-startup-screen From ccee00c0189fe7f59ef6136292d37a28378e52a0 Mon Sep 17 00:00:00 2001 From: Martin Rudalics Date: Thu, 29 Sep 2011 11:20:45 +0200 Subject: [PATCH 05/17] In display-buffer-record-window call point for selected window. (Bug#9626) * window.el (display-buffer-record-window): When WINDOW is the selected window use `point' instead of `window-point'. (Bug#9626) --- lisp/ChangeLog | 4 ++++ lisp/window.el | 9 ++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index a5d048247a7..b217a9093f6 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,7 +1,11 @@ 2011-09-29 Martin Rudalics + * window.el (display-buffer-record-window): When WINDOW is the + selected window use `point' instead of `window-point'. (Bug#9626) + * startup.el (command-line-1): Use insert-before-markers when inserting initial-scratch-message. (Bug#9605) + * help.el (help-window): Remove variable. 2011-09-29 Glenn Morris diff --git a/lisp/window.el b/lisp/window.el index 512eebcc663..c6722a62c74 100644 --- a/lisp/window.el +++ b/lisp/window.el @@ -3833,7 +3833,14 @@ element is BUFFER." (list 'other ;; A quadruple of WINDOW's buffer, start, point and height. (list (window-buffer window) (window-start window) - (window-point window) (window-total-size window)) + (if (eq window (selected-window)) + ;; When WINDOW is the selected window use its + ;; buffer's `point' instead of `window-point' + ;; (Bug#9626). + (with-current-buffer (window-buffer window) + (point)) + (window-point window)) + (window-total-size window)) (selected-window) buffer)))) ((eq type 'window) ;; WINDOW has been created on an existing frame. From 31bed4862096a95c1dc9a44d4561a5d08436ac3b Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Thu, 29 Sep 2011 15:00:18 +0300 Subject: [PATCH 06/17] Fix the MSDOS build. msdos/mainmake.v2 (boot): Condition the value on the existence of autogen/README, not admin/admin.el, since the latter is now part of the release tarball. (install): Don't copy lib-src/fns.el, as that file is no longer generated in that directory. msdos/sed1v2.inp (LIB_PTHREAD, LIB_PTHREAD_SIGMASK): Edit to empty. (SETTINGS_CFLAGS, SETTINGS_LIBS): Edit these instead of GCONF_CFLAGS and GCONF_LIBS. msdos/sedlibmk.inp (ALLOCA_H, AR, ARFLAGS, GNULIB_CHDIR, GNULIB_DUP) (GNULIB_FDATASYNC, GNULIB_FDOPEN, GNULIB_FSTAT, GNULIB_PCLOSE) (GNULIB_PTHREAD_SIGMASK, GNULIB_RAISE, GNULIB_SIGACTION) (GNULIB_SIGPROCMASK, GNULIB_SIGNAL_H_SIGPIPE, HAVE_FDATASYNC) (HAVE_PCLOSE, HAVE_POPEN, HAVE_POSIX_SIGNALBLOCKING) (HAVE_PTHREAD_SIGMASK, HAVE_RAISE, HAVE_SIGACTION) (HAVE_SIGHANDLER_T, HAVE_SIGINFO_T, HAVE_SIGSET_T) (HAVE_STRUCT_SIGACTION_SA_SIGACTION) (HAVE_TYPE_VOLATILE_SIG_ATOMIC_T, LIB_PTHREAD) (LIB_PTHREAD_SIGMASK, NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H) (NEXT_SIGNAL_H, REPLACE_FDOPEN, REPLACE_PTHREAD_SIGMASK) (REPLACE_RAISE): New edits. (gl_LIBOBJS): Remove md5.o, filemode.o, and sha1.o. Add pthread_sigmask.o. (@GL_GENERATE_ALLOCA_H_TRUE@, @GL_GENERATE_ALLOCA_H_FALSE@): Edit to comment out unneeded lines. (warn-on-use.h): Edit the recipe commands to work with DJGPP without requiring a Unixy shell. msdos/inttypes.h (strtoimax) [DJGPP < 2.04]: New macro. msdos/sed2v2.inp (HAVE_ALLOCA, HAVE_DECL_STRTOLL, HAVE_DECL_STRTOIMAX) (HAVE_STRTOLL, HAVE_SIGSET_T, HAVE_SNPRINTF): New edits. .bzrignore: Add ./GNUMakefile.unix. config.bat: Rename GNUMakefile, so it is not run on MS-DOS. Rename signal.in.h and alloca.in.h. src/sysdep.c (snprintf) [EOVERFLOW]: If EOVERFLOW is not defined, use EDOM. --- ChangeLog | 7 +++++ GNUmakefile | 77 ---------------------------------------------- config.bat | 4 +++ msdos/ChangeLog | 36 ++++++++++++++++++++++ msdos/inttypes.h | 1 + msdos/mainmake.v2 | 10 +++--- msdos/sed1v2.inp | 6 ++-- msdos/sed2v2.inp | 12 +++++++- msdos/sedlibmk.inp | 43 +++++++++++++++++++++++++- src/ChangeLog | 5 +++ src/sysdep.c | 4 +++ 11 files changed, 119 insertions(+), 86 deletions(-) delete mode 100644 GNUmakefile diff --git a/ChangeLog b/ChangeLog index c1a80f2d92f..878d76e59f8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2011-09-29 Eli Zaretskii + + * .bzrignore: Add ./GNUMakefile.unix. + + * config.bat: Rename GNUMakefile, so it is not run on MS-DOS. + Rename signal.in.h and alloca.in.h. + 2011-09-28 Eli Zaretskii * INSTALL: Mention that m17n libraries and libotf are needed for diff --git a/GNUmakefile b/GNUmakefile deleted file mode 100644 index 5fd329c78ef..00000000000 --- a/GNUmakefile +++ /dev/null @@ -1,77 +0,0 @@ -# Build Emacs from a fresh tarball or version-control checkout. - -# Copyright 2011 Free Software Foundation, Inc. -# -# This file is part of GNU Emacs. -# -# GNU Emacs is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# GNU Emacs is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Emacs. If not, see . -# -# written by Paul Eggert - - -# This GNUmakefile is for GNU Make. It is for convenience, so that -# one can run 'make' in an unconfigured source tree. In such a tree, -# this file causes GNU Make to first create a standard configuration -# with the default options, and then reinvokes itself on the -# newly-built Makefile. If the source tree is already configured, -# this file defers to the existing Makefile. - -# If you are using a non-GNU 'make', or if you want non-default build -# options, or if you want to build in an out-of-source tree, please -# run "configure" by hand. But run autogen.sh first, if the source -# was checked out directly from the repository. - - -# If a Makefile already exists, just use it. - -ifeq ($(wildcard Makefile),Makefile) -include Makefile -else - -# If cleaning and Makefile does not exist, don't bother creating it. -# The source tree is already clean, or is in a weird state that -# requires expert attention. - -ifeq ($(filter-out %clean,$(or $(MAKECMDGOALS),default)),) - -$(MAKECMDGOALS): - @echo >&2 'No Makefile; skipping $@.' - -else - -# No Makefile, and not cleaning. -# If 'configure' does not exist, Emacs must have been checked -# out directly from the repository; run ./autogen.sh. -# Once 'configure' exists, run it. -# Finally, run the actual 'make'. - -default $(filter-out configure Makefile,$(MAKECMDGOALS)): Makefile - $(MAKE) -f Makefile $(MAKECMDGOALS) -# Execute in sequence, so that multiple user goals don't conflict. -.NOTPARALLEL: - -configure: - @echo >&2 'There seems to be no "configure" file in this directory.' - @echo >&2 'Running ./autogen.sh || autogen/copy_autogen ...' - ./autogen.sh || autogen/copy_autogen - @echo >&2 '"configure" file built.' - -Makefile: configure - @echo >&2 'There seems to be no Makefile in this directory.' - @echo >&2 'Running ./configure ...' - ./configure - @echo >&2 'Makefile built.' - -endif -endif diff --git a/config.bat b/config.bat index a3660d577cd..803fd48deef 100644 --- a/config.bat +++ b/config.bat @@ -279,8 +279,10 @@ If Exist build-aux\snippet\c++defs.h update build-aux/snippet/c++defs.h build-au 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 getopt.in.h update getopt.in.h getopt.in-h If Exist stdbool.in.h update stdbool.in.h stdbool.in-h +If Exist signal.in.h update signal.in.h signal.in-h If Exist stddef.in.h update stddef.in.h stddef.in-h If Exist stdint.in.h update stdint.in.h stdint.in-h If Exist stdio.in.h update stdio.in.h stdio.in-h @@ -326,6 +328,8 @@ Echo Then run CONFIG.BAT again with the same arguments you did now. goto End :gdbinitOk Echo Looking for the GDB init file...found +rem GNUMakefile is not appropriate for MS-DOS so move it out of the way +If Exist GNUMakefile mv -f GNUMakefile GNUMakefile.unix copy msdos\mainmake.v2 Makefile >nul rem ---------------------------------------------------------------------- goto End diff --git a/msdos/ChangeLog b/msdos/ChangeLog index 46a5b69cc16..78ea6ebf1c5 100644 --- a/msdos/ChangeLog +++ b/msdos/ChangeLog @@ -1,3 +1,39 @@ +2011-09-29 Eli Zaretskii + + * mainmake.v2 (boot): Condition the value on the existence of + autogen/README, not admin/admin.el, since the latter is now part + of the release tarball. + (install): Don't copy lib-src/fns.el, as that file is no longer + generated in that directory. + + * sed1v2.inp (LIB_PTHREAD, LIB_PTHREAD_SIGMASK): Edit to empty. + (SETTINGS_CFLAGS, SETTINGS_LIBS): Edit these instead of + GCONF_CFLAGS and GCONF_LIBS. + + * sedlibmk.inp (ALLOCA_H, AR, ARFLAGS, GNULIB_CHDIR, GNULIB_DUP) + (GNULIB_FDATASYNC, GNULIB_FDOPEN, GNULIB_FSTAT, GNULIB_PCLOSE) + (GNULIB_PTHREAD_SIGMASK, GNULIB_RAISE, GNULIB_SIGACTION) + (GNULIB_SIGPROCMASK, GNULIB_SIGNAL_H_SIGPIPE, HAVE_FDATASYNC) + (HAVE_PCLOSE, HAVE_POPEN, HAVE_POSIX_SIGNALBLOCKING) + (HAVE_PTHREAD_SIGMASK, HAVE_RAISE, HAVE_SIGACTION) + (HAVE_SIGHANDLER_T, HAVE_SIGINFO_T, HAVE_SIGSET_T) + (HAVE_STRUCT_SIGACTION_SA_SIGACTION) + (HAVE_TYPE_VOLATILE_SIG_ATOMIC_T, LIB_PTHREAD) + (LIB_PTHREAD_SIGMASK, NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H) + (NEXT_SIGNAL_H, REPLACE_FDOPEN, REPLACE_PTHREAD_SIGMASK) + (REPLACE_RAISE): New edits. + (gl_LIBOBJS): Remove md5.o, filemode.o, and sha1.o. Add + pthread_sigmask.o. + (@GL_GENERATE_ALLOCA_H_TRUE@, @GL_GENERATE_ALLOCA_H_FALSE@): Edit + to comment out unneeded lines. + (warn-on-use.h): Edit the recipe commands to work with DJGPP + without requiring a Unixy shell. + + * inttypes.h (strtoimax) [DJGPP < 2.04]: New macro. + + * sed2v2.inp (HAVE_ALLOCA, HAVE_DECL_STRTOLL, HAVE_DECL_STRTOIMAX) + (HAVE_STRTOLL, HAVE_SIGSET_T, HAVE_SNPRINTF): New edits. + 2011-09-06 Paul Eggert * sedlibmk.inp (CONFIG_CLEAN_VPATH_FILES): Adjust to snippet moves diff --git a/msdos/inttypes.h b/msdos/inttypes.h index e21f1b1055c..2c9b2b2cd11 100644 --- a/msdos/inttypes.h +++ b/msdos/inttypes.h @@ -30,6 +30,7 @@ along with GNU Emacs. If not, see . */ #else /* __DJGPP__ < 2.04 */ #include #define strtoumax strtoull +#define strtoimax strtoll #endif /* __DJGPP__ < 2.04 */ #endif diff --git a/msdos/mainmake.v2 b/msdos/mainmake.v2 index 1aea06d2a4d..3b65fcc5ea4 100644 --- a/msdos/mainmake.v2 +++ b/msdos/mainmake.v2 @@ -64,12 +64,13 @@ MAKESHELL=/xyzzy/command top_srcdir := $(subst \,/,$(shell cd)) # Q: Do we need to bootstrap? -# A: Only if we find admin/admin.el, i.e. we are building out of -# a VCS-checkout (not a release) and src/b-emacs.exe does not exist. +# A: Only if we find autogen/README, i.e. we are building out of +# a VCS-checkout (not a release), and src/b-emacs.exe does not exist. # This avoids building a bootstrap-emacs and recompiling Lisp files -# when building a pretest/release tarball. +# when building a pretest/release tarball. Recompiling Lisp files +# is BAD because lisp/Makefile.in requires a Unixy shell. boot := -ifneq ($(wildcard admin/admin.el),) +ifneq ($(wildcard autogen/README),) ifeq ($(wildcard src/b-emacs.exe),) boot := b-emacs.exe endif @@ -132,7 +133,6 @@ install: all cd lib-src command.com /c >/dev/null for %p in (hexl etags ctags ebrowse) do\ if exist %p.exe mv -f %p.exe ../bin - if exist fns.el update fns.el ../bin/fns.el cd .. cd src mv -f emacs.exe ../bin/ diff --git a/msdos/sed1v2.inp b/msdos/sed1v2.inp index 623f5cacbc9..d92fd1340ab 100644 --- a/msdos/sed1v2.inp +++ b/msdos/sed1v2.inp @@ -53,6 +53,7 @@ s/\.h\.in/.h-in/ /^LIB_GCC *=/s/@LIB_GCC@// /^LIB_STANDARD *=/s/@LIB_STANDARD@// /^LIB_MATH *=/s/@LIB_MATH@/-lm/ +/^LIB_PTHREAD *=/s/@LIB_PTHREAD@// /^LIBTIFF *=/s/@LIBTIFF@// /^LIBJPEG *=/s/@LIBJPEG@// /^LIBPNG *=/s/@LIBPNG@// @@ -70,8 +71,8 @@ s/\.h\.in/.h-in/ /^DBUS_CFLAGS *=/s/@DBUS_CFLAGS@// /^DBUS_LIBS *=/s/@DBUS_LIBS@// /^DBUS_OBJ *=/s/@DBUS_OBJ@// -/^GCONF_CFLAGS *=/s/@GCONF_CFLAGS@// -/^GCONF_LIBS *=/s/@GCONF_LIBS@// +/^SETTINGS_CFLAGS *=/s/@SETTINGS_CFLAGS@// +/^SETTINGS_LIBS *=/s/@SETTINGS_LIBS@// /^GTK_OBJ *=/s/@GTK_OBJ@// /^LIBS_TERMCAP *=/s/@LIBS_TERMCAP@// /^TERMCAP_OBJ *=/s/@TERMCAP_OBJ@/termcap.o tparam.o/ @@ -102,6 +103,7 @@ s/\.h\.in/.h-in/ /^GNU_OBJC_CFLAGS*=/s/@GNU_OBJC_CFLAGS@// /^LIBRESOLV *=/s/@LIBRESOLV@// /^LIBSELINUX_LIBS *=/s/@LIBSELINUX_LIBS@// +/^LIB_PTHREAD_SIGMASK *=/s/@[^@\n]*@// /^LIBGNUTLS_LIBS *=/s/@[^@\n]*@// /^LIBGNUTLS_CFLAGS *=/s/@[^@\n]*@// /^GETLOADAVG_LIBS *=/s/@[^@\n]*@// diff --git a/msdos/sed2v2.inp b/msdos/sed2v2.inp index 3c3e69377f0..ea35a29c6b1 100644 --- a/msdos/sed2v2.inp +++ b/msdos/sed2v2.inp @@ -26,6 +26,7 @@ #define NSIG 320\ #endif +/^#undef HAVE_ALLOCA *$/s/^.*$/#define HAVE_ALLOCA 1/ /^#undef HAVE_SETITIMER *$/s/^.*$/#define HAVE_SETITIMER 1/ /^#undef HAVE_STRUCT_UTIMBUF *$/s/^.*$/#define HAVE_STRUCT_UTIMBUF 1/ /^#undef LOCALTIME_CACHE *$/s/^.*$/#define LOCALTIME_CACHE 1/ @@ -100,10 +101,19 @@ s/^#undef POINTER_TYPE *$/#define POINTER_TYPE void/ #else\ #undef HAVE_STDINT_H\ #endif +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_STRTOULL *$/#define HAVE_STRTOULL 1/ +/^#undef HAVE_SIGSET_T *$/s/^.*$/#define HAVE_SIGSET_T 1/ +/^#undef HAVE_SNPRINTF/c\ +#if __DJGPP__ > 2 || __DJGPP_MINOR__ > 3\ +#define HAVE_SNPRINTF 1\ +#else\ +#undef HAVE_SNPRINTF\ +#endif # Comment out any remaining undef directives, because some of them # might be defined in sys/config.h we include at the top of config.h. diff --git a/msdos/sedlibmk.inp b/msdos/sedlibmk.inp index a97ec7cb5f6..fdb8f8887db 100644 --- a/msdos/sedlibmk.inp +++ b/msdos/sedlibmk.inp @@ -111,6 +111,8 @@ am__cd = cd /^ALLOCA *=/s/@[^@\n]*@// /^ALSA_CFLAGS *=/s/@[^@\n]*@// /^ALSA_LIBS *=/s/@[^@\n]*@// +/^AR *=/s/@[^@\n]*@/ar/ +/^ARFLAGS *=/s/@[^@\n]*@/cru/ /^AWK *=/s/@[^@\n]*@/gawk/ /^CANNOT_DUMP *=/s/@[^@\n]*@/no/ /^CC *=/s/@[^@\n]*@/gcc/ @@ -147,9 +149,11 @@ am__cd = cd /^GNULIB_ATOLL *=/s/@GNULIB_ATOLL@/1/ /^GNULIB_CALLOC_POSIX *=/s/@GNULIB_CALLOC_POSIX@/0/ /^GNULIB_CANONICALIZE_FILE_NAME *=/s/@GNULIB_CANONICALIZE_FILE_NAME@/0/ +/^GNULIB_CHDIR *=/s/@GNULIB_CHDIR@/0/ /^GNULIB_CHOWN *=/s/@GNULIB_CHOWN@/0/ /^GNULIB_CLOSE *=/s/@GNULIB_CLOSE@/0/ /^GNULIB_DPRINTF *=/s/@GNULIB_DPRINTF@/0/ +/^GNULIB_DUP *=/s/@GNULIB_DUP@/0/ /^GNULIB_DUP2 *=/s/@GNULIB_DUP2@/0/ /^GNULIB_DUP3 *=/s/@GNULIB_DUP3@/1/ /^GNULIB_ENVIRON *=/s/@GNULIB_ENVIRON@/0/ @@ -159,6 +163,8 @@ am__cd = cd /^GNULIB_FCHOWNAT *=/s/@GNULIB_FCHOWNAT@/0/ /^GNULIB_FCHMODAT *=/s/@GNULIB_FCHMODAT@/0/ /^GNULIB_FCLOSE *=/s/@GNULIB_FCLOSE@/0/ +/^GNULIB_FDATASYNC *=/s/@GNULIB_FDATASYNC@/0/ +/^GNULIB_FDOPEN *=/s/@GNULIB_FDOPEN@/0/ /^GNULIB_FFLUSH *=/s/@GNULIB_FFLUSH@/0/ /^GNULIB_FGETC *=/s/@GNULIB_FGETC@/0/ /^GNULIB_FGETS *=/s/@GNULIB_FGETS@/0/ @@ -173,6 +179,7 @@ am__cd = cd /^GNULIB_FSCANF *=/s/@GNULIB_FSCANF@/0/ /^GNULIB_FSEEK *=/s/@GNULIB_FSEEK@/0/ /^GNULIB_FSEEKO *=/s/@GNULIB_FSEEKO@/0/ +/^GNULIB_FSTAT *=/s/@GNULIB_FSTAT@/0/ /^GNULIB_FSTATAT *=/s/@GNULIB_FSTATAT@/0/ /^GNULIB_FSYNC *=/s/@GNULIB_FSYNC@/0/ /^GNULIB_FTELL *=/s/@GNULIB_FTELL@/0/ @@ -220,6 +227,7 @@ am__cd = cd /^GNULIB_NANOSLEEP *=/s/@GNULIB_NANOSLEEP@/0/ /^GNULIB_OBSTACK_PRINTF *=/s/@GNULIB_OBSTACK_PRINTF@/0/ /^GNULIB_OBSTACK_PRINTF_POSIX *=/s/@GNULIB_OBSTACK_PRINTF_POSIX@/0/ +/^GNULIB_PCLOSE *=/s/@GNULIB_PCLOSE@/0/ /^GNULIB_PERROR *=/s/@GNULIB_PERROR@/0/ /^GNULIB_PIPE *=/s/@GNULIB_PIPE@/0/ /^GNULIB_PIPE2 *=/s/@GNULIB_PIPE2@/0/ @@ -227,12 +235,14 @@ am__cd = cd /^GNULIB_PREAD *=/s/@GNULIB_PREAD@/0/ /^GNULIB_PRINTF *=/s/@GNULIB_PRINTF@/0/ /^GNULIB_PRINTF_POSIX *=/s/@GNULIB_PRINTF_POSIX@/0/ +/^GNULIB_PTHREAD_SIGMASK *=/s/@GNULIB_PTHREAD_SIGMASK@/0/ /^GNULIB_PTSNAME *=/s/@GNULIB_PTSNAME@/0/ /^GNULIB_PUTC *=/s/@GNULIB_PUTC@/0/ /^GNULIB_PUTCHAR *=/s/@GNULIB_PUTCHAR@/0/ /^GNULIB_PUTENV *=/s/@GNULIB_PUTENV@/0/ /^GNULIB_PUTS *=/s/@GNULIB_PUTS@/0/ /^GNULIB_PWRITE *=/s/@GNULIB_PWRITE@/0/ +/^GNULIB_RAISE *=/s/@GNULIB_RAISE@/0/ /^GNULIB_RANDOM_R *=/s/@GNULIB_RANDOM_R@/0/ /^GNULIB_READ *=/s/@GNULIB_READ@/0/ /^GNULIB_READLINK *=/s/@GNULIB_READLINK@/0/ @@ -246,6 +256,9 @@ am__cd = cd /^GNULIB_RPMATCH *=/s/@GNULIB_RPMATCH@/0/ /^GNULIB_SCANF *=/s/@GNULIB_SCANF@/0/ /^GNULIB_SETENV *=/s/@GNULIB_SETENV@/0/ +/^GNULIB_SIGACTION *=/s/@GNULIB_SIGACTION@/0/ +/^GNULIB_SIGNAL_H_SIGPIPE *=/s/@GNULIB_SIGNAL_H_SIGPIPE@/0/ +/^GNULIB_SIGPROCMASK *=/s/@GNULIB_SIGPROCMASK@/0/ /^GNULIB_SLEEP *=/s/@GNULIB_SLEEP@/0/ /^GNULIB_SNPRINTF *=/s/@GNULIB_SNPRINTF@/0/ /^GNULIB_SPRINTF_POSIX *=/s/@GNULIB_SPRINTF_POSIX@/0/ @@ -285,11 +298,14 @@ am__cd = cd /^GNULIB_WCTOMB *=/s/@GNULIB_WCTOMB@/0/ /^GNULIB_WRITE *=/s/@GNULIB_WRITE@/0/ /^GNULIB__EXIT *=/s/@GNULIB__EXIT@/0/ +/^GSETTINGS_CFLAGS *=/s/@[^@\n]*@// +/^GSETTINGS_LIBS *=/s/@[^@\n]*@// /^HAVE_ATOLL *=/s/@HAVE_ATOLL@/0/ /^HAVE_CANONICALIZE_FILE_NAME *=/s/@HAVE_CANONICALIZE_FILE_NAME@/0/ /^HAVE_CHOWN *=/s/@HAVE_CHOWN@/1/ /^HAVE_DECL_ENVIRON *=/s/@HAVE_DECL_ENVIRON@/1/ /^HAVE_DECL_FCHDIR *=/s/@HAVE_DECL_FCHDIR@/0/ +/^HAVE_DECL_FDATASYNC *=/s/@HAVE_DECL_FDATASYNC@/0/ /^HAVE_DECL_FPURGE *=/s/@HAVE_DECL_FPURGE@// /^HAVE_DECL_FSEEKO *=/s/@HAVE_DECL_FSEEKO@/0/ /^HAVE_DECL_FTELLO *=/s/@HAVE_DECL_FTELLO@/0/ @@ -315,6 +331,7 @@ am__cd = cd /^HAVE_FCHDIR *=/s/@HAVE_FCHDIR@/0/ /^HAVE_FCHMODAT *=/s/@HAVE_FCHMODAT@/0/ /^HAVE_FCHOWNAT *=/s/@HAVE_FCHOWNAT@/0/ +/^HAVE_FDATASYNC *=/s/@HAVE_FDATASYNC@/0/ /^HAVE_FSEEKO *=/s/@HAVE_FSEEKO@/0/ /^HAVE_FSTATAT *=/s/@HAVE_FSTATAT@/0/ /^HAVE_FSYNC *=/s/@HAVE_FSYNC@/1/ @@ -351,11 +368,16 @@ am__cd = cd /^HAVE_NANOSLEEP *=/s/@HAVE_NANOSLEEP@/0/ /^HAVE_OS_H *=/s/@HAVE_OS_H@/0/ /^HAVE_PIPE *=/s/@HAVE_PIPE@/0/ +/^HAVE_PCLOSE *=/s/@HAVE_PCLOSE@/1/ /^HAVE_PIPE2 *=/s/@HAVE_PIPE2@/0/ +/^HAVE_POPEN *=/s/@HAVE_POPEN@/1/ +/^HAVE_POSIX_SIGNALBLOCKING *=/s/@HAVE_POSIX_SIGNALBLOCKING@/1/ /^HAVE_PREAD *=/s/@HAVE_PREAD@/0/ /^HAVE_PTSNAME *=/s/@HAVE_PTSNAME@/0/ +/^HAVE_PTHREAD_SIGMASK *=/s/@HAVE_PTHREAD_SIGMASK@/0/ /^HAVE_PWRITE *=/s/@HAVE_PWRITE@/0/ /^HAVE_RANDOM_H *=/s/@HAVE_RANDOM_H@/1/ +/^HAVE_RAISE *=/s/@HAVE_RAISE@/1/ /^HAVE_RANDOM_R *=/s/@HAVE_RANDOM_R@/0/ /^HAVE_READLINK *=/s/@HAVE_READLINK@/0/ /^HAVE_READLINKAT *=/s/@HAVE_READLINKAT@/0/ @@ -363,15 +385,20 @@ am__cd = cd /^HAVE_RENAMEAT *=/s/@HAVE_RENAMEAT@/0/ /^HAVE_RPMATCH *=/s/@HAVE_RPMATCH@/0/ /^HAVE_SETENV *=/s/@HAVE_SETENV@/1/ +/^HAVE_SIGACTION *=/s/@HAVE_SIGACTION@/1/ +/^HAVE_SIGHANDLER_T *=/s/@HAVE_SIGHANDLER_T@/0/ +/^HAVE_SIGINFO_T *=/s/@HAVE_SIGINFO_T@/0/ /^HAVE_SIGNED_SIG_ATOMIC_T *=/s/@HAVE_SIGNED_SIG_ATOMIC_T@/1/ /^HAVE_SIGNED_WCHAR_T *=/s/@HAVE_SIGNED_WCHAR_T@/0/ /^HAVE_SIGNED_WINT_T *=/s/@HAVE_SIGNED_WINT_T@/1/ +/^HAVE_SIGSET_T *=/s/@HAVE_SIGSET_T@/1/ /^HAVE_SLEEP *=/s/@HAVE_SLEEP@/1/ /^HAVE_STDINT_H *=/s/@HAVE_STDINT_H@/HAVE_STDINT_H/ /^HAVE_STRPTIME *=/s/@HAVE_STRPTIME@/0/ /^HAVE_STRTOD *=/s/@HAVE_STRTOD@/1/ /^HAVE_STRTOLL *=/s/@HAVE_STRTOLL@/1/ /^HAVE_STRTOULL *=/s/@HAVE_STRTOULL@/1/ +/^HAVE_STRUCT_SIGACTION_SA_SIGACTION *=/s/@HAVE_STRUCT_SIGACTION_SA_SIGACTION@/0/ /^HAVE_STRUCT_RANDOM_DATA *=/s/@HAVE_STRUCT_RANDOM_DATA@/0/ /^HAVE_SYMLINK *=/s/@HAVE_SYMLINK@/1/ /^HAVE_SYMLINKAT *=/s/@HAVE_SYMLINKAT@/0/ @@ -381,6 +408,7 @@ am__cd = cd /^HAVE_SYS_PARAM_H *=/s/@HAVE_SYS_PARAM_H@/1/ /^HAVE_SYS_TYPES_H *=/s/@HAVE_SYS_TYPES_H@/1/ /^HAVE_TIMEGM *=/s/@HAVE_TIMEGM@/0/ +/^HAVE_TYPE_VOLATILE_SIG_ATOMIC_T *=/s/@HAVE_TYPE_VOLATILE_SIG_ATOMIC_T@/1/ /^HAVE_UNISTD_H *=/s/@HAVE_UNISTD_H@/1/ /^HAVE_UNLINKAT *=/s/@HAVE_UNLINKAT@/0/ /^HAVE_UNLOCKPT *=/s/@HAVE_UNLOCKPT@/0/ @@ -398,11 +426,14 @@ am__cd = cd /^INCLUDE_NEXT_AS_FIRST_DIRECTIVE *=/s/@[^@\n]*@/include_next/ /^LDFLAGS *=/s/@[^@\n]*@// /^LD_FIRSTFLAG *=/s/@[^@\n]*@// +/^LIB_PTHREAD *=/s/@[^@\n]*@// +/^LIB_PTHREAD_SIGMASK *=/s/@[^@\n]*@// /^LIBS *=/s/@[^@\n]*@// /^MAKEINFO *=/s/@MAKEINFO@/makeinfo/ # MKDIR_P lines are edited further below /^MKDIR_P *=/s/@MKDIR_P@// /^NEXT_AS_FIRST_DIRECTIVE_GETOPT_H *=/s/@[^@\n]*@// +/^NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H *=/s/@[^@\n]*@// /^NEXT_AS_FIRST_DIRECTIVE_STDARG_H *=/s/@[^@\n]*@// /^NEXT_AS_FIRST_DIRECTIVE_STDDEF_H *=/s/@[^@\n]*@// /^NEXT_AS_FIRST_DIRECTIVE_STDINT_H *=/s/@[^@\n]*@// @@ -413,6 +444,7 @@ am__cd = cd /^NEXT_AS_FIRST_DIRECTIVE_UNISTD_H *=/s/@[^@\n]*@// /^NEXT_GETOPT_H *=/s/@[^@\n]*@// /^NEXT_STDARG_H *=/s/@[^@\n]*@// +/^NEXT_SIGNAL_H *=/s/@[^@\n]*@// /^NEXT_STDDEF_H *=/s/@[^@\n]*@// /^NEXT_STDIO_H *=/s/@[^@\n]*@// /^NEXT_STDINT_H *=/s/@[^@\n]*@// @@ -435,6 +467,7 @@ am__cd = cd /^REPLACE_DUP2 *=/s/@REPLACE_DUP2@/0/ /^REPLACE_FCHOWNAT *=/s/@REPLACE_FCHOWNAT@/0/ /^REPLACE_FCLOSE *=/s/@REPLACE_FCLOSE@/0/ +/^REPLACE_FDOPEN *=/s/@REPLACE_FDOPEN@/0/ /^REPLACE_FFLUSH *=/s/@REPLACE_FFLUSH@/0/ /^REPLACE_FOPEN *=/s/@REPLACE_FOPEN@/0/ /^REPLACE_FPRINTF *=/s/@REPLACE_FPRINTF@/0/ @@ -473,9 +506,11 @@ am__cd = cd /^REPLACE_POPEN *=/s/@REPLACE_POPEN@/0/ /^REPLACE_PREAD *=/s/@REPLACE_PREAD@/0/ /^REPLACE_PRINTF *=/s/@REPLACE_PRINTF@/0/ +/^REPLACE_PTHREAD_SIGMASK *=/s/@REPLACE_PTHREAD_SIGMASK@/0/ /^REPLACE_PUTENV *=/s/@REPLACE_PUTENV@/0/ /^REPLACE_PWRITE *=/s/@REPLACE_PWRITE@/0/ /^REPLACE_READ *=/s/@REPLACE_READ@/0/ +/^REPLACE_RAISE *=/s/@REPLACE_RAISE@/0/ /^REPLACE_READLINK *=/s/@REPLACE_READLINK@/0/ /^REPLACE_REALLOC *=/s/@REPLACE_REALLOC@/0/ /^REPLACE_REALPATH *=/s/@REPLACE_REALPATH@/0/ @@ -510,6 +545,7 @@ am__cd = cd /^REPLACE_WRITE *=/s/@REPLACE_WRITE@/0/ /^SIG_ATOMIC_T_SUFFIX *=/s/@SIG_ATOMIC_T_SUFFIX@// /^SIZE_T_SUFFIX *=/s/@SIZE_T_SUFFIX@/u/ +/^ALLOCA_H *=/s/@[^@\n]*@/alloca.h/ /^STDBOOL_H *=/s/@[^@\n]*@// /^STDARG_H *=/s/@[^@\n]*@// /^STDDEF_H *=/s/@[^@\n]*@// @@ -522,7 +558,7 @@ am__cd = cd /^WINT_T_SUFFIX *=/s/@WINT_T_SUFFIX@// /am__append_1 *=.*gettext\.h/s/@[^@\n]*@/\#/ /am__append_2 *=.*verify\.h/s/@[^@\n]*@// -/^gl_LIBOBJS *=/s/@[^@\n]*@/getopt.o getopt1.o strftime.o time_r.o getloadavg.o md5.o filemode.o sha1.o/ +/^gl_LIBOBJS *=/s/@[^@\n]*@/getopt.o getopt1.o strftime.o time_r.o getloadavg.o pthread_sigmask.o/ /^BUILT_SOURCES *=/s/ *inttypes\.h// /^am_libgnu_a_OBJECTS *=/s/careadlinkat\.\$(OBJEXT)// /^am_libgnu_a_OBJECTS *=/s/allocator\.\$(OBJEXT)// @@ -560,6 +596,8 @@ s/^ -*test -z.*|| rm/ -rm/ s/@echo /@djecho/ # # Fix the recipes for header files +s/^@GL_GENERATE_ALLOCA_H_TRUE@// +s/^@GL_GENERATE_ALLOCA_H_FALSE@/\#/ s/^@GL_GENERATE_STDBOOL_H_TRUE@/\#/ s/^@GL_GENERATE_STDBOOL_H_FALSE@// s/^@GL_GENERATE_STDARG_H_TRUE@/\#/ @@ -574,6 +612,9 @@ arg-nonnull.h: $(top_srcdir)/build-aux/snippet/arg-nonnull.h\ /^cxxdefs\.h:/,/^[ ][ ]*mv /c\ cxxdefs.h: $(top_srcdir)/build-aux/snippet/cxxdefs.h\ sed -n -e '/_GL_CXXDEFS/,$$p' < $(top_srcdir)/build-aux/snippet/cxxdefs.h > $@ +/^warn-on-use\.h:/,/^[ ][ ]*mv /c\ +warn-on-use.h: $(top_srcdir)/build-aux/snippet/warn-on-use.h\ + sed -n -e '/^.ifndef/,$$p' < $(top_srcdir)/build-aux/snippet/warn-on-use.h > $@ s/^ [ ]*{ echo \(.*\); \\/ djecho \1 > $@-t/ s/^ [ ]*{ echo \(.*\) && \\/ djecho \1 > $@-t/ s/ \&\& \\ *$// diff --git a/src/ChangeLog b/src/ChangeLog index f26754d1135..dcbeffac1b4 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2011-09-29 Eli Zaretskii + + * sysdep.c (snprintf) [EOVERFLOW]: If EOVERFLOW is not defined, + use EDOM. + 2011-09-28 Eli Zaretskii * xdisp.c (compute_display_string_end): If there's no display diff --git a/src/sysdep.c b/src/sysdep.c index f97a8585253..b0d5a1abbe3 100644 --- a/src/sysdep.c +++ b/src/sysdep.c @@ -1844,7 +1844,11 @@ snprintf (char *buf, size_t bufsize, char const *format, ...) if (INT_MAX < nbytes) { +#ifdef EOVERFLOW errno = EOVERFLOW; +#else + errno = EDOM; +#endif return -1; } return nbytes; From 7cc013b5ba8d4141b100228494d4044b112120ad Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Thu, 29 Sep 2011 15:08:36 +0300 Subject: [PATCH 07/17] Restore GNUmakefile. Fix capitalization in config.bat. --- GNUmakefile | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++ config.bat | 2 +- 2 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 GNUmakefile diff --git a/GNUmakefile b/GNUmakefile new file mode 100644 index 00000000000..5fd329c78ef --- /dev/null +++ b/GNUmakefile @@ -0,0 +1,77 @@ +# Build Emacs from a fresh tarball or version-control checkout. + +# Copyright 2011 Free Software Foundation, Inc. +# +# This file is part of GNU Emacs. +# +# GNU Emacs is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# GNU Emacs is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Emacs. If not, see . +# +# written by Paul Eggert + + +# This GNUmakefile is for GNU Make. It is for convenience, so that +# one can run 'make' in an unconfigured source tree. In such a tree, +# this file causes GNU Make to first create a standard configuration +# with the default options, and then reinvokes itself on the +# newly-built Makefile. If the source tree is already configured, +# this file defers to the existing Makefile. + +# If you are using a non-GNU 'make', or if you want non-default build +# options, or if you want to build in an out-of-source tree, please +# run "configure" by hand. But run autogen.sh first, if the source +# was checked out directly from the repository. + + +# If a Makefile already exists, just use it. + +ifeq ($(wildcard Makefile),Makefile) +include Makefile +else + +# If cleaning and Makefile does not exist, don't bother creating it. +# The source tree is already clean, or is in a weird state that +# requires expert attention. + +ifeq ($(filter-out %clean,$(or $(MAKECMDGOALS),default)),) + +$(MAKECMDGOALS): + @echo >&2 'No Makefile; skipping $@.' + +else + +# No Makefile, and not cleaning. +# If 'configure' does not exist, Emacs must have been checked +# out directly from the repository; run ./autogen.sh. +# Once 'configure' exists, run it. +# Finally, run the actual 'make'. + +default $(filter-out configure Makefile,$(MAKECMDGOALS)): Makefile + $(MAKE) -f Makefile $(MAKECMDGOALS) +# Execute in sequence, so that multiple user goals don't conflict. +.NOTPARALLEL: + +configure: + @echo >&2 'There seems to be no "configure" file in this directory.' + @echo >&2 'Running ./autogen.sh || autogen/copy_autogen ...' + ./autogen.sh || autogen/copy_autogen + @echo >&2 '"configure" file built.' + +Makefile: configure + @echo >&2 'There seems to be no Makefile in this directory.' + @echo >&2 'Running ./configure ...' + ./configure + @echo >&2 'Makefile built.' + +endif +endif diff --git a/config.bat b/config.bat index 803fd48deef..cbbcf0cfcd5 100644 --- a/config.bat +++ b/config.bat @@ -329,7 +329,7 @@ goto End :gdbinitOk Echo Looking for the GDB init file...found rem GNUMakefile is not appropriate for MS-DOS so move it out of the way -If Exist GNUMakefile mv -f GNUMakefile GNUMakefile.unix +If Exist GNUmakefile mv -f GNUmakefile GNUmakefile.unix copy msdos\mainmake.v2 Makefile >nul rem ---------------------------------------------------------------------- goto End From e785f2ec1da2f60d24ab1998ff6208fde5c48561 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Thu, 29 Sep 2011 15:18:08 +0300 Subject: [PATCH 08/17] Fix ChangeLog entry for the last commit. --- ChangeLog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 878d76e59f8..75e098298cb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,8 +1,8 @@ 2011-09-29 Eli Zaretskii - * .bzrignore: Add ./GNUMakefile.unix. + * .bzrignore: Add ./GNUmakefile.unix. - * config.bat: Rename GNUMakefile, so it is not run on MS-DOS. + * config.bat: Rename GNUmakefile, so it is not run on MS-DOS. Rename signal.in.h and alloca.in.h. 2011-09-28 Eli Zaretskii From fe5f08dd8f85e6ede64ed0c8406b78e7940662a2 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Thu, 29 Sep 2011 16:03:42 +0300 Subject: [PATCH 09/17] Fix bug #9607 with vertical motion when auto-hscroll-mode is disabled. lisp/simple.el (line-move): If auto-hscroll-mode is disabled and the window is hscrolled, move by logical lines. (line-move-visual): Update the doc string to the above effect. --- lisp/ChangeLog | 6 ++++++ lisp/simple.el | 14 ++++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index b217a9093f6..42bd14094ba 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2011-09-29 Eli Zaretskii + + * simple.el (line-move): If auto-hscroll-mode is disabled and the + window is hscrolled, move by logical lines. (Bug#9607) + (line-move-visual): Update the doc string to the above effect. + 2011-09-29 Martin Rudalics * window.el (display-buffer-record-window): When WINDOW is the diff --git a/lisp/simple.el b/lisp/simple.el index 14ce5ed18ec..1ab90792bfa 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -4244,7 +4244,9 @@ screen, instead of relying on buffer contents alone. It takes into account variable-width characters and line continuation. If nil, `line-move' moves point by logical lines. A non-nil setting of `goal-column' overrides the value of this variable -and forces movement by logical lines." +and forces movement by logical lines. +Disabling `auto-hscroll-mode' also overrides forces movement by logical +lines when the window is horizontally scrolled." :type 'boolean :group 'editing-basics :version "23.1") @@ -4321,7 +4323,15 @@ and forces movement by logical lines." (not executing-kbd-macro) (line-move-partial arg noerror to-end)) (set-window-vscroll nil 0 t) - (if (and line-move-visual (not goal-column)) + (if (and line-move-visual + ;; Display-based column are incompatible with goal-column. + (not goal-column) + ;; When auto-hscroll-mode is turned off and the text in + ;; the window is scrolled to the left, display-based + ;; motion doesn't make sense (because each logical line + ;; occupies exactly one screen line). + (not (and (null auto-hscroll-mode) + (> (window-hscroll) 0)))) (line-move-visual arg noerror) (line-move-1 arg noerror to-end)))) From 5f91c1e5303017cad6ed7d7d903440b3328fe7ff Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Thu, 29 Sep 2011 17:17:42 +0300 Subject: [PATCH 10/17] Add a few more MS-DOS specific files to .bzrignore. .bzrignore: Add lib/SYS, lib/alloca.in-h, lib/signal.in-h. --- ChangeLog | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 75e098298cb..3e76c91b196 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,7 @@ 2011-09-29 Eli Zaretskii - * .bzrignore: Add ./GNUmakefile.unix. + * .bzrignore: Add ./GNUmakefile.unix, lib/SYS, lib/alloca.in-h, + lib/signal.in-h. * config.bat: Rename GNUmakefile, so it is not run on MS-DOS. Rename signal.in.h and alloca.in.h. From cb993c584c8ef91f5352ec9aa97d26fd76cfd643 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Thu, 29 Sep 2011 20:25:46 -0700 Subject: [PATCH 11/17] Port --enable-checking=all to Fedora 14 x86. * alloc.c (XMALLOC_OVERRUN_CHECK_OVERHEAD, XMALLOC_OVERRUN_CHECK_SIZE): Move to lisp.h. (xmalloc_put_size, xmalloc_get_size, overrun_check_malloc) (overrun_check_realloc, overrun_check_free): Use XMALLOC_OVERRUN_SIZE_SIZE, not sizeof (size_t). That way, xmalloc returns a properly-aligned pointer even if XMALLOC_OVERRUN_CHECK is defined. The old debugging code happened to align OK on typical 64-bit hosts, but not on Fedora 14 x86. * charset.c (syms_of_charset): Take XMALLOC_OVERRUN_CHECK_OVERHEAD into account when calculating the initial malloc maximum. * lisp.h (XMALLOC_OVERRUN_CHECK_OVERHEAD, XMALLOC_OVERRUN_CHECK_SIZE): Move here from alloc.c, so that charset.c can use it too. Properly align; the old code wasn't right for common 32-bit hosts when configured with --enable-checking=all. (XMALLOC_BASE_ALIGNMENT, COMMON_MULTIPLE, XMALLOC_HEADER_ALIGNMENT) (XMALLOC_OVERRUN_SIZE_SIZE): New macros. --- src/ChangeLog | 20 ++++++++++++++++++++ src/alloc.c | 47 +++++++++++++++-------------------------------- src/charset.c | 2 +- src/lisp.h | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 84 insertions(+), 33 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index dcbeffac1b4..d6e5390c84f 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,23 @@ +2011-09-30 Paul Eggert + + Port --enable-checking=all to Fedora 14 x86. + * alloc.c (XMALLOC_OVERRUN_CHECK_OVERHEAD, XMALLOC_OVERRUN_CHECK_SIZE): + Move to lisp.h. + (xmalloc_put_size, xmalloc_get_size, overrun_check_malloc) + (overrun_check_realloc, overrun_check_free): + Use XMALLOC_OVERRUN_SIZE_SIZE, not sizeof (size_t). + That way, xmalloc returns a properly-aligned pointer even if + XMALLOC_OVERRUN_CHECK is defined. The old debugging code happened + to align OK on typical 64-bit hosts, but not on Fedora 14 x86. + * charset.c (syms_of_charset): Take XMALLOC_OVERRUN_CHECK_OVERHEAD + into account when calculating the initial malloc maximum. + * lisp.h (XMALLOC_OVERRUN_CHECK_OVERHEAD, XMALLOC_OVERRUN_CHECK_SIZE): + Move here from alloc.c, so that charset.c can use it too. + Properly align; the old code wasn't right for common 32-bit hosts + when configured with --enable-checking=all. + (XMALLOC_BASE_ALIGNMENT, COMMON_MULTIPLE, XMALLOC_HEADER_ALIGNMENT) + (XMALLOC_OVERRUN_SIZE_SIZE): New macros. + 2011-09-29 Eli Zaretskii * sysdep.c (snprintf) [EOVERFLOW]: If EOVERFLOW is not defined, diff --git a/src/alloc.c b/src/alloc.c index ad1741e308f..4c5094b8f48 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -482,27 +482,10 @@ buffer_memory_full (EMACS_INT nbytes) xsignal (Qnil, Vmemory_signal_data); } - -#ifndef XMALLOC_OVERRUN_CHECK -#define XMALLOC_OVERRUN_CHECK_OVERHEAD 0 -#else +#ifdef XMALLOC_OVERRUN_CHECK /* Check for overrun in malloc'ed buffers by wrapping a header and trailer - around each block. - - The header consists of 16 fixed bytes followed by sizeof (size_t) bytes - containing the original block size in little-endian order, - while the trailer consists of 16 fixed bytes. - - The header is used to detect whether this block has been allocated - through these functions -- as it seems that some low-level libc - functions may bypass the malloc hooks. -*/ - - -#define XMALLOC_OVERRUN_CHECK_SIZE 16 -#define XMALLOC_OVERRUN_CHECK_OVERHEAD \ - (2 * XMALLOC_OVERRUN_CHECK_SIZE + sizeof (size_t)) + around each block. */ static char const xmalloc_overrun_check_header[XMALLOC_OVERRUN_CHECK_SIZE] = { '\x9a', '\x9b', '\xae', '\xaf', @@ -522,9 +505,9 @@ static void xmalloc_put_size (unsigned char *ptr, size_t size) { int i; - for (i = 0; i < sizeof (size_t); i++) + for (i = 0; i < XMALLOC_OVERRUN_SIZE_SIZE; i++) { - *--ptr = size & (1 << CHAR_BIT) - 1; + *--ptr = size & ((1 << CHAR_BIT) - 1); size >>= CHAR_BIT; } } @@ -534,8 +517,8 @@ xmalloc_get_size (unsigned char *ptr) { size_t size = 0; int i; - ptr -= sizeof (size_t); - for (i = 0; i < sizeof (size_t); i++) + ptr -= XMALLOC_OVERRUN_SIZE_SIZE; + for (i = 0; i < XMALLOC_OVERRUN_SIZE_SIZE; i++) { size <<= CHAR_BIT; size += *ptr++; @@ -579,7 +562,7 @@ overrun_check_malloc (size_t size) if (val && check_depth == 1) { memcpy (val, xmalloc_overrun_check_header, XMALLOC_OVERRUN_CHECK_SIZE); - val += XMALLOC_OVERRUN_CHECK_SIZE + sizeof (size_t); + val += XMALLOC_OVERRUN_CHECK_SIZE + XMALLOC_OVERRUN_SIZE_SIZE; xmalloc_put_size (val, size); memcpy (val + size, xmalloc_overrun_check_trailer, XMALLOC_OVERRUN_CHECK_SIZE); @@ -603,7 +586,7 @@ overrun_check_realloc (POINTER_TYPE *block, size_t size) if (val && check_depth == 1 && memcmp (xmalloc_overrun_check_header, - val - XMALLOC_OVERRUN_CHECK_SIZE - sizeof (size_t), + val - XMALLOC_OVERRUN_CHECK_SIZE - XMALLOC_OVERRUN_SIZE_SIZE, XMALLOC_OVERRUN_CHECK_SIZE) == 0) { size_t osize = xmalloc_get_size (val); @@ -611,8 +594,8 @@ overrun_check_realloc (POINTER_TYPE *block, size_t size) XMALLOC_OVERRUN_CHECK_SIZE)) abort (); memset (val + osize, 0, XMALLOC_OVERRUN_CHECK_SIZE); - val -= XMALLOC_OVERRUN_CHECK_SIZE + sizeof (size_t); - memset (val, 0, XMALLOC_OVERRUN_CHECK_SIZE + sizeof (size_t)); + val -= XMALLOC_OVERRUN_CHECK_SIZE + XMALLOC_OVERRUN_SIZE_SIZE; + memset (val, 0, XMALLOC_OVERRUN_CHECK_SIZE + XMALLOC_OVERRUN_SIZE_SIZE); } val = (unsigned char *) realloc ((POINTER_TYPE *)val, size + overhead); @@ -620,7 +603,7 @@ overrun_check_realloc (POINTER_TYPE *block, size_t size) if (val && check_depth == 1) { memcpy (val, xmalloc_overrun_check_header, XMALLOC_OVERRUN_CHECK_SIZE); - val += XMALLOC_OVERRUN_CHECK_SIZE + sizeof (size_t); + val += XMALLOC_OVERRUN_CHECK_SIZE + XMALLOC_OVERRUN_SIZE_SIZE; xmalloc_put_size (val, size); memcpy (val + size, xmalloc_overrun_check_trailer, XMALLOC_OVERRUN_CHECK_SIZE); @@ -640,7 +623,7 @@ overrun_check_free (POINTER_TYPE *block) if (val && check_depth == 1 && memcmp (xmalloc_overrun_check_header, - val - XMALLOC_OVERRUN_CHECK_SIZE - sizeof (size_t), + val - XMALLOC_OVERRUN_CHECK_SIZE - XMALLOC_OVERRUN_SIZE_SIZE, XMALLOC_OVERRUN_CHECK_SIZE) == 0) { size_t osize = xmalloc_get_size (val); @@ -648,12 +631,12 @@ overrun_check_free (POINTER_TYPE *block) XMALLOC_OVERRUN_CHECK_SIZE)) abort (); #ifdef XMALLOC_CLEAR_FREE_MEMORY - val -= XMALLOC_OVERRUN_CHECK_SIZE + sizeof (size_t); + val -= XMALLOC_OVERRUN_CHECK_SIZE + XMALLOC_OVERRUN_SIZE_SIZE; memset (val, 0xff, osize + XMALLOC_OVERRUN_CHECK_OVERHEAD); #else memset (val + osize, 0, XMALLOC_OVERRUN_CHECK_SIZE); - val -= XMALLOC_OVERRUN_CHECK_SIZE + sizeof (size_t); - memset (val, 0, XMALLOC_OVERRUN_CHECK_SIZE + sizeof (size_t)); + val -= XMALLOC_OVERRUN_CHECK_SIZE + XMALLOC_OVERRUN_SIZE_SIZE; + memset (val, 0, XMALLOC_OVERRUN_CHECK_SIZE + XMALLOC_OVERRUN_SIZE_SIZE); #endif } diff --git a/src/charset.c b/src/charset.c index 6967b9df611..1209ac6b68d 100644 --- a/src/charset.c +++ b/src/charset.c @@ -2337,7 +2337,7 @@ syms_of_charset (void) mmap for larger allocations, and these don't work well across dumped systems. */ enum { - initial_malloc_max = (1 << 16) - 1, + initial_malloc_max = (1 << 16) - 1 - XMALLOC_OVERRUN_CHECK_OVERHEAD, charset_table_size_init = initial_malloc_max / sizeof (struct charset) }; diff --git a/src/lisp.h b/src/lisp.h index e9a525a32b5..7aba299f162 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -3568,6 +3568,54 @@ extern int initialized; extern int immediate_quit; /* Nonzero means ^G can quit instantly */ +/* Overhead for overrun check in malloc'ed buffers. The check + operates by wrapping a header and trailer around each block. + + The header consists of XMALLOC_OVERRUN_CHECK_SIZE fixed bytes + followed by XMALLOC_OVERRUN_SIZE_SIZE bytes containing the original + block size in little-endian order. The trailer consists of + XMALLOC_OVERRUN_CHECK_SIZE fixed bytes. + + The header is used to detect whether this block has been allocated + through these functions, as some low-level libc functions may + bypass the malloc hooks. */ + +#ifndef XMALLOC_OVERRUN_CHECK +# define XMALLOC_OVERRUN_CHECK_OVERHEAD 0 +#else + +# define XMALLOC_OVERRUN_CHECK_SIZE 16 +# define XMALLOC_OVERRUN_CHECK_OVERHEAD \ + (2 * XMALLOC_OVERRUN_CHECK_SIZE + XMALLOC_OVERRUN_SIZE_SIZE) + +/* Define XMALLOC_OVERRUN_SIZE_SIZE so that (1) it's large enough to + hold a size_t value and (2) the header size is a multiple of the + alignment that Emacs needs for C types and for USE_LSB_TAG. */ +# define XMALLOC_BASE_ALIGNMENT \ + offsetof ( \ + struct { \ + union { long double d; intmax_t i; void *p; } u; \ + char c; \ + }, \ + c) +# ifdef USE_LSB_TAG +/* A common multiple of the positive integers A and B. Ideally this + would be the least common multiple, but there's no way to do that + as a constant expression in C, so do the best that we can easily do. */ +# define COMMON_MULTIPLE(a, b) \ + ((a) % (b) == 0 ? (a) : (b) % (a) == 0 ? (b) : (a) * (b)) +# define XMALLOC_HEADER_ALIGNMENT \ + COMMON_MULTIPLE (1 << GCTYPEBITS, XMALLOC_BASE_ALIGNMENT) +# else +# define XMALLOC_HEADER_ALIGNMENT XMALLOC_BASE_ALIGNMENT +# endif +# define XMALLOC_OVERRUN_SIZE_SIZE \ + (((XMALLOC_OVERRUN_CHECK_SIZE + sizeof (size_t) \ + + XMALLOC_HEADER_ALIGNMENT - 1) \ + / XMALLOC_HEADER_ALIGNMENT * XMALLOC_HEADER_ALIGNMENT) \ + - XMALLOC_OVERRUN_CHECK_SIZE) +#endif + extern POINTER_TYPE *xmalloc (size_t); extern POINTER_TYPE *xrealloc (POINTER_TYPE *, size_t); extern void xfree (POINTER_TYPE *); From 3930c88bfc6d4e0d98baf6edabb78dec58090938 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Fri, 30 Sep 2011 00:16:38 -0700 Subject: [PATCH 12/17] Port --enable-checking=all to Fedora 14 x86-64. * charset.c (syms_of_charset): Also account for glibc malloc's internal overhead when calculating the initial malloc maximum. --- src/ChangeLog | 4 ++++ src/charset.c | 4 +++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/ChangeLog b/src/ChangeLog index d6e5390c84f..d976234f0c5 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,9 @@ 2011-09-30 Paul Eggert + Port --enable-checking=all to Fedora 14 x86-64. + * charset.c (syms_of_charset): Also account for glibc malloc's + internal overhead when calculating the initial malloc maximum. + Port --enable-checking=all to Fedora 14 x86. * alloc.c (XMALLOC_OVERRUN_CHECK_OVERHEAD, XMALLOC_OVERRUN_CHECK_SIZE): Move to lisp.h. diff --git a/src/charset.c b/src/charset.c index 1209ac6b68d..f1b4897ffe6 100644 --- a/src/charset.c +++ b/src/charset.c @@ -2337,7 +2337,9 @@ syms_of_charset (void) mmap for larger allocations, and these don't work well across dumped systems. */ enum { - initial_malloc_max = (1 << 16) - 1 - XMALLOC_OVERRUN_CHECK_OVERHEAD, + glibc_malloc_overhead = 3 * sizeof (size_t) - 1, + initial_malloc_max = + (1 << 16) - 1 - glibc_malloc_overhead - XMALLOC_OVERRUN_CHECK_OVERHEAD, charset_table_size_init = initial_malloc_max / sizeof (struct charset) }; From 04c7078847acf841ee45c24007ef9615db57e595 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Fri, 30 Sep 2011 10:25:15 +0300 Subject: [PATCH 13/17] src/ChangeLog: Minor typos fixed. --- src/ChangeLog | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index d976234f0c5..b8b4d54b4f7 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -24,7 +24,7 @@ 2011-09-29 Eli Zaretskii - * sysdep.c (snprintf) [EOVERFLOW]: If EOVERFLOW is not defined, + * sysdep.c (snprintf) [!EOVERFLOW]: If EOVERFLOW is not defined, use EDOM. 2011-09-28 Eli Zaretskii @@ -45,8 +45,8 @@ * xdisp.c (handle_invisible_prop): If invisible text ends on a newline, reseat the iterator instead of bidi-iterating there one character at a time. (Bug#9610) - (BUFFER_POS_REACHED_P, move_it_in_display_line_to): Bail when past - TO_CHARPOS if the bidi iterator is at base embedding level. + (BUFFER_POS_REACHED_P, move_it_in_display_line_to): Bail out when + past TO_CHARPOS if the bidi iterator is at base embedding level. 2011-09-27 Andreas Schwab @@ -83,9 +83,9 @@ value is now t. Doc fix. * indent.c (Fvertical_motion): Compute and apply the overshoot - logic when moving up, not only when moving down. Fix the + logic also when moving up, not only when moving down. Fix the confusing name and values of the it_overshoot_expected variable; - logic changes accordingly. (Bug#9254) (Bug#9549) + logic changed accordingly. (Bug#9254) (Bug#9549) * xdisp.c (pos_visible_p): Produce correct pixel coordinates when CHARPOS is covered by a display string which includes newlines. @@ -101,7 +101,7 @@ 2011-09-24 Jim Meyering - do not ignore write error for any output size + Do not ignore write error for any output size. The previous change was incomplete. While it makes emacs --batch detect the vast majority of stdout write failures, errors were still ignored whenever the output size is From 9ceebf39d984e4415dbb9ae62e883902051257c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Dj=C3=A4rv?= Date: Fri, 30 Sep 2011 09:42:26 +0200 Subject: [PATCH 14/17] * nsterm.m (windowDidResize): Call x_set_window_size only when ns_in_resize is true. Otherwise set pixelwidth/height and call change_frame_size. Fixes: debbugs:9628 --- src/ChangeLog | 6 ++++++ src/nsterm.m | 18 +++++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/ChangeLog b/src/ChangeLog index b8b4d54b4f7..37d2de93c11 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,9 @@ +2011-09-30 Jan Djärv + + * nsterm.m (windowDidResize): Call x_set_window_size only when + ns_in_resize is true. Otherwise set pixelwidth/height and + call change_frame_size (Bug#9628). + 2011-09-30 Paul Eggert Port --enable-checking=all to Fedora 14 x86-64. diff --git a/src/nsterm.m b/src/nsterm.m index 827404a2974..a2ae5e69512 100644 --- a/src/nsterm.m +++ b/src/nsterm.m @@ -5357,7 +5357,23 @@ ns_term_shutdown (int sig) a "windowDidResize" which calls x_set_window_size). */ #ifndef NS_IMPL_GNUSTEP if (cols > 0 && rows > 0) - x_set_window_size (emacsframe, 0, cols, rows); + { + if (ns_in_resize) + x_set_window_size (emacsframe, 0, cols, rows); + else + { + NSWindow *window = [self window]; + NSRect wr = [window frame]; + FRAME_PIXEL_WIDTH (emacsframe) = (int)wr.size.width + - emacsframe->border_width; + FRAME_PIXEL_HEIGHT (emacsframe) = (int)wr.size.height + - FRAME_NS_TITLEBAR_HEIGHT (emacsframe) + - FRAME_TOOLBAR_HEIGHT (emacsframe); + change_frame_size (emacsframe, rows, cols, 0, 0, 1); + SET_FRAME_GARBAGED (emacsframe); + cancel_mouse_face (emacsframe); + } + } #endif ns_send_appdefined (-1); From 199e4c7e5d116a37d76698f611133aa84fcbac63 Mon Sep 17 00:00:00 2001 From: Martin Rudalics Date: Fri, 30 Sep 2011 15:21:29 +0200 Subject: [PATCH 15/17] Insert initial-scratch-message before displaying *scratch*. (Bug#9636) * startup.el (command-line-1): Fix last fix by inserting initial-scratch-message into *scratch* before displaying it. (Bug#9626) and (Bug#9636) --- lisp/ChangeLog | 6 ++++++ lisp/startup.el | 25 ++++++++++++++----------- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 42bd14094ba..13efd17cfac 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2011-09-30 Martin Rudalics + + * startup.el (command-line-1): Fix last fix by inserting + initial-scratch-message into *scratch* before displaying it. + (Bug#9626) and (Bug#9636) + 2011-09-29 Eli Zaretskii * simple.el (line-move): If auto-hscroll-mode is disabled and the diff --git a/lisp/startup.el b/lisp/startup.el index 4e6f0af0368..16cf41506bd 100644 --- a/lisp/startup.el +++ b/lisp/startup.el @@ -2307,23 +2307,26 @@ A fancy display is used on graphic displays, normal otherwise." ;; abort later. (unless (frame-live-p (selected-frame)) (kill-emacs nil)))))) + (when (eq initial-buffer-choice t) + ;; When initial-buffer-choice equals t make sure that *scratch* + ;; exists. + (get-buffer-create "*scratch*")) + + ;; If *scratch* exists and is empty, insert initial-scratch-message. + ;; Do this before switching to *scratch* below to handle bug#9605. + (and initial-scratch-message + (get-buffer "*scratch*") + (with-current-buffer "*scratch*" + (when (zerop (buffer-size)) + (insert initial-scratch-message) + (set-buffer-modified-p nil)))) + (when initial-buffer-choice (cond ((eq initial-buffer-choice t) (switch-to-buffer (get-buffer-create "*scratch*"))) ((stringp initial-buffer-choice) (find-file initial-buffer-choice)))) - ;; If *scratch* exists and is empty, insert initial-scratch-message. - (and initial-scratch-message - (get-buffer "*scratch*") - (with-current-buffer "*scratch*" - (when (zerop (buffer-size)) - ;; Insert before markers to make sure that window-point - ;; appears at end of buffer when *scratch* is displayed - ;; (Bug#9605). - (insert-before-markers initial-scratch-message) - (set-buffer-modified-p nil)))) - (if (or inhibit-startup-screen initial-buffer-choice noninteractive From cbc5ee224e558a2ee11c7abab293b2f2084852cd Mon Sep 17 00:00:00 2001 From: Martin Rudalics Date: Fri, 30 Sep 2011 15:23:12 +0200 Subject: [PATCH 16/17] Fix bug number in ChangeLog entry. --- lisp/ChangeLog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 13efd17cfac..38651d42596 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -2,7 +2,7 @@ * startup.el (command-line-1): Fix last fix by inserting initial-scratch-message into *scratch* before displaying it. - (Bug#9626) and (Bug#9636) + (Bug#9605) and (Bug#9636) 2011-09-29 Eli Zaretskii From f701dc2abbcfb64c0c4d02ac899dccb03ee2b246 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Fri, 30 Sep 2011 10:07:40 -0700 Subject: [PATCH 17/17] Remove dependency on glibc malloc internals. * alloc.c (XMALLOC_OVERRUN_CHECK_OVERHEAD, XMALLOC_OVERRUN_CHECK_SIZE): Move back here from lisp.h, but with their new implementations. (XMALLOC_BASE_ALIGNMENT, COMMON_MULTIPLE, XMALLOC_HEADER_ALIGNMENT) (XMALLOC_OVERRUN_SIZE_SIZE): Move these new lisp.h macros here. * charset.c (charset_table_init): New static var. (syms_of_charset): Use it instead of xmalloc. This removes a dependency on glibc malloc internals. See Eli Zaretskii's comment in . * lisp.h (XMALLOC_OVERRUN_CHECK_OVERHEAD, XMALLOC_OVERRUN_CHECK_SIZE): Move back to alloc.c. (XMALLOC_BASE_ALIGNMENT, COMMON_MULTIPLE, XMALLOC_HEADER_ALIGNMENT) (XMALLOC_OVERRUN_SIZE_SIZE): Move to alloc.c. --- src/ChangeLog | 16 ++++++++++++++++ src/alloc.c | 47 +++++++++++++++++++++++++++++++++++++++++++++-- src/charset.c | 38 ++++++++++++++++++-------------------- src/lisp.h | 48 ------------------------------------------------ 4 files changed, 79 insertions(+), 70 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 37d2de93c11..89e705efd73 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,19 @@ +2011-09-30 Paul Eggert + + Remove dependency on glibc malloc internals. + * alloc.c (XMALLOC_OVERRUN_CHECK_OVERHEAD, XMALLOC_OVERRUN_CHECK_SIZE): + Move back here from lisp.h, but with their new implementations. + (XMALLOC_BASE_ALIGNMENT, COMMON_MULTIPLE, XMALLOC_HEADER_ALIGNMENT) + (XMALLOC_OVERRUN_SIZE_SIZE): Move these new lisp.h macros here. + * charset.c (charset_table_init): New static var. + (syms_of_charset): Use it instead of xmalloc. This removes a + dependency on glibc malloc internals. See Eli Zaretskii's comment in + . + * lisp.h (XMALLOC_OVERRUN_CHECK_OVERHEAD, XMALLOC_OVERRUN_CHECK_SIZE): + Move back to alloc.c. + (XMALLOC_BASE_ALIGNMENT, COMMON_MULTIPLE, XMALLOC_HEADER_ALIGNMENT) + (XMALLOC_OVERRUN_SIZE_SIZE): Move to alloc.c. + 2011-09-30 Jan Djärv * nsterm.m (windowDidResize): Call x_set_window_size only when diff --git a/src/alloc.c b/src/alloc.c index 4c5094b8f48..ead5c8a8ca4 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -482,10 +482,53 @@ buffer_memory_full (EMACS_INT nbytes) xsignal (Qnil, Vmemory_signal_data); } -#ifdef XMALLOC_OVERRUN_CHECK + +#ifndef XMALLOC_OVERRUN_CHECK +#define XMALLOC_OVERRUN_CHECK_OVERHEAD 0 +#else /* Check for overrun in malloc'ed buffers by wrapping a header and trailer - around each block. */ + around each block. + + The header consists of XMALLOC_OVERRUN_CHECK_SIZE fixed bytes + followed by XMALLOC_OVERRUN_SIZE_SIZE bytes containing the original + block size in little-endian order. The trailer consists of + XMALLOC_OVERRUN_CHECK_SIZE fixed bytes. + + The header is used to detect whether this block has been allocated + through these functions, as some low-level libc functions may + bypass the malloc hooks. */ + +#define XMALLOC_OVERRUN_CHECK_SIZE 16 +#define XMALLOC_OVERRUN_CHECK_OVERHEAD \ + (2 * XMALLOC_OVERRUN_CHECK_SIZE + XMALLOC_OVERRUN_SIZE_SIZE) + +/* Define XMALLOC_OVERRUN_SIZE_SIZE so that (1) it's large enough to + hold a size_t value and (2) the header size is a multiple of the + alignment that Emacs needs for C types and for USE_LSB_TAG. */ +#define XMALLOC_BASE_ALIGNMENT \ + offsetof ( \ + struct { \ + union { long double d; intmax_t i; void *p; } u; \ + char c; \ + }, \ + c) +#ifdef USE_LSB_TAG +/* A common multiple of the positive integers A and B. Ideally this + would be the least common multiple, but there's no way to do that + as a constant expression in C, so do the best that we can easily do. */ +# define COMMON_MULTIPLE(a, b) \ + ((a) % (b) == 0 ? (a) : (b) % (a) == 0 ? (b) : (a) * (b)) +# define XMALLOC_HEADER_ALIGNMENT \ + COMMON_MULTIPLE (1 << GCTYPEBITS, XMALLOC_BASE_ALIGNMENT) +#else +# define XMALLOC_HEADER_ALIGNMENT XMALLOC_BASE_ALIGNMENT +#endif +#define XMALLOC_OVERRUN_SIZE_SIZE \ + (((XMALLOC_OVERRUN_CHECK_SIZE + sizeof (size_t) \ + + XMALLOC_HEADER_ALIGNMENT - 1) \ + / XMALLOC_HEADER_ALIGNMENT * XMALLOC_HEADER_ALIGNMENT) \ + - XMALLOC_OVERRUN_CHECK_SIZE) static char const xmalloc_overrun_check_header[XMALLOC_OVERRUN_CHECK_SIZE] = { '\x9a', '\x9b', '\xae', '\xaf', diff --git a/src/charset.c b/src/charset.c index f1b4897ffe6..8d6a3982d14 100644 --- a/src/charset.c +++ b/src/charset.c @@ -1162,10 +1162,10 @@ usage: (define-charset-internal ...) */) sizeof *charset_table); memcpy (new_table, charset_table, old_size * sizeof *new_table); charset_table = new_table; - /* FIXME: Doesn't this leak memory? The old charset_table becomes - unreachable. It could be that this is intentional, because the - old charset table may be in a dumped emacs, and reallocating such - a table may not work. If the memory leak is intentional, a + /* FIXME: This leaks memory, as the old charset_table becomes + unreachable. If the old charset table is charset_table_init + then this leak is intentional; otherwise, it's unclear. + If the latter memory leak is intentional, a comment should be added to explain this. If not, the old charset_table should be freed, by passing it as the 1st argument to xpalloc and removing the memcpy. */ @@ -2327,22 +2327,21 @@ init_charset_once (void) #ifdef emacs +/* Allocate an initial charset table that is large enough to handle + Emacs while it is bootstrapping. As of September 2011, the size + needs to be at least 166; make it a bit bigger to allow for future + expansion. + + Don't make the value so small that the table is reallocated during + bootstrapping, as glibc malloc calls larger than just under 64 KiB + during an initial bootstrap wreak havoc after dumping; see the + M_MMAP_THRESHOLD value in alloc.c, plus there is a extra overhead + internal to glibc malloc and perhaps to Emacs malloc debugging. */ +static struct charset charset_table_init[180]; + void syms_of_charset (void) { - /* Allocate an initial charset table that is just under 64 KiB in size. - This should be large enough so that the charset table need not be - reallocated during an initial bootstrap. Allocating anything larger than - 64 KiB in an initial run may not work, because glibc malloc might use - mmap for larger allocations, and these don't work well across dumped - systems. */ - enum { - glibc_malloc_overhead = 3 * sizeof (size_t) - 1, - initial_malloc_max = - (1 << 16) - 1 - glibc_malloc_overhead - XMALLOC_OVERRUN_CHECK_OVERHEAD, - charset_table_size_init = initial_malloc_max / sizeof (struct charset) - }; - DEFSYM (Qcharsetp, "charsetp"); DEFSYM (Qascii, "ascii"); @@ -2375,9 +2374,8 @@ syms_of_charset (void) Vcharset_hash_table = Fmake_hash_table (2, args); } - charset_table = (struct charset *) xmalloc (sizeof (struct charset) - * charset_table_size_init); - charset_table_size = charset_table_size_init; + charset_table = charset_table_init; + charset_table_size = sizeof charset_table_init / sizeof *charset_table_init; charset_table_used = 0; defsubr (&Scharsetp); diff --git a/src/lisp.h b/src/lisp.h index 7aba299f162..e9a525a32b5 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -3568,54 +3568,6 @@ extern int initialized; extern int immediate_quit; /* Nonzero means ^G can quit instantly */ -/* Overhead for overrun check in malloc'ed buffers. The check - operates by wrapping a header and trailer around each block. - - The header consists of XMALLOC_OVERRUN_CHECK_SIZE fixed bytes - followed by XMALLOC_OVERRUN_SIZE_SIZE bytes containing the original - block size in little-endian order. The trailer consists of - XMALLOC_OVERRUN_CHECK_SIZE fixed bytes. - - The header is used to detect whether this block has been allocated - through these functions, as some low-level libc functions may - bypass the malloc hooks. */ - -#ifndef XMALLOC_OVERRUN_CHECK -# define XMALLOC_OVERRUN_CHECK_OVERHEAD 0 -#else - -# define XMALLOC_OVERRUN_CHECK_SIZE 16 -# define XMALLOC_OVERRUN_CHECK_OVERHEAD \ - (2 * XMALLOC_OVERRUN_CHECK_SIZE + XMALLOC_OVERRUN_SIZE_SIZE) - -/* Define XMALLOC_OVERRUN_SIZE_SIZE so that (1) it's large enough to - hold a size_t value and (2) the header size is a multiple of the - alignment that Emacs needs for C types and for USE_LSB_TAG. */ -# define XMALLOC_BASE_ALIGNMENT \ - offsetof ( \ - struct { \ - union { long double d; intmax_t i; void *p; } u; \ - char c; \ - }, \ - c) -# ifdef USE_LSB_TAG -/* A common multiple of the positive integers A and B. Ideally this - would be the least common multiple, but there's no way to do that - as a constant expression in C, so do the best that we can easily do. */ -# define COMMON_MULTIPLE(a, b) \ - ((a) % (b) == 0 ? (a) : (b) % (a) == 0 ? (b) : (a) * (b)) -# define XMALLOC_HEADER_ALIGNMENT \ - COMMON_MULTIPLE (1 << GCTYPEBITS, XMALLOC_BASE_ALIGNMENT) -# else -# define XMALLOC_HEADER_ALIGNMENT XMALLOC_BASE_ALIGNMENT -# endif -# define XMALLOC_OVERRUN_SIZE_SIZE \ - (((XMALLOC_OVERRUN_CHECK_SIZE + sizeof (size_t) \ - + XMALLOC_HEADER_ALIGNMENT - 1) \ - / XMALLOC_HEADER_ALIGNMENT * XMALLOC_HEADER_ALIGNMENT) \ - - XMALLOC_OVERRUN_CHECK_SIZE) -#endif - extern POINTER_TYPE *xmalloc (size_t); extern POINTER_TYPE *xrealloc (POINTER_TYPE *, size_t); extern void xfree (POINTER_TYPE *);