annotate lib-src/sorted-doc.c @ 34414:158463f1a26e

(gnus-summary-recenter): When trying to keep the bottom line visible, check to see if it's partially obscured, and if so, either scroll one more line to make it fully visible, or revert to showing the second line from the top.
author Miles Bader <miles@gnu.org>
date Mon, 11 Dec 2000 05:01:52 +0000
parents 7b52b49d1148
children c8fb06423da0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
29
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1 /* Give this program DOCSTR.mm.nn as standard input
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2 and it outputs to standard output
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3 a file of texinfo input containing the doc strings.
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5 This version sorts the output by function name.
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6 */
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
7
31884
7b52b49d1148 Include config.h.
Dave Love <fx@gnu.org>
parents: 24533
diff changeset
8 #include "config.h"
29
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
9 #include <stdio.h>
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
10 #include <ctype.h>
31884
7b52b49d1148 Include config.h.
Dave Love <fx@gnu.org>
parents: 24533
diff changeset
11 #ifndef HAVE_STDLIB_H /* config.h includes stdlib. */
29
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
12 extern char *malloc ();
31884
7b52b49d1148 Include config.h.
Dave Love <fx@gnu.org>
parents: 24533
diff changeset
13 #endif
29
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
14
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
15 #define NUL '\0'
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
16 #define MARKER '\037'
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
17
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
18 #define DEBUG 0
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
19
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
20 typedef struct line LINE;
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
21
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
22 struct line
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
23 {
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
24 LINE *next; /* ptr to next or NULL */
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
25 char *line; /* text of the line */
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
26 };
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
27
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
28 typedef struct docstr DOCSTR;
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
29
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
30 struct docstr /* Allocated thing for an entry. */
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
31 {
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
32 DOCSTR *next; /* next in the chain */
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
33 char *name; /* name of the function or var */
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
34 LINE *first; /* first line of doc text. */
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
35 char type; /* 'F' for function, 'V' for variable */
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
36 };
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
37
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
38
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
39 /* Print error message. `s1' is printf control string, `s2' is arg for it. */
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
40
9491
dd3b83e4ceb0 Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents: 1175
diff changeset
41 void
29
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
42 error (s1, s2)
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
43 char *s1, *s2;
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
44 {
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
45 fprintf (stderr, "sorted-doc: ");
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
46 fprintf (stderr, s1, s2);
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
47 fprintf (stderr, "\n");
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
48 }
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
49
9491
dd3b83e4ceb0 Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents: 1175
diff changeset
50 /* Print error message and exit. */
dd3b83e4ceb0 Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents: 1175
diff changeset
51
dd3b83e4ceb0 Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents: 1175
diff changeset
52 void
dd3b83e4ceb0 Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents: 1175
diff changeset
53 fatal (s1, s2)
dd3b83e4ceb0 Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents: 1175
diff changeset
54 char *s1, *s2;
dd3b83e4ceb0 Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents: 1175
diff changeset
55 {
dd3b83e4ceb0 Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents: 1175
diff changeset
56 error (s1, s2);
dd3b83e4ceb0 Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents: 1175
diff changeset
57 exit (1);
dd3b83e4ceb0 Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents: 1175
diff changeset
58 }
dd3b83e4ceb0 Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents: 1175
diff changeset
59
29
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
60 /* Like malloc but get fatal error if memory is exhausted. */
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
61
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
62 char *
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
63 xmalloc (size)
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
64 int size;
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
65 {
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
66 char *result = malloc ((unsigned)size);
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
67 if (result == NULL)
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
68 fatal ("%s", "virtual memory exhausted");
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
69 return result;
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
70 }
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
71
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
72 char *
9491
dd3b83e4ceb0 Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents: 1175
diff changeset
73 xstrdup (str)
29
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
74 char * str;
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
75 {
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
76 char *buf = xmalloc (strlen (str) + 1);
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
77 (void) strcpy (buf, str);
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
78 return (buf);
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
79 }
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
80
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
81 /* Comparison function for qsort to call. */
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
82
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
83 int
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
84 cmpdoc (a, b)
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
85 DOCSTR **a;
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
86 DOCSTR **b;
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
87 {
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
88 register int val = strcmp ((*a)->name, (*b)->name);
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
89 if (val) return val;
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
90 return (*a)->type - (*b)->type;
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
91 }
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
92
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
93
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
94 enum state
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
95 {
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
96 WAITING, BEG_NAME, NAME_GET, BEG_DESC, DESC_GET
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
97 };
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
98
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
99 char *states[] =
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
100 {
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
101 "WAITING", "BEG_NAME", "NAME_GET", "BEG_DESC", "DESC_GET"
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
102 };
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
103
9491
dd3b83e4ceb0 Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents: 1175
diff changeset
104 int
29
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
105 main ()
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
106 {
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
107 register DOCSTR *dp = NULL; /* allocated DOCSTR */
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
108 register LINE *lp = NULL; /* allocated line */
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
109 register char *bp; /* ptr inside line buffer */
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
110 register enum state state = WAITING; /* state at start */
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
111 int cnt = 0; /* number of DOCSTRs read */
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
112
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
113 DOCSTR *docs; /* chain of allocated DOCSTRS */
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
114 char buf[512]; /* line buffer */
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
115
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
116 while (1) /* process one char at a time */
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
117 {
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
118 /* this char from the DOCSTR file */
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
119 register int ch = getchar ();
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
120
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
121 /* Beginnings */
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
122
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
123 if (state == WAITING)
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
124 {
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
125 if (ch == MARKER)
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
126 state = BEG_NAME;
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
127 }
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
128 else if (state == BEG_NAME)
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
129 {
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
130 cnt++;
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
131 if (dp == NULL) /* first dp allocated */
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
132 {
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
133 docs = dp = (DOCSTR*) xmalloc (sizeof (DOCSTR));
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
134 }
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
135 else /* all the rest */
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
136 {
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
137 dp->next = (DOCSTR*) xmalloc (sizeof (DOCSTR));
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
138 dp = dp->next;
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
139 }
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
140 lp = NULL;
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
141 dp->next = NULL;
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
142 bp = buf;
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
143 state = NAME_GET;
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
144 /* Record whether function or variable. */
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
145 dp->type = ch;
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
146 ch = getchar ();
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
147 }
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
148 else if (state == BEG_DESC)
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
149 {
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
150 if (lp == NULL) /* first line for dp */
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
151 {
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
152 dp->first = lp = (LINE*)xmalloc (sizeof (LINE));
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
153 }
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
154 else /* continuing lines */
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
155 {
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
156 lp->next = (LINE*)xmalloc (sizeof (LINE));
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
157 lp = lp->next;
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
158 }
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
159 lp->next = NULL;
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
160 bp = buf;
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
161 state = DESC_GET;
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
162 }
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
163
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
164 /* process gets */
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
165
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
166 if (state == NAME_GET || state == DESC_GET)
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
167 {
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
168 if (ch != MARKER && ch != '\n' && ch != EOF)
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
169 {
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
170 *bp++ = ch;
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
171 }
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
172 else /* saving and changing state */
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
173 {
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
174 *bp = NUL;
9491
dd3b83e4ceb0 Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents: 1175
diff changeset
175 bp = xstrdup (buf);
29
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
176
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
177 if (state == NAME_GET)
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
178 dp->name = bp;
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
179 else
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
180 lp->line = bp;
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
181
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
182 bp = buf;
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
183 state = (ch == MARKER) ? BEG_NAME : BEG_DESC;
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
184 }
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
185 } /* NAME_GET || DESC_GET */
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
186 if (ch == EOF)
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
187 break;
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
188 }
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
189
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
190 {
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
191 DOCSTR **array;
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
192 register int i; /* counter */
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
193
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
194 /* build array of ptrs to DOCSTRs */
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
195
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
196 array = (DOCSTR**)xmalloc (cnt * sizeof (*array));
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
197 for (dp = docs, i = 0; dp != NULL ; dp = dp->next)
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
198 array[i++] = dp;
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
199
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
200 /* sort the array by name; within each name, by type */
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
201
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
202 qsort ((char*)array, cnt, sizeof (DOCSTR*), cmpdoc);
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
203
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
204 /* write the output header */
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
205
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
206 printf ("\\input texinfo @c -*-texinfo-*-\n");
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
207 printf ("@setfilename ../info/summary\n");
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
208 printf ("@settitle Command Summary for GNU Emacs\n");
24533
32a7344ac2e7 (main): Split up tables. Modify the preamble
Dave Love <fx@gnu.org>
parents: 15719
diff changeset
209 printf ("@finalout\n");
29
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
210 printf ("@unnumbered Command Summary for GNU Emacs\n");
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
211 printf ("@table @asis\n");
1175
c4535b4417d2 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 29
diff changeset
212 printf ("\n");
24533
32a7344ac2e7 (main): Split up tables. Modify the preamble
Dave Love <fx@gnu.org>
parents: 15719
diff changeset
213 printf ("@iftex\n");
32a7344ac2e7 (main): Split up tables. Modify the preamble
Dave Love <fx@gnu.org>
parents: 15719
diff changeset
214 printf ("@global@let@ITEM@item\n");
1175
c4535b4417d2 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 29
diff changeset
215 printf ("@def@item{@filbreak@vskip5pt@ITEM}\n");
c4535b4417d2 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 29
diff changeset
216 printf ("@font@tensy cmsy10 scaled @magstephalf\n");
c4535b4417d2 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 29
diff changeset
217 printf ("@font@teni cmmi10 scaled @magstephalf\n");
c4535b4417d2 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 29
diff changeset
218 printf ("@def\\{{@tensy@char110}}\n"); /* this backslash goes with cmr10 */
c4535b4417d2 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 29
diff changeset
219 printf ("@def|{{@tensy@char106}}\n");
c4535b4417d2 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 29
diff changeset
220 printf ("@def@{{{@tensy@char102}}\n");
c4535b4417d2 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 29
diff changeset
221 printf ("@def@}{{@tensy@char103}}\n");
c4535b4417d2 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 29
diff changeset
222 printf ("@def<{{@teni@char62}}\n");
c4535b4417d2 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 29
diff changeset
223 printf ("@def>{{@teni@char60}}\n");
c4535b4417d2 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 29
diff changeset
224 printf ("@chardef@@64\n");
c4535b4417d2 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 29
diff changeset
225 printf ("@catcode43=12\n");
c4535b4417d2 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 29
diff changeset
226 printf ("@tableindent-0.2in\n");
24533
32a7344ac2e7 (main): Split up tables. Modify the preamble
Dave Love <fx@gnu.org>
parents: 15719
diff changeset
227 printf ("@end iftex\n");
29
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
228
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
229 /* print each function from the array */
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
230
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
231 for (i = 0; i < cnt; i++)
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
232 {
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
233 printf ("\n@item %s @code{%s}\n@display\n",
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
234 array[i]->type == 'F' ? "Function" : "Variable",
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
235 array[i]->name);
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
236
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
237 for (lp = array[i]->first; lp != NULL ; lp = lp->next)
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
238 {
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
239 for (bp = lp->line; *bp; bp++)
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
240 {
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
241 /* the characters "@{}" need special treatment */
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
242 if (*bp == '@' || *bp == '{' || *bp == '}')
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
243 {
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
244 putchar('@');
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
245 }
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
246 putchar(*bp);
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
247 }
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
248 putchar ('\n');
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
249 }
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
250 printf("@end display\n");
24533
32a7344ac2e7 (main): Split up tables. Modify the preamble
Dave Love <fx@gnu.org>
parents: 15719
diff changeset
251 /* Try to avoid a save size overflow in the TeX output
32a7344ac2e7 (main): Split up tables. Modify the preamble
Dave Love <fx@gnu.org>
parents: 15719
diff changeset
252 routine. */
32a7344ac2e7 (main): Split up tables. Modify the preamble
Dave Love <fx@gnu.org>
parents: 15719
diff changeset
253 if (i%100 == 0 && i > 0 && i != cnt)
32a7344ac2e7 (main): Split up tables. Modify the preamble
Dave Love <fx@gnu.org>
parents: 15719
diff changeset
254 printf("\n@end table\n@table @asis\n");
29
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
255 }
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
256
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
257 printf ("@end table\n");
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
258 printf ("@bye\n");
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
259 }
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
260
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
261 return 0;
aa2024430f3f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
262 }