aboutsummaryrefslogtreecommitdiffstats
path: root/lib-src
diff options
context:
space:
mode:
authorKenichi Handa2012-07-17 07:09:08 +0900
committerKenichi Handa2012-07-17 07:09:08 +0900
commit8c536f15bf95916d56bb50495d22b7da7e09fff9 (patch)
treeac6f8bf5103bdbd1d6a75f05def9bc7aa9e96547 /lib-src
parent21a8caaa4af24f258e6c7f80c1fc913b00aee044 (diff)
parentc05cf3902ae658cc8bf413124245c9e1cdcca2d7 (diff)
downloademacs-8c536f15bf95916d56bb50495d22b7da7e09fff9.tar.gz
emacs-8c536f15bf95916d56bb50495d22b7da7e09fff9.zip
merge trunk
Diffstat (limited to 'lib-src')
-rw-r--r--lib-src/ChangeLog86
-rw-r--r--lib-src/Makefile.in19
-rw-r--r--lib-src/etags.c28
-rw-r--r--lib-src/make-docfile.c153
-rw-r--r--lib-src/makefile.w32-in11
-rwxr-xr-xlib-src/rcs-checkin116
6 files changed, 131 insertions, 282 deletions
diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog
index d0e9e5c525a..5a5a04a770e 100644
--- a/lib-src/ChangeLog
+++ b/lib-src/ChangeLog
@@ -1,3 +1,47 @@
12012-06-03 Glenn Morris <rgm@gnu.org>
2
3 * rcs-checkin: Remove file.
4 * Makefile.in (INSTALLABLE_SCRIPTS, STAMP_INST_SCRIPTS):
5 Remove rcs-checkin.
6 (stamp-rcs-checkin): Remove.
7
82012-05-31 Eli Zaretskii <eliz@gnu.org>
9
10 * makefile.w32-in ($(BLD)/emacsclientw.exe): Use $(MWINDOWS)
11 instead of a literal -mwindows, which is not supported by MSVC.
12 (Bug#11405)
13
142012-05-30 Stefan Monnier <monnier@iro.umontreal.ca>
15
16 * make-docfile.c: Improve comment style.
17 (search_lisp_doc_at_eol): New function.
18 (scan_lisp_file): Use it.
19
202012-05-26 Glenn Morris <rgm@gnu.org>
21
22 * Makefile.in (INSTALL_DATA): Remove; unused.
23
242012-05-22 Paul Eggert <eggert@cs.ucla.edu>
25
26 Remove src/m/*.
27 * makefile.w32-in: Remove dependencies on
28 $(EMACS_ROOT)/src/m/intel386.h.
29
302012-05-22 Glenn Morris <rgm@gnu.org>
31
32 * Makefile.in (install): Remove unneeded chmods.
33
342012-05-21 Paul Eggert <eggert@cs.ucla.edu>
35
36 Assume C89 or later.
37 * etags.c (static, const): Remove macros.
38 (PTR): Remove; all uses replaced with void *. Omit needless casts.
39
402012-05-21 Glenn Morris <rgm@gnu.org>
41
42 * Makefile.in (insrcdir, $(DESTDIR)${archlibdir}):
43 Scrap superfluous subshells.
44
12012-05-18 Glenn Morris <rgm@gnu.org> 452012-05-18 Glenn Morris <rgm@gnu.org>
2 46
3 * Makefile.in (install): Ensure $bindir exists. 47 * Makefile.in (install): Ensure $bindir exists.
@@ -416,8 +460,8 @@
416 460
417 * etags.c (canonicalize_filename, ISUPPER): Fix last change. 461 * etags.c (canonicalize_filename, ISUPPER): Fix last change.
418 462
419 * makefile.w32-in ($(BLD)/ebrowse.$(O), $(BLD)/pop.$(O)): Depend 463 * makefile.w32-in ($(BLD)/ebrowse.$(O), $(BLD)/pop.$(O)):
420 on ../lib/min-max.h. 464 Depend on ../lib/min-max.h.
421 465
4222011-02-22 Paul Eggert <eggert@cs.ucla.edu> 4662011-02-22 Paul Eggert <eggert@cs.ucla.edu>
423 467
@@ -2794,7 +2838,7 @@
2794 2838
2795 * make-docfile.c (read_c_string_or_comment): Declare msgno. 2839 * make-docfile.c (read_c_string_or_comment): Declare msgno.
2796 2840
2797 * Makefile.in (YACC): Deleted. 2841 * Makefile.in (YACC): Delete.
2798 2842
27992002-10-19 Andreas Schwab <schwab@suse.de> 28432002-10-19 Andreas Schwab <schwab@suse.de>
2800 2844
@@ -3012,7 +3056,7 @@
3012 (TeX_commands): Names now include the initial backslash. 3056 (TeX_commands): Names now include the initial backslash.
3013 (TeX_commands): Names do not include numeric args #n. 3057 (TeX_commands): Names do not include numeric args #n.
3014 (TeX_commands): Correct line char number in tags. 3058 (TeX_commands): Correct line char number in tags.
3015 (TEX_tabent, TEX_token): Deleted. 3059 (TEX_tabent, TEX_token): Delete.
3016 (TeX_commands, TEX_decode_env): Streamlined. 3060 (TeX_commands, TEX_decode_env): Streamlined.
3017 3061
30182002-06-05 Francesco Potortì <pot@gnu.org> 30622002-06-05 Francesco Potortì <pot@gnu.org>
@@ -3053,7 +3097,7 @@
3053 (main): New argument -d, for specifying directory. 3097 (main): New argument -d, for specifying directory.
3054 (usage): Document. 3098 (usage): Document.
3055 (get_user_id): Compute. 3099 (get_user_id): Compute.
3056 (get_home_dir): Deleted. 3100 (get_home_dir): Delete.
3057 (get_prefix): New function, taken from main. 3101 (get_prefix): New function, taken from main.
3058 (main): Check whether or not we are running setuid. Move prefix 3102 (main): Check whether or not we are running setuid. Move prefix
3059 computation to get_prefix. Don't call getpwent; we don't need to 3103 computation to get_prefix. Don't call getpwent; we don't need to
@@ -3314,7 +3358,7 @@
3314 (LOOKING_AT, get_tag, PHP_functions): Use notinname. 3358 (LOOKING_AT, get_tag, PHP_functions): Use notinname.
3315 (Ada_getit, Ada_funcs, Python_functions, Scheme_functions): 3359 (Ada_getit, Ada_funcs, Python_functions, Scheme_functions):
3316 Clarified, using strneq or notinname. 3360 Clarified, using strneq or notinname.
3317 (L_isdef, L_isquote): Removed. 3361 (L_isdef, L_isquote): Remove.
3318 (Lisp_functions, L_getit): Clarified. 3362 (Lisp_functions, L_getit): Clarified.
3319 3363
3320 * etags.c (P_): Rename to __P for consistency with config.h. 3364 * etags.c (P_): Rename to __P for consistency with config.h.
@@ -3751,7 +3795,7 @@
3751 comma when --declarations is used. 3795 comma when --declarations is used.
3752 (C_entries): More accurate tagging of members and declarations. 3796 (C_entries): More accurate tagging of members and declarations.
3753 (yacc_rules): Was global, made local to C_entries. 3797 (yacc_rules): Was global, made local to C_entries.
3754 (next_token_is_func): Removed. 3798 (next_token_is_func): Remove.
3755 (fvdef): New constants fdefunkey, fdefunname. 3799 (fvdef): New constants fdefunkey, fdefunname.
3756 (consider_token, C_entries): Use them. 3800 (consider_token, C_entries): Use them.
3757 (C_entries): Build proper lisp names for Emacs DEFUNs. 3801 (C_entries): Build proper lisp names for Emacs DEFUNs.
@@ -4227,7 +4271,7 @@
4227 (find_entries, takeprec, getit, Fortran_functions, Perl_functions) 4271 (find_entries, takeprec, getit, Fortran_functions, Perl_functions)
4228 (Python_functions, L_getit, Lisp_functions, Scheme_functions) 4272 (Python_functions, L_getit, Lisp_functions, Scheme_functions)
4229 (prolog_pred, erlanf_func, erlang_attribute): Use them. 4273 (prolog_pred, erlanf_func, erlang_attribute): Use them.
4230 (eat_white): Deleted. 4274 (eat_white): Delete.
4231 4275
4232 * etags.c (CHAR, init): Keep into account non US-ASCII 4276 * etags.c (CHAR, init): Keep into account non US-ASCII
4233 characters and compilers with default signed chars. 4277 characters and compilers with default signed chars.
@@ -4750,7 +4794,7 @@
47501997-05-13 Francesco Potortì <F.Potorti@cnuce.cnr.it> 47941997-05-13 Francesco Potortì <F.Potorti@cnuce.cnr.it>
4751 4795
4752 * etags.c (TeX_functions): Cleaned up. 4796 * etags.c (TeX_functions): Cleaned up.
4753 (tex_getit): Removed. 4797 (tex_getit): Remove.
4754 4798
47551997-05-13 Paul Eggert <eggert@twinsun.com> 47991997-05-13 Paul Eggert <eggert@twinsun.com>
4756 4800
@@ -5271,7 +5315,7 @@
5271 5315
5272 * etags.c: Prolog language totally rewritten. 5316 * etags.c: Prolog language totally rewritten.
5273 (Prolog_functions): Rewritten from scratch. 5317 (Prolog_functions): Rewritten from scratch.
5274 (skip_comment, prolog_getit): Removed. 5318 (skip_comment, prolog_getit): Remove.
5275 (prolog_skip_comment): New function, like old skip_comment. 5319 (prolog_skip_comment): New function, like old skip_comment.
5276 (prolog_pred, prolog_atom, prolog_white): New functions. 5320 (prolog_pred, prolog_atom, prolog_white): New functions.
5277 (erlang_func, erlang_attributes): Forward declarations added. 5321 (erlang_func, erlang_attributes): Forward declarations added.
@@ -5772,7 +5816,7 @@
5772 5816
57731995-01-12 Francesco Potortì (pot@cnuce.cnr.it) 58171995-01-12 Francesco Potortì (pot@cnuce.cnr.it)
5774 5818
5775 * etags.c (FILEPOS, GET_CHARNO, GET_FILEPOS, max, LINENO): Deleted. 5819 * etags.c (FILEPOS, GET_CHARNO, GET_FILEPOS, max, LINENO): Delete.
5776 (append_to_tagfile, typedefs, typedefs_and_cplusplus) 5820 (append_to_tagfile, typedefs, typedefs_and_cplusplus)
5777 (constantypedefs, update, vgrind_style, no_warnings) 5821 (constantypedefs, update, vgrind_style, no_warnings)
5778 (cxref_style, cplusplus, noindentypedefs): Were int, now logical. 5822 (cxref_style, cplusplus, noindentypedefs): Were int, now logical.
@@ -5791,9 +5835,9 @@
5791 (consider_token): Don't take a token as argument. Use savenstr 5835 (consider_token): Don't take a token as argument. Use savenstr
5792 when saving a tag in structtag. Callers changed. 5836 when saving a tag in structtag. Callers changed.
5793 (TOKEN): Structure changed. Now used only in C_entries. 5837 (TOKEN): Structure changed. Now used only in C_entries.
5794 (TOKEN_SAVED_P, SAVE_TOKEN, RESTORE_TOKEN): Deleted. 5838 (TOKEN_SAVED_P, SAVE_TOKEN, RESTORE_TOKEN): Delete.
5795 (C_entries): nameb and savenameb deleted. Use dinamic allocation. 5839 (C_entries): nameb and savenameb deleted. Use dinamic allocation.
5796 (pfcnt): Deleted. Users updated. 5840 (pfcnt): Delete. Users updated.
5797 (getit, Asm_labels, Pascal_functions, L_getit, get_scheme) 5841 (getit, Asm_labels, Pascal_functions, L_getit, get_scheme)
5798 (TEX_getit, prolog_getit): Use dinamic allocation for storing 5842 (TEX_getit, prolog_getit): Use dinamic allocation for storing
5799 the tag instead of a fixed size buffer. 5843 the tag instead of a fixed size buffer.
@@ -6369,7 +6413,7 @@
6369 6413
63701994-03-25 Francesco Potortì (pot@cnuce.cnr.it) 64141994-03-25 Francesco Potortì (pot@cnuce.cnr.it)
6371 6415
6372 * etags.c (emacs_tags_format, ETAGS): Removed. Use CTAGS instead. 6416 * etags.c (emacs_tags_format, ETAGS): Remove. Use CTAGS instead.
6373 (main): Don't allow the use of -t and -T in etags mode. 6417 (main): Don't allow the use of -t and -T in etags mode.
6374 (print_help): Don't show options enabled by default. 6418 (print_help): Don't show options enabled by default.
6375 (print_version): Show the emacs version number if VERSION is #defined. 6419 (print_version): Show the emacs version number if VERSION is #defined.
@@ -6486,9 +6530,9 @@
64861994-01-14 Francesco Potortì (pot@cnuce.cnr.it) 65301994-01-14 Francesco Potortì (pot@cnuce.cnr.it)
6487 6531
6488 * etags.c (stab_entry, stab_create, stab_find, stab_search, 6532 * etags.c (stab_entry, stab_create, stab_find, stab_search,
6489 stab_type, add_keyword, C_reate_stab, C_create_stabs): Deleted. 6533 stab_type, add_keyword, C_reate_stab, C_create_stabs): Delete.
6490 Use gperf generated hash table instead of linked list. 6534 Use gperf generated hash table instead of linked list.
6491 (C_stab_entry, hash, in_word_set, get_C_stab, C_symtype): Added. 6535 (C_stab_entry, hash, in_word_set, get_C_stab, C_symtype): Add.
6492 Mostly code generated by gperf. 6536 Mostly code generated by gperf.
6493 (consider_token): Remove unused parameter `lp'. 6537 (consider_token): Remove unused parameter `lp'.
6494 (PF_funcs, getit): Allow subroutine and similar declarations 6538 (PF_funcs, getit): Allow subroutine and similar declarations
@@ -6807,7 +6851,7 @@
6807 * etags.c (consider_token): Was `==', now is `='. 6851 * etags.c (consider_token): Was `==', now is `='.
6808 (consider_token): DEFUNs now treated like funcs in ctags mode. 6852 (consider_token): DEFUNs now treated like funcs in ctags mode.
6809 6853
6810 * etags.c (LEVEL_OK_FOR_FUNCDEF): Removed. 6854 * etags.c (LEVEL_OK_FOR_FUNCDEF): Remove.
6811 (C_entries): Optimized the test that used LEVEL_OK_FOR_FUNCDEF. 6855 (C_entries): Optimized the test that used LEVEL_OK_FOR_FUNCDEF.
6812 (C_entries): Remove a piece of useless code. 6856 (C_entries): Remove a piece of useless code.
6813 (C_entries): Making typedef tags is delayed until a semicolon 6857 (C_entries): Making typedef tags is delayed until a semicolon
@@ -7106,10 +7150,10 @@
7106 * etags.c (GET_COOKIE): And related macros removed. 7150 * etags.c (GET_COOKIE): And related macros removed.
7107 (logical): Is now int, no more a char. 7151 (logical): Is now int, no more a char.
7108 (reg): Define deleted. 7152 (reg): Define deleted.
7109 (isgood, _gd, notgd): Deleted. 7153 (isgood, _gd, notgd): Delete.
7110 (gotone): Deleted. 7154 (gotone): Delete.
7111 (TOKEN): Member linestart removed. 7155 (TOKEN): Member linestart removed.
7112 (linepos, prev_linepos, lb1): Deleted. 7156 (linepos, prev_linepos, lb1): Delete.
7113 (main): Call initbuffer on lbs array instead of lb1. 7157 (main): Call initbuffer on lbs array instead of lb1.
7114 (init): Remove the initialization of the logical _gd array. 7158 (init): Remove the initialization of the logical _gd array.
7115 (find_entries): A .sa suffix means assembler file. 7159 (find_entries): A .sa suffix means assembler file.
@@ -7117,7 +7161,7 @@
7117 All C state machines rewritten. 7161 All C state machines rewritten.
7118 (C_entries): Complete rewrite. 7162 (C_entries): Complete rewrite.
7119 (condider_token): Complete rewrite. 7163 (condider_token): Complete rewrite.
7120 (getline): Deleted. 7164 (getline): Delete.
7121 7165
71221993-03-01 Francesco Potortì (pot@fly.CNUCE.CNR.IT) 71661993-03-01 Francesco Potortì (pot@fly.CNUCE.CNR.IT)
7123 7167
diff --git a/lib-src/Makefile.in b/lib-src/Makefile.in
index fd423212c9f..f3fd640576b 100644
--- a/lib-src/Makefile.in
+++ b/lib-src/Makefile.in
@@ -106,7 +106,6 @@ gameuser=@gameuser@
106# ../configure figures out the correct values for these. 106# ../configure figures out the correct values for these.
107INSTALL = @INSTALL@ 107INSTALL = @INSTALL@
108INSTALL_PROGRAM = @INSTALL_PROGRAM@ 108INSTALL_PROGRAM = @INSTALL_PROGRAM@
109INSTALL_DATA = @INSTALL_DATA@
110INSTALL_SCRIPT = @INSTALL_SCRIPT@ 109INSTALL_SCRIPT = @INSTALL_SCRIPT@
111# By default, we uphold the dignity of our programs. 110# By default, we uphold the dignity of our programs.
112INSTALL_STRIP = 111INSTALL_STRIP =
@@ -118,8 +117,8 @@ MKDIR_P = @MKDIR_P@
118INSTALLABLES = etags${EXEEXT} ctags${EXEEXT} emacsclient${EXEEXT} \ 117INSTALLABLES = etags${EXEEXT} ctags${EXEEXT} emacsclient${EXEEXT} \
119 ebrowse${EXEEXT} 118 ebrowse${EXEEXT}
120 119
121INSTALLABLE_SCRIPTS = rcs-checkin grep-changelog 120INSTALLABLE_SCRIPTS = grep-changelog
122STAMP_INST_SCRIPTS = stamp-rcs-checkin stamp-grep-changelog 121STAMP_INST_SCRIPTS = stamp-grep-changelog
123 122
124# Things that Emacs runs internally, or during the build process, 123# Things that Emacs runs internally, or during the build process,
125# which should not be installed in bindir. 124# which should not be installed in bindir.
@@ -190,16 +189,12 @@ $(EXE_FILES): ../lib/libgnu.a
190## These targets copy the scripts into the build directory so that 189## These targets copy the scripts into the build directory so that
191## they can be run from there in an uninstalled Emacs. 190## they can be run from there in an uninstalled Emacs.
192## Nothing to do if pwd = srcdir. 191## Nothing to do if pwd = srcdir.
193insrcdir=[ "`/bin/pwd`" = "`(cd $(srcdir) && /bin/pwd)`" ] 192insrcdir=[ "`/bin/pwd`" = "`cd $(srcdir) && /bin/pwd`" ]
194 193
195stamp-rcs2log: $(srcdir)/rcs2log 194stamp-rcs2log: $(srcdir)/rcs2log
196 $(insrcdir) || cp -p $(srcdir)/rcs2log rcs2log 195 $(insrcdir) || cp -p $(srcdir)/rcs2log rcs2log
197 touch $@ 196 touch $@
198 197
199stamp-rcs-checkin: $(srcdir)/rcs-checkin
200 $(insrcdir) || cp -p $(srcdir)/rcs-checkin rcs-checkin
201 touch $@
202
203stamp-grep-changelog: $(srcdir)/grep-changelog 198stamp-grep-changelog: $(srcdir)/grep-changelog
204 $(insrcdir) || cp -p $(srcdir)/grep-changelog grep-changelog 199 $(insrcdir) || cp -p $(srcdir)/grep-changelog grep-changelog
205 touch $@ 200 touch $@
@@ -237,7 +232,7 @@ $(DESTDIR)${archlibdir}: all
237 @echo 232 @echo
238 @echo "Installing utilities run internally by Emacs." 233 @echo "Installing utilities run internally by Emacs."
239 umask 022; ${MKDIR_P} $(DESTDIR)${archlibdir} 234 umask 022; ${MKDIR_P} $(DESTDIR)${archlibdir}
240 if [ `(cd $(DESTDIR)${archlibdir} && /bin/pwd)` != `/bin/pwd` ]; then \ 235 if [ `cd $(DESTDIR)${archlibdir} && /bin/pwd` != `/bin/pwd` ]; then \
241 for file in ${UTILITIES}; do \ 236 for file in ${UTILITIES}; do \
242 $(INSTALL_PROGRAM) $(INSTALL_STRIP) $$file $(DESTDIR)${archlibdir}/$$file ; \ 237 $(INSTALL_PROGRAM) $(INSTALL_STRIP) $$file $(DESTDIR)${archlibdir}/$$file ; \
243 done ; \ 238 done ; \
@@ -249,8 +244,8 @@ $(DESTDIR)${archlibdir}: all
249 chown ${gameuser} $(DESTDIR)${gamedir}; \ 244 chown ${gameuser} $(DESTDIR)${gamedir}; \
250 chmod u=rwx,g=rwx,o=rx $(DESTDIR)${gamedir}; \ 245 chmod u=rwx,g=rwx,o=rx $(DESTDIR)${gamedir}; \
251 fi 246 fi
252 if [ `(cd $(DESTDIR)${archlibdir} && /bin/pwd)` \ 247 if [ `cd $(DESTDIR)${archlibdir} && /bin/pwd` \
253 != `(cd ${srcdir} && /bin/pwd)` ]; then \ 248 != `cd ${srcdir} && /bin/pwd` ]; then \
254 for file in ${SCRIPTS}; do \ 249 for file in ${SCRIPTS}; do \
255 $(INSTALL_SCRIPT) ${srcdir}/$$file $(DESTDIR)${archlibdir}/$$file; \ 250 $(INSTALL_SCRIPT) ${srcdir}/$$file $(DESTDIR)${archlibdir}/$$file; \
256 done ; \ 251 done ; \
@@ -262,11 +257,9 @@ install: $(DESTDIR)${archlibdir}
262 umask 022; ${MKDIR_P} $(DESTDIR)${bindir} 257 umask 022; ${MKDIR_P} $(DESTDIR)${bindir}
263 for file in ${INSTALLABLES} ; do \ 258 for file in ${INSTALLABLES} ; do \
264 $(INSTALL_PROGRAM) $(INSTALL_STRIP) $${file} $(DESTDIR)${bindir}/`echo $${file} | sed '$(TRANSFORM)'` ; \ 259 $(INSTALL_PROGRAM) $(INSTALL_STRIP) $${file} $(DESTDIR)${bindir}/`echo $${file} | sed '$(TRANSFORM)'` ; \
265 chmod a+rx $(DESTDIR)${bindir}/`echo $${file} | sed '$(TRANSFORM)'`; \
266 done 260 done
267 for file in ${INSTALLABLE_SCRIPTS} ; do \ 261 for file in ${INSTALLABLE_SCRIPTS} ; do \
268 $(INSTALL_SCRIPT) ${srcdir}/$${file} $(DESTDIR)${bindir}/`echo $${file} | sed '$(TRANSFORM)'` ; \ 262 $(INSTALL_SCRIPT) ${srcdir}/$${file} $(DESTDIR)${bindir}/`echo $${file} | sed '$(TRANSFORM)'` ; \
269 chmod a+rx $(DESTDIR)${bindir}/`echo $${file} | sed '$(TRANSFORM)'`; \
270 done 263 done
271 264
272uninstall: 265uninstall:
diff --git a/lib-src/etags.c b/lib-src/etags.c
index ccf97a8357f..7d2a5a90999 100644
--- a/lib-src/etags.c
+++ b/lib-src/etags.c
@@ -93,22 +93,6 @@ char pot_etags_version[] = "@(#) pot revision number is 17.38.1.4";
93 93
94#ifdef HAVE_CONFIG_H 94#ifdef HAVE_CONFIG_H
95# include <config.h> 95# include <config.h>
96 /* This is probably not necessary any more. On some systems, config.h
97 used to define static as nothing for the sake of unexec. We don't
98 want that here since we don't use unexec. None of these systems
99 are supported any more, but the idea is still mentioned in
100 etc/PROBLEMS. */
101# undef static
102# ifndef PTR /* for XEmacs */
103# define PTR void *
104# endif
105#else /* no config.h */
106# if defined (__STDC__) && (__STDC__ || defined (__SUNPRO_C))
107# define PTR void * /* for generic pointers */
108# else /* not standard C */
109# define const /* remove const for old compilers' sake */
110# define PTR long * /* don't use void* */
111# endif
112#endif /* !HAVE_CONFIG_H */ 96#endif /* !HAVE_CONFIG_H */
113 97
114#ifndef _GNU_SOURCE 98#ifndef _GNU_SOURCE
@@ -415,8 +399,8 @@ static bool filename_is_absolute (char *f);
415static void canonicalize_filename (char *); 399static void canonicalize_filename (char *);
416static void linebuffer_init (linebuffer *); 400static void linebuffer_init (linebuffer *);
417static void linebuffer_setlen (linebuffer *, int); 401static void linebuffer_setlen (linebuffer *, int);
418static PTR xmalloc (size_t); 402static void *xmalloc (size_t);
419static PTR xrealloc (char *, size_t); 403static void *xrealloc (char *, size_t);
420 404
421 405
422static char searchar = '/'; /* use /.../ searches */ 406static char searchar = '/'; /* use /.../ searches */
@@ -6686,19 +6670,19 @@ linebuffer_setlen (linebuffer *lbp, int toksize)
6686} 6670}
6687 6671
6688/* Like malloc but get fatal error if memory is exhausted. */ 6672/* Like malloc but get fatal error if memory is exhausted. */
6689static PTR 6673static void *
6690xmalloc (size_t size) 6674xmalloc (size_t size)
6691{ 6675{
6692 PTR result = (PTR) malloc (size); 6676 void *result = malloc (size);
6693 if (result == NULL) 6677 if (result == NULL)
6694 fatal ("virtual memory exhausted", (char *)NULL); 6678 fatal ("virtual memory exhausted", (char *)NULL);
6695 return result; 6679 return result;
6696} 6680}
6697 6681
6698static PTR 6682static void *
6699xrealloc (char *ptr, size_t size) 6683xrealloc (char *ptr, size_t size)
6700{ 6684{
6701 PTR result = (PTR) realloc (ptr, size); 6685 void *result = realloc (ptr, size);
6702 if (result == NULL) 6686 if (result == NULL)
6703 fatal ("virtual memory exhausted", (char *)NULL); 6687 fatal ("virtual memory exhausted", (char *)NULL);
6704 return result; 6688 return result;
diff --git a/lib-src/make-docfile.c b/lib-src/make-docfile.c
index b33b13f34ce..1314a7b6829 100644
--- a/lib-src/make-docfile.c
+++ b/lib-src/make-docfile.c
@@ -35,7 +35,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
35 35
36#include <config.h> 36#include <config.h>
37 37
38/* defined to be emacs_main, sys_fopen, etc. in config.h */ 38/* Defined to be emacs_main, sys_fopen, etc. in config.h. */
39#undef main 39#undef main
40#undef fopen 40#undef fopen
41#undef chdir 41#undef chdir
@@ -66,7 +66,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
66#define IS_DIRECTORY_SEP(_c_) ((_c_) == DIRECTORY_SEP) 66#define IS_DIRECTORY_SEP(_c_) ((_c_) == DIRECTORY_SEP)
67#endif 67#endif
68 68
69/* Use this to suppress gcc's `...may be used before initialized' warnings. */ 69/* Use this to suppress gcc's `...may be used before initialized' warnings. */
70#ifdef lint 70#ifdef lint
71# define IF_LINT(Code) Code 71# define IF_LINT(Code) Code
72#else 72#else
@@ -226,7 +226,7 @@ put_filename (char *filename)
226 226
227 for (tmp = filename; *tmp; tmp++) 227 for (tmp = filename; *tmp; tmp++)
228 { 228 {
229 if (IS_DIRECTORY_SEP(*tmp)) 229 if (IS_DIRECTORY_SEP (*tmp))
230 filename = tmp + 1; 230 filename = tmp + 1;
231 } 231 }
232 232
@@ -675,14 +675,14 @@ scan_c_file (char *filename, const char *mode)
675 675
676 if (infile == NULL && extension == 'o') 676 if (infile == NULL && extension == 'o')
677 { 677 {
678 /* try .m */ 678 /* Try .m. */
679 filename[strlen (filename) - 1] = 'm'; 679 filename[strlen (filename) - 1] = 'm';
680 infile = fopen (filename, mode); 680 infile = fopen (filename, mode);
681 if (infile == NULL) 681 if (infile == NULL)
682 filename[strlen (filename) - 1] = 'c'; /* don't confuse people */ 682 filename[strlen (filename) - 1] = 'c'; /* Don't confuse people. */
683 } 683 }
684 684
685 /* No error if non-ex input file */ 685 /* No error if non-ex input file. */
686 if (infile == NULL) 686 if (infile == NULL)
687 { 687 {
688 perror (filename); 688 perror (filename);
@@ -800,8 +800,8 @@ scan_c_file (char *filename, const char *mode)
800 input_buffer[i++] = c; 800 input_buffer[i++] = c;
801 c = getc (infile); 801 c = getc (infile);
802 } 802 }
803 while (! (c == ',' || c == ' ' || c == '\t' || 803 while (! (c == ',' || c == ' ' || c == '\t'
804 c == '\n' || c == '\r')); 804 || c == '\n' || c == '\r'));
805 input_buffer[i] = '\0'; 805 input_buffer[i] = '\0';
806 806
807 name = xmalloc (i + 1); 807 name = xmalloc (i + 1);
@@ -820,7 +820,7 @@ scan_c_file (char *filename, const char *mode)
820 commas = 3; 820 commas = 3;
821 else if (defvarflag) 821 else if (defvarflag)
822 commas = 1; 822 commas = 1;
823 else /* For DEFSIMPLE and DEFPRED */ 823 else /* For DEFSIMPLE and DEFPRED. */
824 commas = 2; 824 commas = 2;
825 825
826 while (commas) 826 while (commas)
@@ -838,9 +838,9 @@ scan_c_file (char *filename, const char *mode)
838 if (c < 0) 838 if (c < 0)
839 goto eof; 839 goto eof;
840 ungetc (c, infile); 840 ungetc (c, infile);
841 if (commas == 2) /* pick up minargs */ 841 if (commas == 2) /* Pick up minargs. */
842 scanned = fscanf (infile, "%d", &minargs); 842 scanned = fscanf (infile, "%d", &minargs);
843 else /* pick up maxargs */ 843 else /* Pick up maxargs. */
844 if (c == 'M' || c == 'U') /* MANY || UNEVALLED */ 844 if (c == 'M' || c == 'U') /* MANY || UNEVALLED */
845 maxargs = -1; 845 maxargs = -1;
846 else 846 else
@@ -893,7 +893,7 @@ scan_c_file (char *filename, const char *mode)
893 fprintf (outfile, "%s\n", input_buffer); 893 fprintf (outfile, "%s\n", input_buffer);
894 894
895 if (comment) 895 if (comment)
896 getc (infile); /* Skip past `*' */ 896 getc (infile); /* Skip past `*'. */
897 c = read_c_string_or_comment (infile, 1, comment, &saw_usage); 897 c = read_c_string_or_comment (infile, 1, comment, &saw_usage);
898 898
899 /* If this is a defun, find the arguments and print them. If 899 /* If this is a defun, find the arguments and print them. If
@@ -979,7 +979,7 @@ scan_c_file (char *filename, const char *mode)
979 problem because byte-compiler output follows this convention. 979 problem because byte-compiler output follows this convention.
980 The NAME and DOCSTRING are output. 980 The NAME and DOCSTRING are output.
981 NAME is preceded by `F' for a function or `V' for a variable. 981 NAME is preceded by `F' for a function or `V' for a variable.
982 An entry is output only if DOCSTRING has \ newline just after the opening " 982 An entry is output only if DOCSTRING has \ newline just after the opening ".
983 */ 983 */
984 984
985static void 985static void
@@ -1020,6 +1020,32 @@ read_lisp_symbol (FILE *infile, char *buffer)
1020} 1020}
1021 1021
1022static int 1022static int
1023search_lisp_doc_at_eol (FILE *infile)
1024{
1025 char c = 0, c1 = 0, c2 = 0;
1026
1027 /* Skip until the end of line; remember two previous chars. */
1028 while (c != '\n' && c != '\r' && c >= 0)
1029 {
1030 c2 = c1;
1031 c1 = c;
1032 c = getc (infile);
1033 }
1034
1035 /* If two previous characters were " and \,
1036 this is a doc string. Otherwise, there is none. */
1037 if (c2 != '"' || c1 != '\\')
1038 {
1039#ifdef DEBUG
1040 fprintf (stderr, "## non-docstring in %s (%s)\n",
1041 buffer, filename);
1042#endif
1043 return 0;
1044 }
1045 return 1;
1046}
1047
1048static int
1023scan_lisp_file (const char *filename, const char *mode) 1049scan_lisp_file (const char *filename, const char *mode)
1024{ 1050{
1025 FILE *infile; 1051 FILE *infile;
@@ -1033,7 +1059,7 @@ scan_lisp_file (const char *filename, const char *mode)
1033 if (infile == NULL) 1059 if (infile == NULL)
1034 { 1060 {
1035 perror (filename); 1061 perror (filename);
1036 return 0; /* No error */ 1062 return 0; /* No error. */
1037 } 1063 }
1038 1064
1039 c = '\n'; 1065 c = '\n';
@@ -1110,7 +1136,7 @@ scan_lisp_file (const char *filename, const char *mode)
1110 type = 'F'; 1136 type = 'F';
1111 read_lisp_symbol (infile, buffer); 1137 read_lisp_symbol (infile, buffer);
1112 1138
1113 /* Skip the arguments: either "nil" or a list in parens */ 1139 /* Skip the arguments: either "nil" or a list in parens. */
1114 1140
1115 c = getc (infile); 1141 c = getc (infile);
1116 if (c == 'n') /* nil */ 1142 if (c == 'n') /* nil */
@@ -1154,39 +1180,18 @@ scan_lisp_file (const char *filename, const char *mode)
1154 || ! strcmp (buffer, "defconst") 1180 || ! strcmp (buffer, "defconst")
1155 || ! strcmp (buffer, "defcustom")) 1181 || ! strcmp (buffer, "defcustom"))
1156 { 1182 {
1157 char c1 = 0, c2 = 0;
1158 type = 'V'; 1183 type = 'V';
1159 read_lisp_symbol (infile, buffer); 1184 read_lisp_symbol (infile, buffer);
1160 1185
1161 if (saved_string == 0) 1186 if (saved_string == 0)
1162 { 1187 if (!search_lisp_doc_at_eol (infile))
1163 1188 continue;
1164 /* Skip until the end of line; remember two previous chars. */
1165 while (c != '\n' && c != '\r' && c >= 0)
1166 {
1167 c2 = c1;
1168 c1 = c;
1169 c = getc (infile);
1170 }
1171
1172 /* If two previous characters were " and \,
1173 this is a doc string. Otherwise, there is none. */
1174 if (c2 != '"' || c1 != '\\')
1175 {
1176#ifdef DEBUG
1177 fprintf (stderr, "## non-docstring in %s (%s)\n",
1178 buffer, filename);
1179#endif
1180 continue;
1181 }
1182 }
1183 } 1189 }
1184 1190
1185 else if (! strcmp (buffer, "custom-declare-variable") 1191 else if (! strcmp (buffer, "custom-declare-variable")
1186 || ! strcmp (buffer, "defvaralias") 1192 || ! strcmp (buffer, "defvaralias")
1187 ) 1193 )
1188 { 1194 {
1189 char c1 = 0, c2 = 0;
1190 type = 'V'; 1195 type = 'V';
1191 1196
1192 c = getc (infile); 1197 c = getc (infile);
@@ -1221,31 +1226,12 @@ scan_lisp_file (const char *filename, const char *mode)
1221 } 1226 }
1222 1227
1223 if (saved_string == 0) 1228 if (saved_string == 0)
1224 { 1229 if (!search_lisp_doc_at_eol (infile))
1225 /* Skip to end of line; remember the two previous chars. */ 1230 continue;
1226 while (c != '\n' && c != '\r' && c >= 0)
1227 {
1228 c2 = c1;
1229 c1 = c;
1230 c = getc (infile);
1231 }
1232
1233 /* If two previous characters were " and \,
1234 this is a doc string. Otherwise, there is none. */
1235 if (c2 != '"' || c1 != '\\')
1236 {
1237#ifdef DEBUG
1238 fprintf (stderr, "## non-docstring in %s (%s)\n",
1239 buffer, filename);
1240#endif
1241 continue;
1242 }
1243 }
1244 } 1231 }
1245 1232
1246 else if (! strcmp (buffer, "fset") || ! strcmp (buffer, "defalias")) 1233 else if (! strcmp (buffer, "fset") || ! strcmp (buffer, "defalias"))
1247 { 1234 {
1248 char c1 = 0, c2 = 0;
1249 type = 'F'; 1235 type = 'F';
1250 1236
1251 c = getc (infile); 1237 c = getc (infile);
@@ -1278,26 +1264,8 @@ scan_lisp_file (const char *filename, const char *mode)
1278 } 1264 }
1279 1265
1280 if (saved_string == 0) 1266 if (saved_string == 0)
1281 { 1267 if (!search_lisp_doc_at_eol (infile))
1282 /* Skip to end of line; remember the two previous chars. */ 1268 continue;
1283 while (c != '\n' && c != '\r' && c >= 0)
1284 {
1285 c2 = c1;
1286 c1 = c;
1287 c = getc (infile);
1288 }
1289
1290 /* If two previous characters were " and \,
1291 this is a doc string. Otherwise, there is none. */
1292 if (c2 != '"' || c1 != '\\')
1293 {
1294#ifdef DEBUG
1295 fprintf (stderr, "## non-docstring in %s (%s)\n",
1296 buffer, filename);
1297#endif
1298 continue;
1299 }
1300 }
1301 } 1269 }
1302 1270
1303 else if (! strcmp (buffer, "autoload")) 1271 else if (! strcmp (buffer, "autoload"))
@@ -1339,23 +1307,10 @@ scan_lisp_file (const char *filename, const char *mode)
1339 continue; 1307 continue;
1340 } 1308 }
1341 read_c_string_or_comment (infile, 0, 0, 0); 1309 read_c_string_or_comment (infile, 0, 0, 0);
1342 skip_white (infile);
1343 1310
1344 if (saved_string == 0) 1311 if (saved_string == 0)
1345 { 1312 if (!search_lisp_doc_at_eol (infile))
1346 /* If the next three characters aren't `dquote bslash newline' 1313 continue;
1347 then we're not reading a docstring. */
1348 if ((c = getc (infile)) != '"'
1349 || (c = getc (infile)) != '\\'
1350 || ((c = getc (infile)) != '\n' && c != '\r'))
1351 {
1352#ifdef DEBUG
1353 fprintf (stderr, "## non-docstring in %s (%s)\n",
1354 buffer, filename);
1355#endif
1356 continue;
1357 }
1358 }
1359 } 1314 }
1360 1315
1361#ifdef DEBUG 1316#ifdef DEBUG
@@ -1373,12 +1328,10 @@ scan_lisp_file (const char *filename, const char *mode)
1373 continue; 1328 continue;
1374 } 1329 }
1375 1330
1376 /* At this point, we should either use the previous 1331 /* At this point, we should either use the previous dynamic doc string in
1377 dynamic doc string in saved_string 1332 saved_string or gobble a doc string from the input file.
1378 or gobble a doc string from the input file. 1333 In the latter case, the opening quote (and leading backslash-newline)
1379 1334 have already been read. */
1380 In the latter case, the opening quote (and leading
1381 backslash-newline) have already been read. */
1382 1335
1383 putc (037, outfile); 1336 putc (037, outfile);
1384 putc (type, outfile); 1337 putc (type, outfile);
diff --git a/lib-src/makefile.w32-in b/lib-src/makefile.w32-in
index 316e4fb127f..b727288351a 100644
--- a/lib-src/makefile.w32-in
+++ b/lib-src/makefile.w32-in
@@ -65,7 +65,7 @@ $(BLD)/emacsclient.exe: $(ECLIENTOBJS)
65 65
66$(BLD)/emacsclientw.exe: $(ECLIENTOBJS) $(CLIENTRES) 66$(BLD)/emacsclientw.exe: $(ECLIENTOBJS) $(CLIENTRES)
67# put wsock32.lib before $(LIBS) to ensure we don't link to ws2_32.lib 67# put wsock32.lib before $(LIBS) to ensure we don't link to ws2_32.lib
68 $(LINK) $(LINK_OUT)$@ $(CLIENTRES) -mwindows $(LINK_FLAGS) $(ECLIENTOBJS) $(WSOCK32) $(USER32) $(COMCTL32) $(LIBS) 68 $(LINK) $(LINK_OUT)$@ $(CLIENTRES) $(MWINDOWS) $(LINK_FLAGS) $(ECLIENTOBJS) $(WSOCK32) $(USER32) $(COMCTL32) $(LIBS)
69 69
70$(BLD)/emacsclient.$(O): emacsclient.c 70$(BLD)/emacsclient.$(O): emacsclient.c
71 $(CC) $(CFLAGS) $(ECLIENT_CFLAGS) $(CC_OUT)$@ emacsclient.c 71 $(CC) $(CFLAGS) $(ECLIENT_CFLAGS) $(CC_OUT)$@ emacsclient.c
@@ -354,7 +354,6 @@ SRC = .
354$(BLD)/alloca.$(O) : \ 354$(BLD)/alloca.$(O) : \
355 $(SRC)/alloca.c \ 355 $(SRC)/alloca.c \
356 $(EMACS_ROOT)/src/s/ms-w32.h \ 356 $(EMACS_ROOT)/src/s/ms-w32.h \
357 $(EMACS_ROOT)/src/m/intel386.h \
358 $(EMACS_ROOT)/src/config.h \ 357 $(EMACS_ROOT)/src/config.h \
359 $(EMACS_ROOT)/src/blockinput.h 358 $(EMACS_ROOT)/src/blockinput.h
360 359
@@ -363,7 +362,6 @@ $(BLD)/ctags.$(O) : \
363 $(EMACS_ROOT)/nt/inc/sys/param.h \ 362 $(EMACS_ROOT)/nt/inc/sys/param.h \
364 $(EMACS_ROOT)/nt/inc/sys/stat.h \ 363 $(EMACS_ROOT)/nt/inc/sys/stat.h \
365 $(EMACS_ROOT)/src/s/ms-w32.h \ 364 $(EMACS_ROOT)/src/s/ms-w32.h \
366 $(EMACS_ROOT)/src/m/intel386.h \
367 $(EMACS_ROOT)/lib-src/../src/config.h \ 365 $(EMACS_ROOT)/lib-src/../src/config.h \
368 $(SRC)/ntlib.h \ 366 $(SRC)/ntlib.h \
369 $(EMACS_ROOT)/lib/getopt.h 367 $(EMACS_ROOT)/lib/getopt.h
@@ -372,14 +370,12 @@ $(BLD)/ebrowse.$(O) : \
372 $(SRC)/ebrowse.c \ 370 $(SRC)/ebrowse.c \
373 $(EMACS_ROOT)/lib/min-max.h \ 371 $(EMACS_ROOT)/lib/min-max.h \
374 $(EMACS_ROOT)/src/s/ms-w32.h \ 372 $(EMACS_ROOT)/src/s/ms-w32.h \
375 $(EMACS_ROOT)/src/m/intel386.h \
376 $(EMACS_ROOT)/lib-src/../src/config.h 373 $(EMACS_ROOT)/lib-src/../src/config.h
377 374
378$(BLD)/emacsclient.$(O) : \ 375$(BLD)/emacsclient.$(O) : \
379 $(SRC)/emacsclient.c \ 376 $(SRC)/emacsclient.c \
380 $(EMACS_ROOT)/nt/inc/sys/stat.h \ 377 $(EMACS_ROOT)/nt/inc/sys/stat.h \
381 $(EMACS_ROOT)/src/s/ms-w32.h \ 378 $(EMACS_ROOT)/src/s/ms-w32.h \
382 $(EMACS_ROOT)/src/m/intel386.h \
383 $(EMACS_ROOT)/lib-src/../src/config.h 379 $(EMACS_ROOT)/lib-src/../src/config.h
384 380
385$(BLD)/etags.$(O) : \ 381$(BLD)/etags.$(O) : \
@@ -387,7 +383,6 @@ $(BLD)/etags.$(O) : \
387 $(EMACS_ROOT)/nt/inc/sys/param.h \ 383 $(EMACS_ROOT)/nt/inc/sys/param.h \
388 $(EMACS_ROOT)/nt/inc/sys/stat.h \ 384 $(EMACS_ROOT)/nt/inc/sys/stat.h \
389 $(EMACS_ROOT)/src/s/ms-w32.h \ 385 $(EMACS_ROOT)/src/s/ms-w32.h \
390 $(EMACS_ROOT)/src/m/intel386.h \
391 $(EMACS_ROOT)/lib-src/../src/config.h \ 386 $(EMACS_ROOT)/lib-src/../src/config.h \
392 $(SRC)/ntlib.h \ 387 $(SRC)/ntlib.h \
393 $(EMACS_ROOT)/lib/getopt.h 388 $(EMACS_ROOT)/lib/getopt.h
@@ -395,7 +390,6 @@ $(BLD)/etags.$(O) : \
395$(BLD)/getdate.$(O) : \ 390$(BLD)/getdate.$(O) : \
396 $(SRC)/getdate.c \ 391 $(SRC)/getdate.c \
397 $(EMACS_ROOT)/src/s/ms-w32.h \ 392 $(EMACS_ROOT)/src/s/ms-w32.h \
398 $(EMACS_ROOT)/src/m/intel386.h \
399 $(EMACS_ROOT)/src/config.h \ 393 $(EMACS_ROOT)/src/config.h \
400 $(MSTOOLS_SYS)/types.h 394 $(MSTOOLS_SYS)/types.h
401 395
@@ -415,7 +409,6 @@ $(BLD)/make-path.$(O) : \
415$(BLD)/movemail.$(O) : \ 409$(BLD)/movemail.$(O) : \
416 $(SRC)/movemail.c \ 410 $(SRC)/movemail.c \
417 $(EMACS_ROOT)/src/s/ms-w32.h \ 411 $(EMACS_ROOT)/src/s/ms-w32.h \
418 $(EMACS_ROOT)/src/m/intel386.h \
419 $(EMACS_ROOT)/lib-src/../src/config.h \ 412 $(EMACS_ROOT)/lib-src/../src/config.h \
420 $(EMACS_ROOT)/nt/inc/sys/file.h \ 413 $(EMACS_ROOT)/nt/inc/sys/file.h \
421 $(EMACS_ROOT)/nt/inc/sys/stat.h \ 414 $(EMACS_ROOT)/nt/inc/sys/stat.h \
@@ -439,7 +432,6 @@ $(BLD)/pop.$(O) : \
439$(BLD)/profile.$(O) : \ 432$(BLD)/profile.$(O) : \
440 $(SRC)/profile.c \ 433 $(SRC)/profile.c \
441 $(EMACS_ROOT)/src/s/ms-w32.h \ 434 $(EMACS_ROOT)/src/s/ms-w32.h \
442 $(EMACS_ROOT)/src/m/intel386.h \
443 $(EMACS_ROOT)/lib-src/../src/config.h \ 435 $(EMACS_ROOT)/lib-src/../src/config.h \
444 $(EMACS_ROOT)/lib-src/../src/systime.h 436 $(EMACS_ROOT)/lib-src/../src/systime.h
445 437
@@ -455,7 +447,6 @@ $(BLD)/test-distrib.$(O) : \
455$(BLD)/timer.$(O) : \ 447$(BLD)/timer.$(O) : \
456 $(SRC)/timer.c \ 448 $(SRC)/timer.c \
457 $(EMACS_ROOT)/src/s/ms-w32.h \ 449 $(EMACS_ROOT)/src/s/ms-w32.h \
458 $(EMACS_ROOT)/src/m/intel386.h \
459 $(EMACS_ROOT)/lib-src/../src/config.h 450 $(EMACS_ROOT)/lib-src/../src/config.h
460 451
461# The following dependencies are for supporting parallel builds, where 452# The following dependencies are for supporting parallel builds, where
diff --git a/lib-src/rcs-checkin b/lib-src/rcs-checkin
deleted file mode 100755
index 57e91becf9d..00000000000
--- a/lib-src/rcs-checkin
+++ /dev/null
@@ -1,116 +0,0 @@
1#! /bin/sh
2
3# This script accepts any number of file arguments and checks them into RCS.
4
5# Copyright (C) 1993-1995, 2001-2012 Free Software Foundation, Inc.
6
7# This file is part of GNU Emacs.
8
9# GNU Emacs is free software: you can redistribute it and/or modify
10# it under the terms of the GNU General Public License as published by
11# the Free Software Foundation, either version 3 of the License, or
12# (at your option) any later version.
13
14# GNU Emacs is distributed in the hope that it will be useful,
15# but WITHOUT ANY WARRANTY; without even the implied warranty of
16# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17# GNU General Public License for more details.
18
19# You should have received a copy of the GNU General Public License
20# along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
21
22
23# Arguments which are detectably either RCS masters (with names ending in ,v)
24# or Emacs version files (with names of the form foo.~<number>~) are ignored.
25# For each file foo, the script looks for Emacs version files related to it.
26# These files are checked in as deltas, oldest first, so that the contents of
27# the file itself becomes the latest revision in the master.
28#
29# The first line of each file is used as its description text. The file itself
30# is not deleted, as under VC with vc-keep-workfiles at its default of t, but
31# all the version files are.
32#
33# If an argument file is already version-controlled under RCS, any version
34# files are added to the list of deltas and deleted, and then the workfile
35# is checked in again as the latest version. This is probably not quite
36# what was wanted, and is the main reason VC doesn't simply call this to
37# do checkins.
38#
39# This script is intended to be used to convert files with an old-Emacs-style
40# version history for use with VC (the Emacs 19 version-control interface),
41# which likes to use RCS as its back end. It was written by Paul Eggert
42# and revised/documented for use with VC by Eric S. Raymond, Mar 19 1993.
43
44case $# in
450)
46 echo "rcs-checkin: usage: rcs-checkin file ..."
47 echo "rcs-checkin: function: checks file.~*~ and file into a new RCS file"
48 echo "rcs-checkin: function: uses the file's first line for the description"
49esac
50
51# expr pattern to extract owner from ls -l output
52ls_owner_pattern='[^ ][^ ]* *[^ ][^ ]* *\([^ ][^ ]*\)'
53
54for file
55do
56 # Make it easier to say `rcs-checkin *'
57 # by ignoring file names that already contain `~', or end in `,v'.
58 case $file in
59 *~* | *,v) continue
60 esac
61 # Ignore non-files too.
62 test -f "$file" || continue
63
64 # Check that file is readable.
65 test -r "$file" || exit
66
67 # If the RCS file does not already exist,
68 # initialize it with a description from $file's first line.
69 rlog -R "$file" >/dev/null 2>&1 ||
70 rcs -i -q -t-"`sed 1q $file`" "$file" || exit
71
72 # Get list of old files.
73 oldfiles=`
74 ls $file.~[0-9]*~ 2>/dev/null |
75 sort -t~ -n -k 2
76 `
77
78 # Check that they are properly sorted by date.
79 case $oldfiles in
80 ?*)
81 oldfiles_by_date=`ls -rt $file $oldfiles`
82 test " $oldfiles
83$file" = " $oldfiles_by_date" || {
84 echo >&2 "rcs-checkin: skipping $file, because its mod times are out of order.
85
86Sorted by mod time:
87$oldfiles_by_date
88
89Sorted by name:
90$oldfiles
91$file"
92 continue
93 }
94 esac
95
96 echo >&2 rcs-checkin: checking in: $oldfiles $file
97
98 # Save $file as $file.~-~ temporarily.
99 mv "$file" "$file.~-~" || exit
100
101 # Rename each old file to $file, and check it in.
102 for oldfile in $oldfiles
103 do
104 mv "$oldfile" "$file" || exit
105 ls_l=`ls -l "$file"` || exit
106 owner=-w`expr " $ls_l" : " $ls_owner_pattern"` || owner=
107 echo "Formerly ${oldfile}" | ci -d -l -q $owner "$file" || exit
108 done
109
110 # Bring $file back from $file.~-~, and check it in.
111 mv "$file.~-~" "$file" || exit
112 ls_l=`ls -l "$file"` || exit
113 owner=-w`expr " $ls_l" : " $ls_owner_pattern"` || owner=
114 ci -d -q -u $owner -m"entered into RCS" "$file" || exit
115done
116