diff options
author | Eli Zaretskii <eliz@gnu.org> | 2012-10-20 12:01:19 +0200 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2012-10-20 12:01:19 +0200 |
commit | 2068905bb73c32afb4bb5e908b438fbd8b80bb64 (patch) | |
tree | 64786383b45240c0f06d16812d3c89411a7f5dd5 /lib-src | |
parent | 4c9e95500fc913ad934e65c6625114e3f5532078 (diff) | |
download | emacs-2068905bb73c32afb4bb5e908b438fbd8b80bb64.tar.gz |
Fix bug #12395 with doc strings silently omitted from DOC on MS-Windows.
lib-src/make-docfile.c (scan_lisp_file): Barf if called with a .el file
other than one of a small list of supported un-compiled files.
lib-src/makefile.w32-in (lisp1, lisp2): Name .elc files wherever they
exist.
lisp/loadup.el: Update comment about uncompiled Lisp files.
Diffstat (limited to 'lib-src')
-rw-r--r-- | lib-src/ChangeLog | 9 | ||||
-rw-r--r-- | lib-src/make-docfile.c | 33 | ||||
-rw-r--r-- | lib-src/makefile.w32-in | 46 |
3 files changed, 62 insertions, 26 deletions
diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog index 1f28000e110..07fd4658172 100644 --- a/lib-src/ChangeLog +++ b/lib-src/ChangeLog @@ -1,3 +1,12 @@ +2012-10-20 Eli Zaretskii <eliz@gnu.org> + + Prevent silent omission of doc strings from uncompile Lisp files. + * make-docfile.c (scan_lisp_file): Barf if called with a .el file + other than one of a small list of supported un-compiled files. + + * makefile.w32-in (lisp1, lisp2): Name .elc files wherever they + exist. (Bug#12395) + 2012-10-17 Eli Zaretskii <eliz@gnu.org> * ntlib.c: Include <mbstring.h>, to avoid compiler warning about diff --git a/lib-src/make-docfile.c b/lib-src/make-docfile.c index 411b7057861..555a563d748 100644 --- a/lib-src/make-docfile.c +++ b/lib-src/make-docfile.c @@ -1025,9 +1025,9 @@ scan_c_file (char *filename, const char *mode) arglist, but the doc string must still have a backslash and newline immediately after the double quote. The only source files that must follow this convention are preloaded - uncompiled ones like loaddefs.el and bindings.el; aside - from that, it is always the .elc file that we look at, and they are no - problem because byte-compiler output follows this convention. + uncompiled ones like loaddefs.el; aside from that, it is always the .elc + file that we should look at, and they are no problem because byte-compiler + output follows this convention. The NAME and DOCSTRING are output. NAME is preceded by `F' for a function or `V' for a variable. An entry is output only if DOCSTRING has \ newline just after the opening ". @@ -1104,9 +1104,36 @@ scan_lisp_file (const char *filename, const char *mode) FILE *infile; register int c; char *saved_string = 0; + /* These are the only files that are loaded uncompiled, and must + follow the conventions of the doc strings expected by this + function. These conventions are automatically followed by the + byte compiler when it produces the .elc files. */ + static struct { + const char *fn; + size_t fl; + } uncompiled[] = { + { "loaddefs.el", sizeof("loaddefs.el") - 1 }, + { "loadup.el", sizeof("loadup.el") - 1 }, + { "charprop.el", sizeof("charprop.el") - 1 } + }; + int i, match; + size_t flen = strlen (filename); if (generate_globals) fatal ("scanning lisp file when -g specified", 0); + if (!strcmp (filename + flen - 3, ".el")) + { + for (i = 0, match = 0; i < sizeof(uncompiled)/sizeof(uncompiled[0]); i++) + { + if (!strcmp (filename + flen - uncompiled[i].fl, uncompiled[i].fn)) + { + match = 1; + break; + } + } + if (!match) + fatal ("uncompiled lisp file %s is not supported", filename); + } infile = fopen (filename, mode); if (infile == NULL) diff --git a/lib-src/makefile.w32-in b/lib-src/makefile.w32-in index ecc5fb866b3..640e8a7c468 100644 --- a/lib-src/makefile.w32-in +++ b/lib-src/makefile.w32-in @@ -209,38 +209,38 @@ lisp1= \ $(lispsource)emacs-lisp/map-ynp.elc \ $(lispsource)menu-bar.elc \ $(lispsource)international/mule.elc \ - $(lispsource)international/mule-conf.el \ + $(lispsource)international/mule-conf.elc \ $(lispsource)international/mule-cmds.elc \ $(lispsource)international/characters.elc \ $(lispsource)international/charprop.el \ $(lispsource)case-table.elc lisp2 = \ - $(lispsource)language/chinese.el \ - $(lispsource)language/cyrillic.el \ - $(lispsource)language/indian.el \ - $(lispsource)language/sinhala.el \ - $(lispsource)language/english.el \ + $(lispsource)language/chinese.elc \ + $(lispsource)language/cyrillic.elc \ + $(lispsource)language/indian.elc \ + $(lispsource)language/sinhala.elc \ + $(lispsource)language/english.elc \ $(lispsource)language/ethiopic.elc \ $(lispsource)language/european.elc \ - $(lispsource)language/czech.el \ - $(lispsource)language/slovak.el \ - $(lispsource)language/romanian.el \ - $(lispsource)language/greek.el \ + $(lispsource)language/czech.elc \ + $(lispsource)language/slovak.elc \ + $(lispsource)language/romanian.elc \ + $(lispsource)language/greek.elc \ $(lispsource)language/hebrew.elc \ - $(lispsource)language/japanese.el \ - $(lispsource)language/korean.el \ - $(lispsource)language/lao.el \ - $(lispsource)language/cham.el \ - $(lispsource)language/tai-viet.el \ - $(lispsource)language/thai.el \ + $(lispsource)language/japanese.elc \ + $(lispsource)language/korean.elc \ + $(lispsource)language/lao.elc \ + $(lispsource)language/cham.elc \ + $(lispsource)language/tai-viet.elc \ + $(lispsource)language/thai.elc \ $(lispsource)language/tibetan.elc \ - $(lispsource)language/vietnamese.el \ - $(lispsource)language/misc-lang.el \ - $(lispsource)language/utf-8-lang.el \ - $(lispsource)language/georgian.el \ - $(lispsource)language/khmer.el \ - $(lispsource)language/burmese.el \ + $(lispsource)language/vietnamese.elc \ + $(lispsource)language/misc-lang.elc \ + $(lispsource)language/utf-8-lang.elc \ + $(lispsource)language/georgian.elc \ + $(lispsource)language/khmer.elc \ + $(lispsource)language/burmese.elc \ $(lispsource)register.elc \ $(lispsource)replace.elc \ $(lispsource)simple.elc \ @@ -266,7 +266,7 @@ lisp2 = \ $(WINDOW_SUPPORT) \ $(lispsource)widget.elc \ $(lispsource)window.elc \ - $(lispsource)version.el + $(lispsource)version.elc # This is needed the first time we build the tree, since temacs.exe # does not exist yet, and the DOC rule needs it to rebuild DOC whenever |