Mercurial > emacs
annotate lib-src/b2m.c @ 14512:e7206013c310
Change defconst into defvar. Many doc fixes.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Thu, 08 Feb 1996 04:13:11 +0000 |
parents | 754722efad75 |
children | 13d38dfedb51 |
rev | line source |
---|---|
440 | 1 /* |
2 * b2m - a filter for Babyl -> Unix mail files | |
3 * | |
4 * usage: b2m < babyl > mailbox | |
5 * | |
6 * I find this useful whenever I have to use a | |
7 * system which - shock horror! - doesn't run | |
8 * Gnu emacs. At least now I can read all my | |
9 * Gnumacs Babyl format mail files! | |
10 * | |
11 * it's not much but it's free! | |
12 * | |
13 * Ed Wilkinson | |
14 * E.Wilkinson@massey.ac.nz | |
15 * Mon Nov 7 15:54:06 PDT 1988 | |
16 */ | |
17 | |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
18 /* Made conformant to the GNU coding standards January, 1995 |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
19 by Francesco Potorti` <pot@cnuce.cnr.it>. */ |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
20 |
440 | 21 #include <stdio.h> |
22 #include <time.h> | |
4008
b43e59cb1d54
* b2m.c: #include <sys/types.h>.
Jim Blandy <jimb@redhat.com>
parents:
2101
diff
changeset
|
23 #include <sys/types.h> |
5448
18de002e47dd
(main) [MSDOS]: Open all files as binary.
Richard M. Stallman <rms@gnu.org>
parents:
4696
diff
changeset
|
24 #ifdef MSDOS |
18de002e47dd
(main) [MSDOS]: Open all files as binary.
Richard M. Stallman <rms@gnu.org>
parents:
4696
diff
changeset
|
25 #include <fcntl.h> |
18de002e47dd
(main) [MSDOS]: Open all files as binary.
Richard M. Stallman <rms@gnu.org>
parents:
4696
diff
changeset
|
26 #endif |
998 | 27 |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
28 #ifdef HAVE_CONFIG_H |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
29 #include <config.h> |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
30 /* On some systems, Emacs defines static as nothing for the sake |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
31 of unexec. We don't want that here since we don't use unexec. */ |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
32 #undef static |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
33 #endif |
440 | 34 |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
35 #undef TRUE |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
36 #define TRUE 1 |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
37 #undef FALSE |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
38 #define FALSE 0 |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
39 |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
40 /* Exit codes for success and failure. */ |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
41 #ifdef VMS |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
42 #define GOOD 1 |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
43 #define BAD 0 |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
44 #else |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
45 #define GOOD 0 |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
46 #define BAD 1 |
4572
beb5acbcd482
(TRUE, FALSE): Don't define if already defined.
Richard M. Stallman <rms@gnu.org>
parents:
4008
diff
changeset
|
47 #endif |
440 | 48 |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
49 #define streq(s,t) (strcmp (s, t) == 0) |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
50 #define strneq(s,t,n) (strncmp (s, t, n) == 0) |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
51 |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
52 typedef int logical; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
53 |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
54 /* |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
55 * A `struct linebuffer' is a structure which holds a line of text. |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
56 * `readline' reads a line from a stream into a linebuffer and works |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
57 * regardless of the length of the line. |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
58 */ |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
59 struct linebuffer |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
60 { |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
61 long size; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
62 char *buffer; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
63 }; |
8957
4dffbc5d5dc7
(from, labels, data): Use MAX_DATA_LEN as length.
Richard M. Stallman <rms@gnu.org>
parents:
7528
diff
changeset
|
64 |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
65 extern char *strtok(); |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
66 |
11674
754722efad75
(xmalloc, xrealloc): Declare them long *.
Richard M. Stallman <rms@gnu.org>
parents:
11423
diff
changeset
|
67 long *xmalloc (), *xrealloc (); |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
68 char *concat (); |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
69 long readline (); |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
70 void fatal (); |
440 | 71 |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
72 /* |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
73 * xnew -- allocate storage. SYNOPSIS: Type *xnew (int n, Type); |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
74 */ |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
75 #define xnew(n, Type) ((Type *) xmalloc ((n) * sizeof (Type))) |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
76 |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
77 |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
78 |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
79 char *progname; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
80 |
2101
df8249aa4901
* b2m.c (main): Don't exit upon reading a blank line.
Jim Blandy <jimb@redhat.com>
parents:
998
diff
changeset
|
81 main (argc, argv) |
df8249aa4901
* b2m.c (main): Don't exit upon reading a blank line.
Jim Blandy <jimb@redhat.com>
parents:
998
diff
changeset
|
82 int argc; |
df8249aa4901
* b2m.c (main): Don't exit upon reading a blank line.
Jim Blandy <jimb@redhat.com>
parents:
998
diff
changeset
|
83 char **argv; |
440 | 84 { |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
85 logical labels_saved, printing, header; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
86 time_t ltoday; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
87 char *labels, *p, *today; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
88 struct linebuffer data; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
89 |
5448
18de002e47dd
(main) [MSDOS]: Open all files as binary.
Richard M. Stallman <rms@gnu.org>
parents:
4696
diff
changeset
|
90 #ifdef MSDOS |
6215
226d490216f7
Clean up indentation and whitespace.
Richard M. Stallman <rms@gnu.org>
parents:
6214
diff
changeset
|
91 _fmode = O_BINARY; /* all of files are treated as binary files */ |
5448
18de002e47dd
(main) [MSDOS]: Open all files as binary.
Richard M. Stallman <rms@gnu.org>
parents:
4696
diff
changeset
|
92 (stdout)->_flag &= ~_IOTEXT; |
18de002e47dd
(main) [MSDOS]: Open all files as binary.
Richard M. Stallman <rms@gnu.org>
parents:
4696
diff
changeset
|
93 (stdin)->_flag &= ~_IOTEXT; |
18de002e47dd
(main) [MSDOS]: Open all files as binary.
Richard M. Stallman <rms@gnu.org>
parents:
4696
diff
changeset
|
94 #endif |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
95 if (argc != 1) |
6173
cbf3383981cb
(main): Change delimiter from "^L" to "^_^L".
Karl Heuer <kwzh@gnu.org>
parents:
5448
diff
changeset
|
96 { |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
97 fprintf (stderr, "Usage: %s <babylmailbox >unixmailbox\n", progname); |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
98 exit (GOOD); |
6173
cbf3383981cb
(main): Change delimiter from "^L" to "^_^L".
Karl Heuer <kwzh@gnu.org>
parents:
5448
diff
changeset
|
99 } |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
100 labels_saved = printing = header = FALSE; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
101 progname = argv[0]; |
6215
226d490216f7
Clean up indentation and whitespace.
Richard M. Stallman <rms@gnu.org>
parents:
6214
diff
changeset
|
102 ltoday = time (0); |
226d490216f7
Clean up indentation and whitespace.
Richard M. Stallman <rms@gnu.org>
parents:
6214
diff
changeset
|
103 today = ctime (<oday); |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
104 data.size = 200; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
105 data.buffer = xnew (200, char); |
440 | 106 |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
107 if (readline (&data, stdin) == 0 |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
108 || !strneq (data.buffer, "BABYL OPTIONS:", 14)) |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
109 fatal ("standard input is not a Babyl mailfile."); |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
110 |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
111 while (readline (&data, stdin) > 0) |
6215
226d490216f7
Clean up indentation and whitespace.
Richard M. Stallman <rms@gnu.org>
parents:
6214
diff
changeset
|
112 { |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
113 if (streq (data.buffer, "*** EOOH ***") && !printing) |
6215
226d490216f7
Clean up indentation and whitespace.
Richard M. Stallman <rms@gnu.org>
parents:
6214
diff
changeset
|
114 { |
226d490216f7
Clean up indentation and whitespace.
Richard M. Stallman <rms@gnu.org>
parents:
6214
diff
changeset
|
115 printing = header = TRUE; |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
116 printf ("From Babyl to mail by %s %s", progname, today); |
6215
226d490216f7
Clean up indentation and whitespace.
Richard M. Stallman <rms@gnu.org>
parents:
6214
diff
changeset
|
117 continue; |
226d490216f7
Clean up indentation and whitespace.
Richard M. Stallman <rms@gnu.org>
parents:
6214
diff
changeset
|
118 } |
6173
cbf3383981cb
(main): Change delimiter from "^L" to "^_^L".
Karl Heuer <kwzh@gnu.org>
parents:
5448
diff
changeset
|
119 |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
120 if (data.buffer[0] == '\037') |
6215
226d490216f7
Clean up indentation and whitespace.
Richard M. Stallman <rms@gnu.org>
parents:
6214
diff
changeset
|
121 { |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
122 if (data.buffer[1] == '\0') |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
123 continue; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
124 else if (data.buffer[1] == '\f') |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
125 { |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
126 /* Save labels. */ |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
127 readline (&data, stdin); |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
128 p = strtok (data.buffer, " ,\r\n\t"); |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
129 labels = "X-Babyl-Labels: "; |
440 | 130 |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
131 while (p = strtok (NULL, " ,\r\n\t")) |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
132 labels = concat (labels, p, ", "); |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
133 |
11423
a096f82d87d9
(main): Check for trailing ", " before trying to delete it.
Karl Heuer <kwzh@gnu.org>
parents:
10370
diff
changeset
|
134 p = &labels[strlen (labels) - 2]; |
a096f82d87d9
(main): Check for trailing ", " before trying to delete it.
Karl Heuer <kwzh@gnu.org>
parents:
10370
diff
changeset
|
135 if (*p == ',') |
a096f82d87d9
(main): Check for trailing ", " before trying to delete it.
Karl Heuer <kwzh@gnu.org>
parents:
10370
diff
changeset
|
136 *p = '\0'; |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
137 printing = header = FALSE; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
138 labels_saved = TRUE; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
139 continue; |
6215
226d490216f7
Clean up indentation and whitespace.
Richard M. Stallman <rms@gnu.org>
parents:
6214
diff
changeset
|
140 } |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
141 } |
440 | 142 |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
143 if ((data.buffer[0] == '\0') && header) |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
144 { |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
145 header = FALSE; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
146 if (labels_saved) |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
147 puts (labels); |
6215
226d490216f7
Clean up indentation and whitespace.
Richard M. Stallman <rms@gnu.org>
parents:
6214
diff
changeset
|
148 } |
440 | 149 |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
150 if (printing) |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
151 puts (data.buffer); |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
152 } |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
153 } |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
154 |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
155 |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
156 |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
157 /* |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
158 * Return a newly-allocated string whose contents |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
159 * concatenate those of s1, s2, s3. |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
160 */ |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
161 char * |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
162 concat (s1, s2, s3) |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
163 char *s1, *s2, *s3; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
164 { |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
165 int len1 = strlen (s1), len2 = strlen (s2), len3 = strlen (s3); |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
166 char *result = xnew (len1 + len2 + len3 + 1, char); |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
167 |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
168 strcpy (result, s1); |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
169 strcpy (result + len1, s2); |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
170 strcpy (result + len1 + len2, s3); |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
171 result[len1 + len2 + len3] = '\0'; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
172 |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
173 return result; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
174 } |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
175 |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
176 /* |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
177 * Read a line of text from `stream' into `linebuffer'. |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
178 * Return the number of characters read from `stream', |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
179 * which is the length of the line including the newline, if any. |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
180 */ |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
181 long |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
182 readline (linebuffer, stream) |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
183 struct linebuffer *linebuffer; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
184 register FILE *stream; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
185 { |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
186 char *buffer = linebuffer->buffer; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
187 register char *p = linebuffer->buffer; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
188 register char *pend; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
189 int chars_deleted; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
190 |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
191 pend = p + linebuffer->size; /* Separate to avoid 386/IX compiler bug. */ |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
192 |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
193 while (1) |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
194 { |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
195 register int c = getc (stream); |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
196 if (p == pend) |
6215
226d490216f7
Clean up indentation and whitespace.
Richard M. Stallman <rms@gnu.org>
parents:
6214
diff
changeset
|
197 { |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
198 linebuffer->size *= 2; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
199 buffer = (char *) xrealloc (buffer, linebuffer->size); |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
200 p += buffer - linebuffer->buffer; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
201 pend = buffer + linebuffer->size; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
202 linebuffer->buffer = buffer; |
6215
226d490216f7
Clean up indentation and whitespace.
Richard M. Stallman <rms@gnu.org>
parents:
6214
diff
changeset
|
203 } |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
204 if (c == EOF) |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
205 { |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
206 chars_deleted = 0; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
207 break; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
208 } |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
209 if (c == '\n') |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
210 { |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
211 if (p[-1] == '\r' && p > buffer) |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
212 { |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
213 *--p = '\0'; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
214 chars_deleted = 2; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
215 } |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
216 else |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
217 { |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
218 *p = '\0'; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
219 chars_deleted = 1; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
220 } |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
221 break; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
222 } |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
223 *p++ = c; |
440 | 224 } |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
225 |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
226 return (p - buffer + chars_deleted); |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
227 } |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
228 |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
229 /* |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
230 * Like malloc but get fatal error if memory is exhausted. |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
231 */ |
11674
754722efad75
(xmalloc, xrealloc): Declare them long *.
Richard M. Stallman <rms@gnu.org>
parents:
11423
diff
changeset
|
232 long * |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
233 xmalloc (size) |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
234 unsigned int size; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
235 { |
11674
754722efad75
(xmalloc, xrealloc): Declare them long *.
Richard M. Stallman <rms@gnu.org>
parents:
11423
diff
changeset
|
236 long *result = (long *) malloc (size); |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
237 if (result == NULL) |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
238 fatal ("virtual memory exhausted"); |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
239 return result; |
440 | 240 } |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
241 |
11674
754722efad75
(xmalloc, xrealloc): Declare them long *.
Richard M. Stallman <rms@gnu.org>
parents:
11423
diff
changeset
|
242 long * |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
243 xrealloc (ptr, size) |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
244 char *ptr; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
245 unsigned int size; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
246 { |
11674
754722efad75
(xmalloc, xrealloc): Declare them long *.
Richard M. Stallman <rms@gnu.org>
parents:
11423
diff
changeset
|
247 long *result = (long *) realloc (ptr, size); |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
248 if (result == NULL) |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
249 fatal ("virtual memory exhausted"); |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
250 return result; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
251 } |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
252 |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
253 void |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
254 fatal (message) |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
255 { |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
256 fprintf (stderr, "%s: %s\n", progname, message); |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
257 exit (BAD); |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
258 } |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
259 |