From c2418359b3e9f2eb7a72f4ea5245637190571cc8 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Mon, 1 Jul 2013 17:57:46 -0700 Subject: [PATCH] Simplify buildobj processing. * Makefile.in (buildobj.h): Make it a sequence of strings each followed by comma, rather than a single string. Put it into a .tmp file in case there's an error while generating it. (gl-stamp): Use .tmp for temp files. (mostlyclean): Clean .tmp files. * doc.c (buildobj): Move to just the routine that needs it. It's now an array of strings, so processing is simpler. --- src/ChangeLog | 11 +++++++++++ src/Makefile.in | 13 ++++++++----- src/doc.c | 33 ++++++++++----------------------- 3 files changed, 29 insertions(+), 28 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 552ce4f70a..2dc1af6d02 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,14 @@ +2013-07-02 Paul Eggert + + Simplify buildobj processing. + * Makefile.in (buildobj.h): Make it a sequence of strings each + followed by comma, rather than a single string. Put it into a + .tmp file in case there's an error while generating it. + (gl-stamp): Use .tmp for temp files. + (mostlyclean): Clean .tmp files. + * doc.c (buildobj): Move to just the routine that needs it. + It's now an array of strings, so processing is simpler. + 2013-07-01 Paul Eggert Fix bug re noninteractive multithreaded memory allocation (Bug#14569). diff --git a/src/Makefile.in b/src/Makefile.in index 90083eb910..931b3e71d6 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -477,16 +477,19 @@ $(libsrc)/make-docfile$(EXEEXT): cd $(libsrc); $(MAKE) $(MFLAGS) make-docfile$(EXEEXT) buildobj.h: Makefile - echo "#define BUILDOBJ \"$(ALLOBJS) " "\"" >$@ + for i in $(ALLOBJS); do \ + echo "$$i" | sed 's,.*/,,; s/\.obj$$/\.o/; s/^/"/; s/$$/",/' \ + || exit; \ + done >$@.tmp + mv $@.tmp $@ globals.h: gl-stamp; @true GLOBAL_SOURCES = $(base_obj:.o=.c) $(NS_OBJC_OBJ:.o=.m) gl-stamp: $(libsrc)/make-docfile$(EXEEXT) $(GLOBAL_SOURCES) - @rm -f gl-tmp - $(libsrc)/make-docfile -d $(srcdir) -g $(obj) > gl-tmp - $(srcdir)/../build-aux/move-if-change gl-tmp globals.h + $(libsrc)/make-docfile -d $(srcdir) -g $(obj) > gl.tmp + $(srcdir)/../build-aux/move-if-change gl.tmp globals.h echo timestamp > $@ $(ALLOBJS): globals.h @@ -557,7 +560,7 @@ mostlyclean: rm -f bootstrap-emacs$(EXEEXT) emacs-$(version)$(EXEEXT) rm -f buildobj.h rm -f globals.h gl-stamp - rm -f *.res + rm -f *.res *.tmp clean: mostlyclean rm -f emacs-*.*.*$(EXEEXT) emacs$(EXEEXT) -rm -rf $(DEPDIR) diff --git a/src/doc.c b/src/doc.c index 155a989130..3c5a682c00 100644 --- a/src/doc.c +++ b/src/doc.c @@ -33,7 +33,6 @@ along with GNU Emacs. If not, see . */ #include "buffer.h" #include "keyboard.h" #include "keymap.h" -#include "buildobj.h" Lisp_Object Qfunction_documentation; @@ -555,7 +554,6 @@ store_function_docstring (Lisp_Object obj, ptrdiff_t offset) } } -static const char buildobj[] = BUILDOBJ; DEFUN ("Snarf-documentation", Fsnarf_documentation, Ssnarf_documentation, 1, 1, 0, @@ -598,27 +596,16 @@ the same file name is found in the `doc-directory'. */) /* Vbuild_files is nil when temacs is run, and non-nil after that. */ if (NILP (Vbuild_files)) - { - const char *beg, *end; - - for (beg = buildobj; *beg; beg = end) - { - ptrdiff_t len; - - while (*beg && c_isspace (*beg)) ++beg; - - for (end = beg; *end && ! c_isspace (*end); ++end) - if (*end == '/') beg = end + 1; /* Skip directory part. */ - - len = end - beg; - if (len > 4 && end[-4] == '.' && end[-3] == 'o') - len -= 2; /* Just take .o if it ends in .obj */ - - if (len > 0) - Vbuild_files = Fcons (make_string (beg, len), Vbuild_files); - } - Vbuild_files = Fpurecopy (Vbuild_files); - } + { + static char const *const buildobj[] = + { + #include "buildobj.h" + }; + int i = sizeof buildobj / sizeof *buildobj; + while (0 <= --i) + Vbuild_files = Fcons (build_string (buildobj[i]), Vbuild_files); + Vbuild_files = Fpurecopy (Vbuild_files); + } fd = emacs_open (name, O_RDONLY, 0); if (fd < 0) -- 2.20.1