annotate lib-src/make-docfile.c @ 23323:0800a4f84757

(underlying_strftime): Set the buffer to a nonzero value before calling strftime, and check to see whether strftime has set the buffer to zero. This lets us distinguish between an empty buffer and an error. I'm installing this patch by hand now; it will be superseded whenever the glibc sources are propagated back to fsf.org.
author Paul Eggert <eggert@twinsun.com>
date Fri, 25 Sep 1998 21:40:23 +0000
parents 798a28989dde
children 7ebe942c4a9c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1 /* Generate doc-string file for GNU Emacs from source files.
19636
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
2 Copyright (C) 1985, 1986, 92, 93, 94, 1997 Free Software Foundation, Inc.
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4 This file is part of GNU Emacs.
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
5
38
056b931d312b *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 24
diff changeset
6 GNU Emacs is free software; you can redistribute it and/or modify
056b931d312b *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 24
diff changeset
7 it under the terms of the GNU General Public License as published by
638
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 168
diff changeset
8 the Free Software Foundation; either version 2, or (at your option)
38
056b931d312b *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 24
diff changeset
9 any later version.
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
10
38
056b931d312b *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 24
diff changeset
11 GNU Emacs is distributed in the hope that it will be useful,
056b931d312b *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 24
diff changeset
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
056b931d312b *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 24
diff changeset
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
056b931d312b *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 24
diff changeset
14 GNU General Public License for more details.
056b931d312b *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 24
diff changeset
15
056b931d312b *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 24
diff changeset
16 You should have received a copy of the GNU General Public License
056b931d312b *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 24
diff changeset
17 along with GNU Emacs; see the file COPYING. If not, write to
14186
ee40177f6c68 Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents: 12351
diff changeset
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
ee40177f6c68 Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents: 12351
diff changeset
19 Boston, MA 02111-1307, USA. */
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
20
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
21 /* The arguments given to this program are all the C and Lisp source files
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
22 of GNU Emacs. .elc and .el and .c files are allowed.
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
23 A .o file can also be specified; the .c file it was made from is used.
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
24 This helps the makefile pass the correct list of files.
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
25
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
26 The results, which go to standard output or to a file
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
27 specified with -a or -o (-a to append, -o to start from nothing),
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
28 are entries containing function or variable names and their documentation.
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
29 Each entry starts with a ^_ character.
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
30 Then comes F for a function or V for a variable.
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
31 Then comes the function or variable name, terminated with a newline.
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
32 Then comes the documentation for that function or variable.
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
33 */
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
34
11690
450b9598aca5 Include config.h.
Richard M. Stallman <rms@gnu.org>
parents: 11413
diff changeset
35 #define NO_SHORTNAMES /* Tell config not to load remap.h */
450b9598aca5 Include config.h.
Richard M. Stallman <rms@gnu.org>
parents: 11413
diff changeset
36 #include <../src/config.h>
450b9598aca5 Include config.h.
Richard M. Stallman <rms@gnu.org>
parents: 11413
diff changeset
37
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
38 #include <stdio.h>
5449
296db649863d [MSDOS]: Use text/binary mode as appropriate.
Richard M. Stallman <rms@gnu.org>
parents: 5317
diff changeset
39 #ifdef MSDOS
296db649863d [MSDOS]: Use text/binary mode as appropriate.
Richard M. Stallman <rms@gnu.org>
parents: 5317
diff changeset
40 #include <fcntl.h>
296db649863d [MSDOS]: Use text/binary mode as appropriate.
Richard M. Stallman <rms@gnu.org>
parents: 5317
diff changeset
41 #endif /* MSDOS */
9772
20652342eb9a (main) [WINDOWSNT]: Now sets _fmode and stdout to O_BINARY.
Richard M. Stallman <rms@gnu.org>
parents: 9643
diff changeset
42 #ifdef WINDOWSNT
20652342eb9a (main) [WINDOWSNT]: Now sets _fmode and stdout to O_BINARY.
Richard M. Stallman <rms@gnu.org>
parents: 9643
diff changeset
43 #include <stdlib.h>
20652342eb9a (main) [WINDOWSNT]: Now sets _fmode and stdout to O_BINARY.
Richard M. Stallman <rms@gnu.org>
parents: 9643
diff changeset
44 #include <fcntl.h>
20652342eb9a (main) [WINDOWSNT]: Now sets _fmode and stdout to O_BINARY.
Richard M. Stallman <rms@gnu.org>
parents: 9643
diff changeset
45 #include <direct.h>
20652342eb9a (main) [WINDOWSNT]: Now sets _fmode and stdout to O_BINARY.
Richard M. Stallman <rms@gnu.org>
parents: 9643
diff changeset
46 #endif /* WINDOWSNT */
5449
296db649863d [MSDOS]: Use text/binary mode as appropriate.
Richard M. Stallman <rms@gnu.org>
parents: 5317
diff changeset
47
9772
20652342eb9a (main) [WINDOWSNT]: Now sets _fmode and stdout to O_BINARY.
Richard M. Stallman <rms@gnu.org>
parents: 9643
diff changeset
48 #ifdef DOS_NT
5449
296db649863d [MSDOS]: Use text/binary mode as appropriate.
Richard M. Stallman <rms@gnu.org>
parents: 5317
diff changeset
49 #define READ_TEXT "rt"
296db649863d [MSDOS]: Use text/binary mode as appropriate.
Richard M. Stallman <rms@gnu.org>
parents: 5317
diff changeset
50 #define READ_BINARY "rb"
9772
20652342eb9a (main) [WINDOWSNT]: Now sets _fmode and stdout to O_BINARY.
Richard M. Stallman <rms@gnu.org>
parents: 9643
diff changeset
51 #else /* not DOS_NT */
5449
296db649863d [MSDOS]: Use text/binary mode as appropriate.
Richard M. Stallman <rms@gnu.org>
parents: 5317
diff changeset
52 #define READ_TEXT "r"
296db649863d [MSDOS]: Use text/binary mode as appropriate.
Richard M. Stallman <rms@gnu.org>
parents: 5317
diff changeset
53 #define READ_BINARY "r"
9772
20652342eb9a (main) [WINDOWSNT]: Now sets _fmode and stdout to O_BINARY.
Richard M. Stallman <rms@gnu.org>
parents: 9643
diff changeset
54 #endif /* not DOS_NT */
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
55
9491
dd3b83e4ceb0 Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents: 7564
diff changeset
56 int scan_file ();
dd3b83e4ceb0 Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents: 7564
diff changeset
57 int scan_lisp_file ();
dd3b83e4ceb0 Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents: 7564
diff changeset
58 int scan_c_file ();
dd3b83e4ceb0 Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents: 7564
diff changeset
59
12134
cf65209088d6 [MSDOS]: #undef chdir.
Karl Heuer <kwzh@gnu.org>
parents: 11690
diff changeset
60 #ifdef MSDOS
cf65209088d6 [MSDOS]: #undef chdir.
Karl Heuer <kwzh@gnu.org>
parents: 11690
diff changeset
61 /* s/msdos.h defines this as sys_chdir, but we're not linking with the
cf65209088d6 [MSDOS]: #undef chdir.
Karl Heuer <kwzh@gnu.org>
parents: 11690
diff changeset
62 file where that function is defined. */
cf65209088d6 [MSDOS]: #undef chdir.
Karl Heuer <kwzh@gnu.org>
parents: 11690
diff changeset
63 #undef chdir
cf65209088d6 [MSDOS]: #undef chdir.
Karl Heuer <kwzh@gnu.org>
parents: 11690
diff changeset
64 #endif
cf65209088d6 [MSDOS]: #undef chdir.
Karl Heuer <kwzh@gnu.org>
parents: 11690
diff changeset
65
21783
798a28989dde Include <unistd.h> for chdir.
Andreas Schwab <schwab@suse.de>
parents: 19636
diff changeset
66 #ifdef HAVE_UNISTD_H
798a28989dde Include <unistd.h> for chdir.
Andreas Schwab <schwab@suse.de>
parents: 19636
diff changeset
67 #include <unistd.h>
798a28989dde Include <unistd.h> for chdir.
Andreas Schwab <schwab@suse.de>
parents: 19636
diff changeset
68 #endif
798a28989dde Include <unistd.h> for chdir.
Andreas Schwab <schwab@suse.de>
parents: 19636
diff changeset
69
10199
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
70 /* Stdio stream for output to the DOC file. */
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
71 FILE *outfile;
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
72
10199
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
73 /* Name this program was invoked with. */
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
74 char *progname;
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
75
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
76 /* Print error message. `s1' is printf control string, `s2' is arg for it. */
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
77
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
78 /* VARARGS1 */
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
79 void
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
80 error (s1, s2)
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
81 char *s1, *s2;
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
82 {
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
83 fprintf (stderr, "%s: ", progname);
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
84 fprintf (stderr, s1, s2);
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
85 fprintf (stderr, "\n");
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
86 }
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
87
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
88 /* Print error message and exit. */
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
89
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
90 /* VARARGS1 */
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
91 void
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
92 fatal (s1, s2)
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
93 char *s1, *s2;
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
94 {
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
95 error (s1, s2);
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
96 exit (1);
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
97 }
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
98
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
99 /* Like malloc but get fatal error if memory is exhausted. */
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
100
11690
450b9598aca5 Include config.h.
Richard M. Stallman <rms@gnu.org>
parents: 11413
diff changeset
101 long *
10199
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
102 xmalloc (size)
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
103 unsigned int size;
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
104 {
11690
450b9598aca5 Include config.h.
Richard M. Stallman <rms@gnu.org>
parents: 11413
diff changeset
105 long *result = (long *) malloc (size);
10199
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
106 if (result == NULL)
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
107 fatal ("virtual memory exhausted", 0);
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
108 return result;
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
109 }
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
110
9491
dd3b83e4ceb0 Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents: 7564
diff changeset
111 int
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
112 main (argc, argv)
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
113 int argc;
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
114 char **argv;
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
115 {
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
116 int i;
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
117 int err_count = 0;
9643
5d1e70b22a93 (main): Don't process one input file twice.
Richard M. Stallman <rms@gnu.org>
parents: 9491
diff changeset
118 int first_infile;
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
119
10199
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
120 progname = argv[0];
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
121
12328
dbc55496f684 (main): On MSDOS, don't change stdout to binary, and insist on an -o option.
Richard M. Stallman <rms@gnu.org>
parents: 12134
diff changeset
122 outfile = stdout;
dbc55496f684 (main): On MSDOS, don't change stdout to binary, and insist on an -o option.
Richard M. Stallman <rms@gnu.org>
parents: 12134
diff changeset
123
9772
20652342eb9a (main) [WINDOWSNT]: Now sets _fmode and stdout to O_BINARY.
Richard M. Stallman <rms@gnu.org>
parents: 9643
diff changeset
124 /* Don't put CRs in the DOC file. */
5449
296db649863d [MSDOS]: Use text/binary mode as appropriate.
Richard M. Stallman <rms@gnu.org>
parents: 5317
diff changeset
125 #ifdef MSDOS
12350
68508136431f (main) [MSDOS]: Do set _fmode.
Richard M. Stallman <rms@gnu.org>
parents: 12328
diff changeset
126 _fmode = O_BINARY;
12328
dbc55496f684 (main): On MSDOS, don't change stdout to binary, and insist on an -o option.
Richard M. Stallman <rms@gnu.org>
parents: 12134
diff changeset
127 #if 0 /* Suspicion is that this causes hanging.
dbc55496f684 (main): On MSDOS, don't change stdout to binary, and insist on an -o option.
Richard M. Stallman <rms@gnu.org>
parents: 12134
diff changeset
128 So instead we require people to use -o on MSDOS. */
5449
296db649863d [MSDOS]: Use text/binary mode as appropriate.
Richard M. Stallman <rms@gnu.org>
parents: 5317
diff changeset
129 (stdout)->_flag &= ~_IOTEXT;
296db649863d [MSDOS]: Use text/binary mode as appropriate.
Richard M. Stallman <rms@gnu.org>
parents: 5317
diff changeset
130 _setmode (fileno (stdout), O_BINARY);
12328
dbc55496f684 (main): On MSDOS, don't change stdout to binary, and insist on an -o option.
Richard M. Stallman <rms@gnu.org>
parents: 12134
diff changeset
131 #endif
dbc55496f684 (main): On MSDOS, don't change stdout to binary, and insist on an -o option.
Richard M. Stallman <rms@gnu.org>
parents: 12134
diff changeset
132 outfile = 0;
5449
296db649863d [MSDOS]: Use text/binary mode as appropriate.
Richard M. Stallman <rms@gnu.org>
parents: 5317
diff changeset
133 #endif /* MSDOS */
9772
20652342eb9a (main) [WINDOWSNT]: Now sets _fmode and stdout to O_BINARY.
Richard M. Stallman <rms@gnu.org>
parents: 9643
diff changeset
134 #ifdef WINDOWSNT
20652342eb9a (main) [WINDOWSNT]: Now sets _fmode and stdout to O_BINARY.
Richard M. Stallman <rms@gnu.org>
parents: 9643
diff changeset
135 _fmode = O_BINARY;
20652342eb9a (main) [WINDOWSNT]: Now sets _fmode and stdout to O_BINARY.
Richard M. Stallman <rms@gnu.org>
parents: 9643
diff changeset
136 _setmode (fileno (stdout), O_BINARY);
20652342eb9a (main) [WINDOWSNT]: Now sets _fmode and stdout to O_BINARY.
Richard M. Stallman <rms@gnu.org>
parents: 9643
diff changeset
137 #endif /* WINDOWSNT */
20652342eb9a (main) [WINDOWSNT]: Now sets _fmode and stdout to O_BINARY.
Richard M. Stallman <rms@gnu.org>
parents: 9643
diff changeset
138
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
139 /* If first two args are -o FILE, output to FILE. */
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
140 i = 1;
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
141 if (argc > i + 1 && !strcmp (argv[i], "-o"))
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
142 {
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
143 outfile = fopen (argv[i + 1], "w");
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
144 i += 2;
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
145 }
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
146 if (argc > i + 1 && !strcmp (argv[i], "-a"))
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
147 {
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
148 outfile = fopen (argv[i + 1], "a");
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
149 i += 2;
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
150 }
2814
0da5b58e98ed Install patches from David J. Mackenzie to make the srcdir option
Jim Blandy <jimb@redhat.com>
parents: 2483
diff changeset
151 if (argc > i + 1 && !strcmp (argv[i], "-d"))
0da5b58e98ed Install patches from David J. Mackenzie to make the srcdir option
Jim Blandy <jimb@redhat.com>
parents: 2483
diff changeset
152 {
0da5b58e98ed Install patches from David J. Mackenzie to make the srcdir option
Jim Blandy <jimb@redhat.com>
parents: 2483
diff changeset
153 chdir (argv[i + 1]);
0da5b58e98ed Install patches from David J. Mackenzie to make the srcdir option
Jim Blandy <jimb@redhat.com>
parents: 2483
diff changeset
154 i += 2;
0da5b58e98ed Install patches from David J. Mackenzie to make the srcdir option
Jim Blandy <jimb@redhat.com>
parents: 2483
diff changeset
155 }
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
156
12328
dbc55496f684 (main): On MSDOS, don't change stdout to binary, and insist on an -o option.
Richard M. Stallman <rms@gnu.org>
parents: 12134
diff changeset
157 if (outfile == 0)
dbc55496f684 (main): On MSDOS, don't change stdout to binary, and insist on an -o option.
Richard M. Stallman <rms@gnu.org>
parents: 12134
diff changeset
158 fatal ("No output file specified", "");
dbc55496f684 (main): On MSDOS, don't change stdout to binary, and insist on an -o option.
Richard M. Stallman <rms@gnu.org>
parents: 12134
diff changeset
159
9643
5d1e70b22a93 (main): Don't process one input file twice.
Richard M. Stallman <rms@gnu.org>
parents: 9491
diff changeset
160 first_infile = i;
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
161 for (; i < argc; i++)
9643
5d1e70b22a93 (main): Don't process one input file twice.
Richard M. Stallman <rms@gnu.org>
parents: 9491
diff changeset
162 {
5d1e70b22a93 (main): Don't process one input file twice.
Richard M. Stallman <rms@gnu.org>
parents: 9491
diff changeset
163 int j;
5d1e70b22a93 (main): Don't process one input file twice.
Richard M. Stallman <rms@gnu.org>
parents: 9491
diff changeset
164 /* Don't process one file twice. */
5d1e70b22a93 (main): Don't process one input file twice.
Richard M. Stallman <rms@gnu.org>
parents: 9491
diff changeset
165 for (j = first_infile; j < i; j++)
5d1e70b22a93 (main): Don't process one input file twice.
Richard M. Stallman <rms@gnu.org>
parents: 9491
diff changeset
166 if (! strcmp (argv[i], argv[j]))
5d1e70b22a93 (main): Don't process one input file twice.
Richard M. Stallman <rms@gnu.org>
parents: 9491
diff changeset
167 break;
5d1e70b22a93 (main): Don't process one input file twice.
Richard M. Stallman <rms@gnu.org>
parents: 9491
diff changeset
168 if (j == i)
5d1e70b22a93 (main): Don't process one input file twice.
Richard M. Stallman <rms@gnu.org>
parents: 9491
diff changeset
169 err_count += scan_file (argv[i]);
5d1e70b22a93 (main): Don't process one input file twice.
Richard M. Stallman <rms@gnu.org>
parents: 9491
diff changeset
170 }
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
171 #ifndef VMS
9643
5d1e70b22a93 (main): Don't process one input file twice.
Richard M. Stallman <rms@gnu.org>
parents: 9491
diff changeset
172 exit (err_count > 0);
3028
cf9379f91ea1 * make-docfile.c: Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 2966
diff changeset
173 #endif /* VMS */
9643
5d1e70b22a93 (main): Don't process one input file twice.
Richard M. Stallman <rms@gnu.org>
parents: 9491
diff changeset
174 return err_count > 0;
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
175 }
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
176
164
aba3ff2b9eb4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 162
diff changeset
177 /* Read file FILENAME and output its doc strings to outfile. */
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
178 /* Return 1 if file is not found, 0 if it is found. */
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
179
9491
dd3b83e4ceb0 Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents: 7564
diff changeset
180 int
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
181 scan_file (filename)
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
182 char *filename;
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
183 {
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
184 int len = strlen (filename);
12351
f2e9eb6a8939 (scan_file): Make sure it never looks at filename[-1].
Richard M. Stallman <rms@gnu.org>
parents: 12350
diff changeset
185 if (len > 4 && !strcmp (filename + len - 4, ".elc"))
5449
296db649863d [MSDOS]: Use text/binary mode as appropriate.
Richard M. Stallman <rms@gnu.org>
parents: 5317
diff changeset
186 return scan_lisp_file (filename, READ_BINARY);
12351
f2e9eb6a8939 (scan_file): Make sure it never looks at filename[-1].
Richard M. Stallman <rms@gnu.org>
parents: 12350
diff changeset
187 else if (len > 3 && !strcmp (filename + len - 3, ".el"))
5449
296db649863d [MSDOS]: Use text/binary mode as appropriate.
Richard M. Stallman <rms@gnu.org>
parents: 5317
diff changeset
188 return scan_lisp_file (filename, READ_TEXT);
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
189 else
5449
296db649863d [MSDOS]: Use text/binary mode as appropriate.
Richard M. Stallman <rms@gnu.org>
parents: 5317
diff changeset
190 return scan_c_file (filename, READ_TEXT);
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
191 }
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
192
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
193 char buf[128];
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
194
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
195 /* Skip a C string from INFILE,
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
196 and return the character that follows the closing ".
164
aba3ff2b9eb4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 162
diff changeset
197 If printflag is positive, output string contents to outfile.
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
198 If it is negative, store contents in buf.
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
199 Convert escape sequences \n and \t to newline and tab;
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
200 discard \ followed by newline. */
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
201
9491
dd3b83e4ceb0 Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents: 7564
diff changeset
202 int
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
203 read_c_string (infile, printflag)
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
204 FILE *infile;
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
205 int printflag;
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
206 {
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
207 register int c;
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
208 char *p = buf;
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
209
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
210 c = getc (infile);
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
211 while (c != EOF)
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
212 {
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
213 while (c != '"' && c != EOF)
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
214 {
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
215 if (c == '\\')
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
216 {
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
217 c = getc (infile);
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
218 if (c == '\n')
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
219 {
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
220 c = getc (infile);
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
221 continue;
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
222 }
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
223 if (c == 'n')
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
224 c = '\n';
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
225 if (c == 't')
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
226 c = '\t';
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
227 }
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
228 if (printflag > 0)
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
229 putc (c, outfile);
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
230 else if (printflag < 0)
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
231 *p++ = c;
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
232 c = getc (infile);
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
233 }
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
234 c = getc (infile);
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
235 if (c != '"')
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
236 break;
4987
f052db139432 (read_c_string): For "", concatenate the two strings.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
237 /* If we had a "", concatenate the two strings. */
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
238 c = getc (infile);
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
239 }
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
240
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
241 if (printflag < 0)
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
242 *p = 0;
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
243
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
244 return c;
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
245 }
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
246
5604
32ac07bd58ef Make the argument list output look more like the Lisp docstrings do.
Roland McGrath <roland@gnu.org>
parents: 5449
diff changeset
247 /* Write to file OUT the argument names of function FUNC, whose text is in BUF.
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
248 MINARGS and MAXARGS are the minimum and maximum number of arguments. */
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
249
9491
dd3b83e4ceb0 Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents: 7564
diff changeset
250 void
5604
32ac07bd58ef Make the argument list output look more like the Lisp docstrings do.
Roland McGrath <roland@gnu.org>
parents: 5449
diff changeset
251 write_c_args (out, func, buf, minargs, maxargs)
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
252 FILE *out;
5604
32ac07bd58ef Make the argument list output look more like the Lisp docstrings do.
Roland McGrath <roland@gnu.org>
parents: 5449
diff changeset
253 char *func, *buf;
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
254 int minargs, maxargs;
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
255 {
1206
de54d705652f *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 753
diff changeset
256 register char *p;
1250
5788741d1eaa entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 1206
diff changeset
257 int in_ident = 0;
5788741d1eaa entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 1206
diff changeset
258 int just_spaced = 0;
5604
32ac07bd58ef Make the argument list output look more like the Lisp docstrings do.
Roland McGrath <roland@gnu.org>
parents: 5449
diff changeset
259 int need_space = 1;
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
260
5604
32ac07bd58ef Make the argument list output look more like the Lisp docstrings do.
Roland McGrath <roland@gnu.org>
parents: 5449
diff changeset
261 fprintf (out, "(%s", func);
32ac07bd58ef Make the argument list output look more like the Lisp docstrings do.
Roland McGrath <roland@gnu.org>
parents: 5449
diff changeset
262
32ac07bd58ef Make the argument list output look more like the Lisp docstrings do.
Roland McGrath <roland@gnu.org>
parents: 5449
diff changeset
263 if (*buf == '(')
32ac07bd58ef Make the argument list output look more like the Lisp docstrings do.
Roland McGrath <roland@gnu.org>
parents: 5449
diff changeset
264 ++buf;
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
265
1206
de54d705652f *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 753
diff changeset
266 for (p = buf; *p; p++)
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
267 {
1250
5788741d1eaa entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 1206
diff changeset
268 char c = *p;
2483
b4145a12422d * make-docfile.c (write_c_args): Print an argument named "defalt"
Jim Blandy <jimb@redhat.com>
parents: 1676
diff changeset
269 int ident_start = 0;
1250
5788741d1eaa entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 1206
diff changeset
270
5788741d1eaa entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 1206
diff changeset
271 /* Notice when we start printing a new identifier. */
5788741d1eaa entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 1206
diff changeset
272 if ((('A' <= c && c <= 'Z')
5788741d1eaa entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 1206
diff changeset
273 || ('a' <= c && c <= 'z')
5788741d1eaa entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 1206
diff changeset
274 || ('0' <= c && c <= '9')
5788741d1eaa entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 1206
diff changeset
275 || c == '_')
5788741d1eaa entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 1206
diff changeset
276 != in_ident)
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
277 {
1250
5788741d1eaa entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 1206
diff changeset
278 if (!in_ident)
5788741d1eaa entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 1206
diff changeset
279 {
5788741d1eaa entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 1206
diff changeset
280 in_ident = 1;
2483
b4145a12422d * make-docfile.c (write_c_args): Print an argument named "defalt"
Jim Blandy <jimb@redhat.com>
parents: 1676
diff changeset
281 ident_start = 1;
1206
de54d705652f *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 753
diff changeset
282
5604
32ac07bd58ef Make the argument list output look more like the Lisp docstrings do.
Roland McGrath <roland@gnu.org>
parents: 5449
diff changeset
283 if (need_space)
32ac07bd58ef Make the argument list output look more like the Lisp docstrings do.
Roland McGrath <roland@gnu.org>
parents: 5449
diff changeset
284 putc (' ', out);
32ac07bd58ef Make the argument list output look more like the Lisp docstrings do.
Roland McGrath <roland@gnu.org>
parents: 5449
diff changeset
285
1250
5788741d1eaa entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 1206
diff changeset
286 if (minargs == 0 && maxargs > 0)
5788741d1eaa entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 1206
diff changeset
287 fprintf (out, "&optional ");
5788741d1eaa entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 1206
diff changeset
288 just_spaced = 1;
1206
de54d705652f *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 753
diff changeset
289
1250
5788741d1eaa entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 1206
diff changeset
290 minargs--;
5788741d1eaa entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 1206
diff changeset
291 maxargs--;
5788741d1eaa entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 1206
diff changeset
292 }
5788741d1eaa entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 1206
diff changeset
293 else
5788741d1eaa entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 1206
diff changeset
294 in_ident = 0;
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
295 }
638
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 168
diff changeset
296
1250
5788741d1eaa entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 1206
diff changeset
297 /* Print the C argument list as it would appear in lisp:
5788741d1eaa entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 1206
diff changeset
298 print underscores as hyphens, and print commas as spaces.
5788741d1eaa entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 1206
diff changeset
299 Collapse adjacent spaces into one. */
5788741d1eaa entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 1206
diff changeset
300 if (c == '_') c = '-';
5788741d1eaa entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 1206
diff changeset
301 if (c == ',') c = ' ';
5788741d1eaa entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 1206
diff changeset
302
2483
b4145a12422d * make-docfile.c (write_c_args): Print an argument named "defalt"
Jim Blandy <jimb@redhat.com>
parents: 1676
diff changeset
303 /* In C code, `default' is a reserved word, so we spell it
b4145a12422d * make-docfile.c (write_c_args): Print an argument named "defalt"
Jim Blandy <jimb@redhat.com>
parents: 1676
diff changeset
304 `defalt'; unmangle that here. */
b4145a12422d * make-docfile.c (write_c_args): Print an argument named "defalt"
Jim Blandy <jimb@redhat.com>
parents: 1676
diff changeset
305 if (ident_start
b4145a12422d * make-docfile.c (write_c_args): Print an argument named "defalt"
Jim Blandy <jimb@redhat.com>
parents: 1676
diff changeset
306 && strncmp (p, "defalt", 6) == 0
b4145a12422d * make-docfile.c (write_c_args): Print an argument named "defalt"
Jim Blandy <jimb@redhat.com>
parents: 1676
diff changeset
307 && ! (('A' <= p[6] && p[6] <= 'Z')
b4145a12422d * make-docfile.c (write_c_args): Print an argument named "defalt"
Jim Blandy <jimb@redhat.com>
parents: 1676
diff changeset
308 || ('a' <= p[6] && p[6] <= 'z')
b4145a12422d * make-docfile.c (write_c_args): Print an argument named "defalt"
Jim Blandy <jimb@redhat.com>
parents: 1676
diff changeset
309 || ('0' <= p[6] && p[6] <= '9')
b4145a12422d * make-docfile.c (write_c_args): Print an argument named "defalt"
Jim Blandy <jimb@redhat.com>
parents: 1676
diff changeset
310 || p[6] == '_'))
b4145a12422d * make-docfile.c (write_c_args): Print an argument named "defalt"
Jim Blandy <jimb@redhat.com>
parents: 1676
diff changeset
311 {
7564
d5d803ffff27 (write_c_args): Put `default' in upper case.
Richard M. Stallman <rms@gnu.org>
parents: 5604
diff changeset
312 fprintf (out, "DEFAULT");
2483
b4145a12422d * make-docfile.c (write_c_args): Print an argument named "defalt"
Jim Blandy <jimb@redhat.com>
parents: 1676
diff changeset
313 p += 5;
b4145a12422d * make-docfile.c (write_c_args): Print an argument named "defalt"
Jim Blandy <jimb@redhat.com>
parents: 1676
diff changeset
314 in_ident = 0;
b4145a12422d * make-docfile.c (write_c_args): Print an argument named "defalt"
Jim Blandy <jimb@redhat.com>
parents: 1676
diff changeset
315 just_spaced = 0;
b4145a12422d * make-docfile.c (write_c_args): Print an argument named "defalt"
Jim Blandy <jimb@redhat.com>
parents: 1676
diff changeset
316 }
b4145a12422d * make-docfile.c (write_c_args): Print an argument named "defalt"
Jim Blandy <jimb@redhat.com>
parents: 1676
diff changeset
317 else if (c != ' ' || ! just_spaced)
5604
32ac07bd58ef Make the argument list output look more like the Lisp docstrings do.
Roland McGrath <roland@gnu.org>
parents: 5449
diff changeset
318 {
32ac07bd58ef Make the argument list output look more like the Lisp docstrings do.
Roland McGrath <roland@gnu.org>
parents: 5449
diff changeset
319 if (c >= 'a' && c <= 'z')
32ac07bd58ef Make the argument list output look more like the Lisp docstrings do.
Roland McGrath <roland@gnu.org>
parents: 5449
diff changeset
320 /* Upcase the letter. */
32ac07bd58ef Make the argument list output look more like the Lisp docstrings do.
Roland McGrath <roland@gnu.org>
parents: 5449
diff changeset
321 c += 'A' - 'a';
32ac07bd58ef Make the argument list output look more like the Lisp docstrings do.
Roland McGrath <roland@gnu.org>
parents: 5449
diff changeset
322 putc (c, out);
32ac07bd58ef Make the argument list output look more like the Lisp docstrings do.
Roland McGrath <roland@gnu.org>
parents: 5449
diff changeset
323 }
1250
5788741d1eaa entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 1206
diff changeset
324
5788741d1eaa entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 1206
diff changeset
325 just_spaced = (c == ' ');
5604
32ac07bd58ef Make the argument list output look more like the Lisp docstrings do.
Roland McGrath <roland@gnu.org>
parents: 5449
diff changeset
326 need_space = 0;
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
327 }
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
328 }
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
329
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
330 /* Read through a c file. If a .o file is named,
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
331 the corresponding .c file is read instead.
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
332 Looks for DEFUN constructs such as are defined in ../src/lisp.h.
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
333 Accepts any word starting DEF... so it finds DEFSIMPLE and DEFPRED. */
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
334
9491
dd3b83e4ceb0 Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents: 7564
diff changeset
335 int
5449
296db649863d [MSDOS]: Use text/binary mode as appropriate.
Richard M. Stallman <rms@gnu.org>
parents: 5317
diff changeset
336 scan_c_file (filename, mode)
296db649863d [MSDOS]: Use text/binary mode as appropriate.
Richard M. Stallman <rms@gnu.org>
parents: 5317
diff changeset
337 char *filename, *mode;
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
338 {
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
339 FILE *infile;
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
340 register int c;
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
341 register int commas;
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
342 register int defunflag;
1676
e8b3c6b52c1e * make-docfile.c (scan_c_file): Since DEFVAR_PER_BUFFER now takes
Jim Blandy <jimb@redhat.com>
parents: 1250
diff changeset
343 register int defvarperbufferflag;
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
344 register int defvarflag;
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
345 int minargs, maxargs;
11413
9cd115f44483 (scan_c_file): At end, restore file name last char to its original value.
Richard M. Stallman <rms@gnu.org>
parents: 10199
diff changeset
346 int extension = filename[strlen (filename) - 1];
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
347
11413
9cd115f44483 (scan_c_file): At end, restore file name last char to its original value.
Richard M. Stallman <rms@gnu.org>
parents: 10199
diff changeset
348 if (extension == 'o')
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
349 filename[strlen (filename) - 1] = 'c';
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
350
5449
296db649863d [MSDOS]: Use text/binary mode as appropriate.
Richard M. Stallman <rms@gnu.org>
parents: 5317
diff changeset
351 infile = fopen (filename, mode);
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
352
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
353 /* No error if non-ex input file */
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
354 if (infile == NULL)
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
355 {
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
356 perror (filename);
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
357 return 0;
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
358 }
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
359
11413
9cd115f44483 (scan_c_file): At end, restore file name last char to its original value.
Richard M. Stallman <rms@gnu.org>
parents: 10199
diff changeset
360 /* Reset extension to be able to detect duplicate files. */
9cd115f44483 (scan_c_file): At end, restore file name last char to its original value.
Richard M. Stallman <rms@gnu.org>
parents: 10199
diff changeset
361 filename[strlen (filename) - 1] = extension;
9cd115f44483 (scan_c_file): At end, restore file name last char to its original value.
Richard M. Stallman <rms@gnu.org>
parents: 10199
diff changeset
362
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
363 c = '\n';
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
364 while (!feof (infile))
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
365 {
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
366 if (c != '\n')
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
367 {
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
368 c = getc (infile);
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
369 continue;
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
370 }
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
371 c = getc (infile);
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
372 if (c == ' ')
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
373 {
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
374 while (c == ' ')
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
375 c = getc (infile);
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
376 if (c != 'D')
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
377 continue;
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
378 c = getc (infile);
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
379 if (c != 'E')
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
380 continue;
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
381 c = getc (infile);
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
382 if (c != 'F')
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
383 continue;
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
384 c = getc (infile);
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
385 if (c != 'V')
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
386 continue;
1676
e8b3c6b52c1e * make-docfile.c (scan_c_file): Since DEFVAR_PER_BUFFER now takes
Jim Blandy <jimb@redhat.com>
parents: 1250
diff changeset
387 c = getc (infile);
e8b3c6b52c1e * make-docfile.c (scan_c_file): Since DEFVAR_PER_BUFFER now takes
Jim Blandy <jimb@redhat.com>
parents: 1250
diff changeset
388 if (c != 'A')
e8b3c6b52c1e * make-docfile.c (scan_c_file): Since DEFVAR_PER_BUFFER now takes
Jim Blandy <jimb@redhat.com>
parents: 1250
diff changeset
389 continue;
e8b3c6b52c1e * make-docfile.c (scan_c_file): Since DEFVAR_PER_BUFFER now takes
Jim Blandy <jimb@redhat.com>
parents: 1250
diff changeset
390 c = getc (infile);
e8b3c6b52c1e * make-docfile.c (scan_c_file): Since DEFVAR_PER_BUFFER now takes
Jim Blandy <jimb@redhat.com>
parents: 1250
diff changeset
391 if (c != 'R')
e8b3c6b52c1e * make-docfile.c (scan_c_file): Since DEFVAR_PER_BUFFER now takes
Jim Blandy <jimb@redhat.com>
parents: 1250
diff changeset
392 continue;
e8b3c6b52c1e * make-docfile.c (scan_c_file): Since DEFVAR_PER_BUFFER now takes
Jim Blandy <jimb@redhat.com>
parents: 1250
diff changeset
393 c = getc (infile);
e8b3c6b52c1e * make-docfile.c (scan_c_file): Since DEFVAR_PER_BUFFER now takes
Jim Blandy <jimb@redhat.com>
parents: 1250
diff changeset
394 if (c != '_')
e8b3c6b52c1e * make-docfile.c (scan_c_file): Since DEFVAR_PER_BUFFER now takes
Jim Blandy <jimb@redhat.com>
parents: 1250
diff changeset
395 continue;
e8b3c6b52c1e * make-docfile.c (scan_c_file): Since DEFVAR_PER_BUFFER now takes
Jim Blandy <jimb@redhat.com>
parents: 1250
diff changeset
396
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
397 defvarflag = 1;
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
398 defunflag = 0;
1676
e8b3c6b52c1e * make-docfile.c (scan_c_file): Since DEFVAR_PER_BUFFER now takes
Jim Blandy <jimb@redhat.com>
parents: 1250
diff changeset
399
e8b3c6b52c1e * make-docfile.c (scan_c_file): Since DEFVAR_PER_BUFFER now takes
Jim Blandy <jimb@redhat.com>
parents: 1250
diff changeset
400 c = getc (infile);
e8b3c6b52c1e * make-docfile.c (scan_c_file): Since DEFVAR_PER_BUFFER now takes
Jim Blandy <jimb@redhat.com>
parents: 1250
diff changeset
401 defvarperbufferflag = (c == 'P');
e8b3c6b52c1e * make-docfile.c (scan_c_file): Since DEFVAR_PER_BUFFER now takes
Jim Blandy <jimb@redhat.com>
parents: 1250
diff changeset
402
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
403 c = getc (infile);
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
404 }
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
405 else if (c == 'D')
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
406 {
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
407 c = getc (infile);
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
408 if (c != 'E')
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
409 continue;
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
410 c = getc (infile);
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
411 if (c != 'F')
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
412 continue;
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
413 c = getc (infile);
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
414 defunflag = c == 'U';
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
415 defvarflag = 0;
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
416 }
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
417 else continue;
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
418
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
419 while (c != '(')
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
420 {
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
421 if (c < 0)
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
422 goto eof;
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
423 c = getc (infile);
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
424 }
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
425
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
426 c = getc (infile);
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
427 if (c != '"')
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
428 continue;
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
429 c = read_c_string (infile, -1);
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
430
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
431 if (defunflag)
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
432 commas = 5;
1676
e8b3c6b52c1e * make-docfile.c (scan_c_file): Since DEFVAR_PER_BUFFER now takes
Jim Blandy <jimb@redhat.com>
parents: 1250
diff changeset
433 else if (defvarperbufferflag)
e8b3c6b52c1e * make-docfile.c (scan_c_file): Since DEFVAR_PER_BUFFER now takes
Jim Blandy <jimb@redhat.com>
parents: 1250
diff changeset
434 commas = 2;
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
435 else if (defvarflag)
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
436 commas = 1;
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
437 else /* For DEFSIMPLE and DEFPRED */
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
438 commas = 2;
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
439
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
440 while (commas)
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
441 {
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
442 if (c == ',')
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
443 {
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
444 commas--;
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
445 if (defunflag && (commas == 1 || commas == 2))
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
446 {
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
447 do
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
448 c = getc (infile);
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
449 while (c == ' ' || c == '\n' || c == '\t');
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
450 if (c < 0)
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
451 goto eof;
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
452 ungetc (c, infile);
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
453 if (commas == 2) /* pick up minargs */
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
454 fscanf (infile, "%d", &minargs);
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
455 else /* pick up maxargs */
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
456 if (c == 'M' || c == 'U') /* MANY || UNEVALLED */
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
457 maxargs = -1;
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
458 else
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
459 fscanf (infile, "%d", &maxargs);
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
460 }
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
461 }
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
462 if (c < 0)
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
463 goto eof;
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
464 c = getc (infile);
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
465 }
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
466 while (c == ' ' || c == '\n' || c == '\t')
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
467 c = getc (infile);
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
468 if (c == '"')
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
469 c = read_c_string (infile, 0);
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
470 while (c != ',')
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
471 c = getc (infile);
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
472 c = getc (infile);
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
473 while (c == ' ' || c == '\n' || c == '\t')
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
474 c = getc (infile);
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
475
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
476 if (c == '"')
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
477 {
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
478 putc (037, outfile);
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
479 putc (defvarflag ? 'V' : 'F', outfile);
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
480 fprintf (outfile, "%s\n", buf);
168
e0ec73426aea *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 164
diff changeset
481 c = read_c_string (infile, 1);
e0ec73426aea *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 164
diff changeset
482
e0ec73426aea *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 164
diff changeset
483 /* If this is a defun, find the arguments and print them. If
e0ec73426aea *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 164
diff changeset
484 this function takes MANY or UNEVALLED args, then the C source
e0ec73426aea *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 164
diff changeset
485 won't give the names of the arguments, so we shouldn't bother
e0ec73426aea *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 164
diff changeset
486 trying to find them. */
e0ec73426aea *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 164
diff changeset
487 if (defunflag && maxargs != -1)
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
488 {
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
489 char argbuf[1024], *p = argbuf;
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
490 while (c != ')')
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
491 {
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
492 if (c < 0)
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
493 goto eof;
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
494 c = getc (infile);
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
495 }
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
496 /* Skip into arguments. */
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
497 while (c != '(')
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
498 {
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
499 if (c < 0)
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
500 goto eof;
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
501 c = getc (infile);
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
502 }
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
503 /* Copy arguments into ARGBUF. */
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
504 *p++ = c;
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
505 do
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
506 *p++ = c = getc (infile);
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
507 while (c != ')');
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
508 *p = '\0';
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
509 /* Output them. */
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
510 fprintf (outfile, "\n\n");
5604
32ac07bd58ef Make the argument list output look more like the Lisp docstrings do.
Roland McGrath <roland@gnu.org>
parents: 5449
diff changeset
511 write_c_args (outfile, buf, argbuf, minargs, maxargs);
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
512 }
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
513 }
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
514 }
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
515 eof:
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
516 fclose (infile);
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
517 return 0;
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
518 }
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
519
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
520 /* Read a file of Lisp code, compiled or interpreted.
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
521 Looks for
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
522 (defun NAME ARGS DOCSTRING ...)
753
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
523 (defmacro NAME ARGS DOCSTRING ...)
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
524 (autoload (quote NAME) FILE DOCSTRING ...)
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
525 (defvar NAME VALUE DOCSTRING)
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
526 (defconst NAME VALUE DOCSTRING)
753
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
527 (fset (quote NAME) (make-byte-code ... DOCSTRING ...))
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
528 (fset (quote NAME) #[... DOCSTRING ...])
2966
e936d56c2354 (scan_lisp_file): Recognize defalias like fset.
Richard M. Stallman <rms@gnu.org>
parents: 2814
diff changeset
529 (defalias (quote NAME) #[... DOCSTRING ...])
19636
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
530 (custom-declare-variable (quote NAME) VALUE DOCSTRING ...)
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
531 starting in column zero.
753
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
532 (quote NAME) may appear as 'NAME as well.
10199
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
533
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
534 We also look for #@LENGTH CONTENTS^_ at the beginning of the line.
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
535 When we find that, we save it for the following defining-form,
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
536 and we use that instead of reading a doc string within that defining-form.
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
537
753
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
538 For defun, defmacro, and autoload, we know how to skip over the arglist.
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3028
diff changeset
539 For defvar, defconst, and fset we skip to the docstring with a kludgy
753
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
540 formatting convention: all docstrings must appear on the same line as the
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
541 initial open-paren (the one in column zero) and must contain a backslash
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
542 and a double-quote immediately after the initial double-quote. No newlines
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
543 must appear between the beginning of the form and the first double-quote.
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
544 The only source file that must follow this convention is loaddefs.el; aside
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
545 from that, it is always the .elc file that we look at, and they are no
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
546 problem because byte-compiler output follows this convention.
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
547 The NAME and DOCSTRING are output.
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
548 NAME is preceded by `F' for a function or `V' for a variable.
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
549 An entry is output only if DOCSTRING has \ newline just after the opening "
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
550 */
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
551
753
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
552 void
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
553 skip_white (infile)
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
554 FILE *infile;
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
555 {
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
556 char c = ' ';
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
557 while (c == ' ' || c == '\t' || c == '\n')
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
558 c = getc (infile);
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
559 ungetc (c, infile);
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
560 }
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
561
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
562 void
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
563 read_lisp_symbol (infile, buffer)
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
564 FILE *infile;
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
565 char *buffer;
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
566 {
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
567 char c;
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
568 char *fillp = buffer;
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
569
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
570 skip_white (infile);
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
571 while (1)
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
572 {
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
573 c = getc (infile);
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
574 if (c == '\\')
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
575 *(++fillp) = getc (infile);
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
576 else if (c == ' ' || c == '\t' || c == '\n' || c == '(' || c == ')')
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
577 {
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
578 ungetc (c, infile);
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
579 *fillp = 0;
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
580 break;
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
581 }
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
582 else
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
583 *fillp++ = c;
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
584 }
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
585
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
586 if (! buffer[0])
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
587 fprintf (stderr, "## expected a symbol, got '%c'\n", c);
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
588
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
589 skip_white (infile);
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
590 }
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
591
9491
dd3b83e4ceb0 Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents: 7564
diff changeset
592 int
5449
296db649863d [MSDOS]: Use text/binary mode as appropriate.
Richard M. Stallman <rms@gnu.org>
parents: 5317
diff changeset
593 scan_lisp_file (filename, mode)
296db649863d [MSDOS]: Use text/binary mode as appropriate.
Richard M. Stallman <rms@gnu.org>
parents: 5317
diff changeset
594 char *filename, *mode;
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
595 {
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
596 FILE *infile;
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
597 register int c;
10199
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
598 char *saved_string = 0;
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
599
5449
296db649863d [MSDOS]: Use text/binary mode as appropriate.
Richard M. Stallman <rms@gnu.org>
parents: 5317
diff changeset
600 infile = fopen (filename, mode);
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
601 if (infile == NULL)
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
602 {
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
603 perror (filename);
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
604 return 0; /* No error */
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
605 }
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
606
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
607 c = '\n';
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
608 while (!feof (infile))
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
609 {
10199
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
610 char buffer[BUFSIZ];
753
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
611 char type;
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
612
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
613 if (c != '\n')
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
614 {
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
615 c = getc (infile);
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
616 continue;
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
617 }
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
618 c = getc (infile);
10199
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
619 /* Detect a dynamic doc string and save it for the next expression. */
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
620 if (c == '#')
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
621 {
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
622 c = getc (infile);
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
623 if (c == '@')
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
624 {
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
625 int length = 0;
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
626 int i;
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
627
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
628 /* Read the length. */
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
629 while ((c = getc (infile),
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
630 c >= '0' && c <= '9'))
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
631 {
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
632 length *= 10;
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
633 length += c - '0';
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
634 }
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
635
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
636 /* The next character is a space that is counted in the length
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
637 but not part of the doc string.
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
638 We already read it, so just ignore it. */
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
639 length--;
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
640
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
641 /* Read in the contents. */
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
642 if (saved_string != 0)
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
643 free (saved_string);
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
644 saved_string = (char *) malloc (length);
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
645 for (i = 0; i < length; i++)
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
646 saved_string[i] = getc (infile);
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
647 /* The last character is a ^_.
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
648 That is needed in the .elc file
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
649 but it is redundant in DOC. So get rid of it here. */
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
650 saved_string[length - 1] = 0;
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
651 /* Skip the newline. */
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
652 c = getc (infile);
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
653 while (c != '\n')
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
654 c = getc (infile);
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
655 }
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
656 continue;
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
657 }
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
658
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
659 if (c != '(')
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
660 continue;
164
aba3ff2b9eb4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 162
diff changeset
661
753
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
662 read_lisp_symbol (infile, buffer);
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
663
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
664 if (! strcmp (buffer, "defun") ||
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
665 ! strcmp (buffer, "defmacro"))
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
666 {
753
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
667 type = 'F';
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
668 read_lisp_symbol (infile, buffer);
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
669
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
670 /* Skip the arguments: either "nil" or a list in parens */
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
671
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
672 c = getc (infile);
753
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
673 if (c == 'n') /* nil */
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
674 {
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
675 if ((c = getc (infile)) != 'i' ||
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
676 (c = getc (infile)) != 'l')
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
677 {
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
678 fprintf (stderr, "## unparsable arglist in %s (%s)\n",
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
679 buffer, filename);
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
680 continue;
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
681 }
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
682 }
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
683 else if (c != '(')
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
684 {
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
685 fprintf (stderr, "## unparsable arglist in %s (%s)\n",
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
686 buffer, filename);
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
687 continue;
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
688 }
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
689 else
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
690 while (c != ')')
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
691 c = getc (infile);
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
692 skip_white (infile);
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
693
753
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
694 /* If the next three characters aren't `dquote bslash newline'
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
695 then we're not reading a docstring.
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
696 */
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
697 if ((c = getc (infile)) != '"' ||
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
698 (c = getc (infile)) != '\\' ||
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
699 (c = getc (infile)) != '\n')
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
700 {
753
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
701 #ifdef DEBUG
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
702 fprintf (stderr, "## non-docstring in %s (%s)\n",
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
703 buffer, filename);
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
704 #endif
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
705 continue;
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
706 }
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
707 }
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
708
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
709 else if (! strcmp (buffer, "defvar") ||
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
710 ! strcmp (buffer, "defconst"))
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
711 {
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
712 char c1 = 0, c2 = 0;
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
713 type = 'V';
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
714 read_lisp_symbol (infile, buffer);
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
715
10199
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
716 if (saved_string == 0)
753
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
717 {
10199
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
718
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
719 /* Skip until the first newline; remember the two previous chars. */
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
720 while (c != '\n' && c >= 0)
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
721 {
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
722 c2 = c1;
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
723 c1 = c;
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
724 c = getc (infile);
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
725 }
753
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
726
10199
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
727 /* If two previous characters were " and \,
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
728 this is a doc string. Otherwise, there is none. */
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
729 if (c2 != '"' || c1 != '\\')
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
730 {
753
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
731 #ifdef DEBUG
10199
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
732 fprintf (stderr, "## non-docstring in %s (%s)\n",
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
733 buffer, filename);
753
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
734 #endif
10199
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
735 continue;
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
736 }
753
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
737 }
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
738 }
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
739
19636
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
740 else if (! strcmp (buffer, "custom-declare-variable"))
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
741 {
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
742 char c1 = 0, c2 = 0;
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
743 type = 'V';
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
744
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
745 c = getc (infile);
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
746 if (c == '\'')
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
747 read_lisp_symbol (infile, buffer);
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
748 else
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
749 {
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
750 if (c != '(')
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
751 {
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
752 fprintf (stderr,
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
753 "## unparsable name in custom-declare-variable in %s\n",
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
754 filename);
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
755 continue;
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
756 }
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
757 read_lisp_symbol (infile, buffer);
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
758 if (strcmp (buffer, "quote"))
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
759 {
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
760 fprintf (stderr,
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
761 "## unparsable name in custom-declare-variable in %s\n",
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
762 filename);
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
763 continue;
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
764 }
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
765 read_lisp_symbol (infile, buffer);
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
766 c = getc (infile);
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
767 if (c != ')')
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
768 {
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
769 fprintf (stderr,
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
770 "## unparsable quoted name in custom-declare-variable in %s\n",
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
771 filename);
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
772 continue;
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
773 }
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
774 }
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
775
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
776 if (saved_string == 0)
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
777 {
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
778 /* Skip until the first newline; remember the two previous
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
779 chars. */
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
780 while (c != '\n' && c >= 0)
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
781 {
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
782 c2 = c1;
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
783 c1 = c;
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
784 c = getc (infile);
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
785 }
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
786
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
787 /* If two previous characters were " and \,
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
788 this is a doc string. Otherwise, there is none. */
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
789 if (c2 != '"' || c1 != '\\')
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
790 {
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
791 #ifdef DEBUG
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
792 fprintf (stderr, "## non-docstring in %s (%s)\n",
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
793 buffer, filename);
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
794 #endif
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
795 continue;
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
796 }
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
797 }
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
798 }
77fa90ed939d (scan_lisp_file): Handle custom-declare-variable.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
799
2966
e936d56c2354 (scan_lisp_file): Recognize defalias like fset.
Richard M. Stallman <rms@gnu.org>
parents: 2814
diff changeset
800 else if (! strcmp (buffer, "fset") || ! strcmp (buffer, "defalias"))
753
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
801 {
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
802 char c1 = 0, c2 = 0;
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
803 type = 'F';
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
804
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
805 c = getc (infile);
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
806 if (c == '\'')
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
807 read_lisp_symbol (infile, buffer);
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
808 else
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
809 {
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
810 if (c != '(')
753
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
811 {
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
812 fprintf (stderr, "## unparsable name in fset in %s\n",
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
813 filename);
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
814 continue;
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
815 }
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
816 read_lisp_symbol (infile, buffer);
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
817 if (strcmp (buffer, "quote"))
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
818 {
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
819 fprintf (stderr, "## unparsable name in fset in %s\n",
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
820 filename);
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
821 continue;
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
822 }
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
823 read_lisp_symbol (infile, buffer);
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
824 c = getc (infile);
753
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
825 if (c != ')')
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
826 {
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
827 fprintf (stderr,
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
828 "## unparsable quoted name in fset in %s\n",
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
829 filename);
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
830 continue;
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
831 }
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
832 }
164
aba3ff2b9eb4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 162
diff changeset
833
10199
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
834 if (saved_string == 0)
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
835 {
10199
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
836 /* Skip until the first newline; remember the two previous chars. */
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
837 while (c != '\n' && c >= 0)
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
838 {
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
839 c2 = c1;
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
840 c1 = c;
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
841 c = getc (infile);
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
842 }
753
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
843
10199
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
844 /* If two previous characters were " and \,
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
845 this is a doc string. Otherwise, there is none. */
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
846 if (c2 != '"' || c1 != '\\')
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
847 {
753
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
848 #ifdef DEBUG
10199
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
849 fprintf (stderr, "## non-docstring in %s (%s)\n",
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
850 buffer, filename);
753
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
851 #endif
10199
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
852 continue;
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
853 }
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
854 }
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
855 }
753
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
856
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
857 else if (! strcmp (buffer, "autoload"))
164
aba3ff2b9eb4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 162
diff changeset
858 {
753
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
859 type = 'F';
164
aba3ff2b9eb4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 162
diff changeset
860 c = getc (infile);
753
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
861 if (c == '\'')
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
862 read_lisp_symbol (infile, buffer);
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
863 else
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
864 {
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
865 if (c != '(')
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
866 {
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
867 fprintf (stderr, "## unparsable name in autoload in %s\n",
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
868 filename);
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
869 continue;
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
870 }
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
871 read_lisp_symbol (infile, buffer);
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
872 if (strcmp (buffer, "quote"))
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
873 {
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
874 fprintf (stderr, "## unparsable name in autoload in %s\n",
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
875 filename);
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
876 continue;
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
877 }
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
878 read_lisp_symbol (infile, buffer);
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
879 c = getc (infile);
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
880 if (c != ')')
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
881 {
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
882 fprintf (stderr,
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
883 "## unparsable quoted name in autoload in %s\n",
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
884 filename);
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
885 continue;
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
886 }
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
887 }
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
888 skip_white (infile);
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
889 if ((c = getc (infile)) != '\"')
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
890 {
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
891 fprintf (stderr, "## autoload of %s unparsable (%s)\n",
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
892 buffer, filename);
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
893 continue;
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
894 }
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
895 read_c_string (infile, 0);
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
896 skip_white (infile);
164
aba3ff2b9eb4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 162
diff changeset
897
10199
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
898 if (saved_string == 0)
753
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
899 {
10199
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
900 /* If the next three characters aren't `dquote bslash newline'
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
901 then we're not reading a docstring. */
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
902 if ((c = getc (infile)) != '"' ||
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
903 (c = getc (infile)) != '\\' ||
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
904 (c = getc (infile)) != '\n')
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
905 {
753
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
906 #ifdef DEBUG
10199
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
907 fprintf (stderr, "## non-docstring in %s (%s)\n",
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
908 buffer, filename);
753
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
909 #endif
10199
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
910 continue;
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
911 }
753
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
912 }
164
aba3ff2b9eb4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 162
diff changeset
913 }
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
914
753
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
915 #ifdef DEBUG
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
916 else if (! strcmp (buffer, "if") ||
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
917 ! strcmp (buffer, "byte-code"))
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
918 ;
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
919 #endif
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
920
753
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
921 else
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
922 {
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
923 #ifdef DEBUG
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
924 fprintf (stderr, "## unrecognised top-level form, %s (%s)\n",
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
925 buffer, filename);
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
926 #endif
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
927 continue;
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
928 }
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
929
10199
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
930 /* At this point, we should either use the previous
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
931 dynamic doc string in saved_string
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
932 or gobble a doc string from the input file.
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
933
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
934 In the latter case, the opening quote (and leading
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
935 backslash-newline) have already been read. */
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
936
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
937 putc (037, outfile);
753
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
938 putc (type, outfile);
8a4c2c149ec2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 650
diff changeset
939 fprintf (outfile, "%s\n", buffer);
10199
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
940 if (saved_string)
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
941 {
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
942 fputs (saved_string, outfile);
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
943 /* Don't use one dynamic doc string twice. */
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
944 free (saved_string);
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
945 saved_string = 0;
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
946 }
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
947 else
3e2571e22b61 (scan_lisp_file): Handle dynamic doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 9772
diff changeset
948 read_c_string (infile, 1);
24
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
949 }
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
950 fclose (infile);
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
951 return 0;
2354a499c504 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
952 }