Mercurial > emacs
annotate lib-src/b2m.c @ 69757:fc5d7c91100d
*** empty log message ***
author | Eli Zaretskii <eliz@gnu.org> |
---|---|
date | Sat, 01 Apr 2006 14:32:13 +0000 |
parents | e112ec9aa49b |
children | 1e68e7f3b824 e6bf73e43cf4 |
rev | line source |
---|---|
440 | 1 /* |
2 * b2m - a filter for Babyl -> Unix mail files | |
42260 | 3 * The copyright on this file has been disclaimed. |
440 | 4 * |
5 * usage: b2m < babyl > mailbox | |
6 * | |
7 * I find this useful whenever I have to use a | |
8 * system which - shock horror! - doesn't run | |
40067
5c3937ee7017
Properly spell the name of Emacs.
Pavel Janík <Pavel@Janik.cz>
parents:
37163
diff
changeset
|
9 * GNU Emacs. At least now I can read all my |
5c3937ee7017
Properly spell the name of Emacs.
Pavel Janík <Pavel@Janik.cz>
parents:
37163
diff
changeset
|
10 * GNU Emacs Babyl format mail files! |
440 | 11 * |
12 * it's not much but it's free! | |
13 * | |
14 * Ed Wilkinson | |
15 * E.Wilkinson@massey.ac.nz | |
16 * Mon Nov 7 15:54:06 PDT 1988 | |
17 */ | |
18 | |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
19 /* 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
|
20 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
|
21 |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
22 #ifdef HAVE_CONFIG_H |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
23 #include <config.h> |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
24 /* 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
|
25 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
|
26 #undef static |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
27 #endif |
440 | 28 |
69697
e112ec9aa49b
* b2m.c: Include <limits.h>.
Paul Eggert <eggert@twinsun.com>
parents:
55408
diff
changeset
|
29 #include <limits.h> |
26083
134b57acef68
Add support for large files. Merge glibc 2.1.2.
Paul Eggert <eggert@twinsun.com>
parents:
21386
diff
changeset
|
30 #include <stdio.h> |
134b57acef68
Add support for large files. Merge glibc 2.1.2.
Paul Eggert <eggert@twinsun.com>
parents:
21386
diff
changeset
|
31 #include <time.h> |
134b57acef68
Add support for large files. Merge glibc 2.1.2.
Paul Eggert <eggert@twinsun.com>
parents:
21386
diff
changeset
|
32 #include <sys/types.h> |
134b57acef68
Add support for large files. Merge glibc 2.1.2.
Paul Eggert <eggert@twinsun.com>
parents:
21386
diff
changeset
|
33 #include <getopt.h> |
134b57acef68
Add support for large files. Merge glibc 2.1.2.
Paul Eggert <eggert@twinsun.com>
parents:
21386
diff
changeset
|
34 #ifdef MSDOS |
134b57acef68
Add support for large files. Merge glibc 2.1.2.
Paul Eggert <eggert@twinsun.com>
parents:
21386
diff
changeset
|
35 #include <fcntl.h> |
21386
49b24e54a5fa
Include <stdlib.h> if available.
Andreas Schwab <schwab@suse.de>
parents:
21354
diff
changeset
|
36 #endif |
49b24e54a5fa
Include <stdlib.h> if available.
Andreas Schwab <schwab@suse.de>
parents:
21354
diff
changeset
|
37 |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
38 #undef TRUE |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
39 #define TRUE 1 |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
40 #undef FALSE |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
41 #define FALSE 0 |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
42 |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
43 #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
|
44 #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
|
45 |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
46 typedef int logical; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
47 |
69697
e112ec9aa49b
* b2m.c: Include <limits.h>.
Paul Eggert <eggert@twinsun.com>
parents:
55408
diff
changeset
|
48 /* True if TM_YEAR is a struct tm's tm_year value that is acceptable |
e112ec9aa49b
* b2m.c: Include <limits.h>.
Paul Eggert <eggert@twinsun.com>
parents:
55408
diff
changeset
|
49 to asctime. Glibc asctime returns a useful string unless TM_YEAR |
e112ec9aa49b
* b2m.c: Include <limits.h>.
Paul Eggert <eggert@twinsun.com>
parents:
55408
diff
changeset
|
50 is nearly INT_MAX, but the C Standard lets C libraries overrun a |
e112ec9aa49b
* b2m.c: Include <limits.h>.
Paul Eggert <eggert@twinsun.com>
parents:
55408
diff
changeset
|
51 buffer if TM_YEAR needs more than 4 bytes. */ |
e112ec9aa49b
* b2m.c: Include <limits.h>.
Paul Eggert <eggert@twinsun.com>
parents:
55408
diff
changeset
|
52 #ifdef __GLIBC__ |
e112ec9aa49b
* b2m.c: Include <limits.h>.
Paul Eggert <eggert@twinsun.com>
parents:
55408
diff
changeset
|
53 # define TM_YEAR_IN_ASCTIME_RANGE(tm_year) ((tm_year) <= INT_MAX - 1900) |
e112ec9aa49b
* b2m.c: Include <limits.h>.
Paul Eggert <eggert@twinsun.com>
parents:
55408
diff
changeset
|
54 #else |
e112ec9aa49b
* b2m.c: Include <limits.h>.
Paul Eggert <eggert@twinsun.com>
parents:
55408
diff
changeset
|
55 # define TM_YEAR_IN_ASCTIME_RANGE(tm_year) \ |
e112ec9aa49b
* b2m.c: Include <limits.h>.
Paul Eggert <eggert@twinsun.com>
parents:
55408
diff
changeset
|
56 (-999 - 1900 <= (tm_year) && (tm_year) <= 9999 - 1900) |
e112ec9aa49b
* b2m.c: Include <limits.h>.
Paul Eggert <eggert@twinsun.com>
parents:
55408
diff
changeset
|
57 #endif |
e112ec9aa49b
* b2m.c: Include <limits.h>.
Paul Eggert <eggert@twinsun.com>
parents:
55408
diff
changeset
|
58 |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
59 /* |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
60 * 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
|
61 * `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
|
62 * 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
|
63 */ |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
64 struct linebuffer |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
65 { |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
66 long size; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
67 char *buffer; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
68 }; |
8957
4dffbc5d5dc7
(from, labels, data): Use MAX_DATA_LEN as length.
Richard M. Stallman <rms@gnu.org>
parents:
7528
diff
changeset
|
69 |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
70 extern char *strtok(); |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
71 |
11674
754722efad75
(xmalloc, xrealloc): Declare them long *.
Richard M. Stallman <rms@gnu.org>
parents:
11423
diff
changeset
|
72 long *xmalloc (), *xrealloc (); |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
73 char *concat (); |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
74 long readline (); |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
75 void fatal (); |
440 | 76 |
10370
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 * 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
|
79 */ |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
80 #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
|
81 |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
82 |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
83 |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
84 char *progname; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
85 |
20328 | 86 struct option longopts[] = |
87 { | |
88 { "help", no_argument, NULL, 'h' }, | |
89 { "version", no_argument, NULL, 'V' }, | |
90 { 0 } | |
91 }; | |
92 | |
93 extern int optind; | |
94 | |
21386
49b24e54a5fa
Include <stdlib.h> if available.
Andreas Schwab <schwab@suse.de>
parents:
21354
diff
changeset
|
95 int |
2101
df8249aa4901
* b2m.c (main): Don't exit upon reading a blank line.
Jim Blandy <jimb@redhat.com>
parents:
998
diff
changeset
|
96 main (argc, argv) |
df8249aa4901
* b2m.c (main): Don't exit upon reading a blank line.
Jim Blandy <jimb@redhat.com>
parents:
998
diff
changeset
|
97 int argc; |
df8249aa4901
* b2m.c (main): Don't exit upon reading a blank line.
Jim Blandy <jimb@redhat.com>
parents:
998
diff
changeset
|
98 char **argv; |
440 | 99 { |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
100 logical labels_saved, printing, header; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
101 time_t ltoday; |
69697
e112ec9aa49b
* b2m.c: Include <limits.h>.
Paul Eggert <eggert@twinsun.com>
parents:
55408
diff
changeset
|
102 struct tm *tm; |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
103 char *labels, *p, *today; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
104 struct linebuffer data; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
105 |
5448
18de002e47dd
(main) [MSDOS]: Open all files as binary.
Richard M. Stallman <rms@gnu.org>
parents:
4696
diff
changeset
|
106 #ifdef MSDOS |
6215
226d490216f7
Clean up indentation and whitespace.
Richard M. Stallman <rms@gnu.org>
parents:
6214
diff
changeset
|
107 _fmode = O_BINARY; /* all of files are treated as binary files */ |
14968
1351c75bc3d6
(main) [MSDOS]: Handle DJGPP version 2.
Richard M. Stallman <rms@gnu.org>
parents:
14850
diff
changeset
|
108 #if __DJGPP__ > 1 |
1351c75bc3d6
(main) [MSDOS]: Handle DJGPP version 2.
Richard M. Stallman <rms@gnu.org>
parents:
14850
diff
changeset
|
109 if (!isatty (fileno (stdout))) |
1351c75bc3d6
(main) [MSDOS]: Handle DJGPP version 2.
Richard M. Stallman <rms@gnu.org>
parents:
14850
diff
changeset
|
110 setmode (fileno (stdout), O_BINARY); |
1351c75bc3d6
(main) [MSDOS]: Handle DJGPP version 2.
Richard M. Stallman <rms@gnu.org>
parents:
14850
diff
changeset
|
111 if (!isatty (fileno (stdin))) |
1351c75bc3d6
(main) [MSDOS]: Handle DJGPP version 2.
Richard M. Stallman <rms@gnu.org>
parents:
14850
diff
changeset
|
112 setmode (fileno (stdin), O_BINARY); |
1351c75bc3d6
(main) [MSDOS]: Handle DJGPP version 2.
Richard M. Stallman <rms@gnu.org>
parents:
14850
diff
changeset
|
113 #else /* not __DJGPP__ > 1 */ |
5448
18de002e47dd
(main) [MSDOS]: Open all files as binary.
Richard M. Stallman <rms@gnu.org>
parents:
4696
diff
changeset
|
114 (stdout)->_flag &= ~_IOTEXT; |
18de002e47dd
(main) [MSDOS]: Open all files as binary.
Richard M. Stallman <rms@gnu.org>
parents:
4696
diff
changeset
|
115 (stdin)->_flag &= ~_IOTEXT; |
14968
1351c75bc3d6
(main) [MSDOS]: Handle DJGPP version 2.
Richard M. Stallman <rms@gnu.org>
parents:
14850
diff
changeset
|
116 #endif /* not __DJGPP__ > 1 */ |
5448
18de002e47dd
(main) [MSDOS]: Open all files as binary.
Richard M. Stallman <rms@gnu.org>
parents:
4696
diff
changeset
|
117 #endif |
14850
13d38dfedb51
(main): Initialize progname variable before using it.
Richard M. Stallman <rms@gnu.org>
parents:
11674
diff
changeset
|
118 progname = argv[0]; |
13d38dfedb51
(main): Initialize progname variable before using it.
Richard M. Stallman <rms@gnu.org>
parents:
11674
diff
changeset
|
119 |
20328 | 120 while (1) |
121 { | |
122 int opt = getopt_long (argc, argv, "hV", longopts, 0); | |
123 if (opt == EOF) | |
124 break; | |
125 | |
126 switch (opt) | |
127 { | |
128 case 'V': | |
129 printf ("%s (GNU Emacs %s)\n", "b2m", VERSION); | |
130 puts ("b2m is in the public domain."); | |
55408
1c425ce93ce9
(GOOD, BAD): Delete macros. Throughout,
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
52401
diff
changeset
|
131 exit (EXIT_SUCCESS); |
20328 | 132 |
133 case 'h': | |
134 fprintf (stderr, "Usage: %s <babylmailbox >unixmailbox\n", progname); | |
55408
1c425ce93ce9
(GOOD, BAD): Delete macros. Throughout,
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
52401
diff
changeset
|
135 exit (EXIT_SUCCESS); |
20328 | 136 } |
137 } | |
138 | |
139 if (optind != argc) | |
6173
cbf3383981cb
(main): Change delimiter from "^L" to "^_^L".
Karl Heuer <kwzh@gnu.org>
parents:
5448
diff
changeset
|
140 { |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
141 fprintf (stderr, "Usage: %s <babylmailbox >unixmailbox\n", progname); |
55408
1c425ce93ce9
(GOOD, BAD): Delete macros. Throughout,
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
52401
diff
changeset
|
142 exit (EXIT_SUCCESS); |
6173
cbf3383981cb
(main): Change delimiter from "^L" to "^_^L".
Karl Heuer <kwzh@gnu.org>
parents:
5448
diff
changeset
|
143 } |
20328 | 144 |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
145 labels_saved = printing = header = FALSE; |
6215
226d490216f7
Clean up indentation and whitespace.
Richard M. Stallman <rms@gnu.org>
parents:
6214
diff
changeset
|
146 ltoday = time (0); |
69697
e112ec9aa49b
* b2m.c: Include <limits.h>.
Paul Eggert <eggert@twinsun.com>
parents:
55408
diff
changeset
|
147 /* Convert to a string, checking for out-of-range time stamps. |
e112ec9aa49b
* b2m.c: Include <limits.h>.
Paul Eggert <eggert@twinsun.com>
parents:
55408
diff
changeset
|
148 Don't use 'ctime', as that might dump core if the hardware clock |
e112ec9aa49b
* b2m.c: Include <limits.h>.
Paul Eggert <eggert@twinsun.com>
parents:
55408
diff
changeset
|
149 is set to a bizarre value. */ |
e112ec9aa49b
* b2m.c: Include <limits.h>.
Paul Eggert <eggert@twinsun.com>
parents:
55408
diff
changeset
|
150 tm = localtime (<oday); |
e112ec9aa49b
* b2m.c: Include <limits.h>.
Paul Eggert <eggert@twinsun.com>
parents:
55408
diff
changeset
|
151 if (! (tm && TM_YEAR_IN_ASCTIME_RANGE (tm->tm_year))) |
e112ec9aa49b
* b2m.c: Include <limits.h>.
Paul Eggert <eggert@twinsun.com>
parents:
55408
diff
changeset
|
152 fatal ("current time is out of range"); |
e112ec9aa49b
* b2m.c: Include <limits.h>.
Paul Eggert <eggert@twinsun.com>
parents:
55408
diff
changeset
|
153 today = asctime (tm); |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
154 data.size = 200; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
155 data.buffer = xnew (200, char); |
440 | 156 |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
157 if (readline (&data, stdin) == 0 |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
158 || !strneq (data.buffer, "BABYL OPTIONS:", 14)) |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
159 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
|
160 |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
161 while (readline (&data, stdin) > 0) |
6215
226d490216f7
Clean up indentation and whitespace.
Richard M. Stallman <rms@gnu.org>
parents:
6214
diff
changeset
|
162 { |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
163 if (streq (data.buffer, "*** EOOH ***") && !printing) |
6215
226d490216f7
Clean up indentation and whitespace.
Richard M. Stallman <rms@gnu.org>
parents:
6214
diff
changeset
|
164 { |
226d490216f7
Clean up indentation and whitespace.
Richard M. Stallman <rms@gnu.org>
parents:
6214
diff
changeset
|
165 printing = header = TRUE; |
14850
13d38dfedb51
(main): Initialize progname variable before using it.
Richard M. Stallman <rms@gnu.org>
parents:
11674
diff
changeset
|
166 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
|
167 continue; |
226d490216f7
Clean up indentation and whitespace.
Richard M. Stallman <rms@gnu.org>
parents:
6214
diff
changeset
|
168 } |
6173
cbf3383981cb
(main): Change delimiter from "^L" to "^_^L".
Karl Heuer <kwzh@gnu.org>
parents:
5448
diff
changeset
|
169 |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
170 if (data.buffer[0] == '\037') |
6215
226d490216f7
Clean up indentation and whitespace.
Richard M. Stallman <rms@gnu.org>
parents:
6214
diff
changeset
|
171 { |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
172 if (data.buffer[1] == '\0') |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
173 continue; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
174 else if (data.buffer[1] == '\f') |
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 /* Save labels. */ |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
177 readline (&data, stdin); |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
178 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
|
179 labels = "X-Babyl-Labels: "; |
440 | 180 |
42471
4234f54994ef
(main): Parenthesize assignment when used as truth value to prevent gcc
Pavel Janík <Pavel@Janik.cz>
parents:
42260
diff
changeset
|
181 while ((p = strtok (NULL, " ,\r\n\t"))) |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
182 labels = concat (labels, p, ", "); |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
183 |
11423
a096f82d87d9
(main): Check for trailing ", " before trying to delete it.
Karl Heuer <kwzh@gnu.org>
parents:
10370
diff
changeset
|
184 p = &labels[strlen (labels) - 2]; |
a096f82d87d9
(main): Check for trailing ", " before trying to delete it.
Karl Heuer <kwzh@gnu.org>
parents:
10370
diff
changeset
|
185 if (*p == ',') |
a096f82d87d9
(main): Check for trailing ", " before trying to delete it.
Karl Heuer <kwzh@gnu.org>
parents:
10370
diff
changeset
|
186 *p = '\0'; |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
187 printing = header = FALSE; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
188 labels_saved = TRUE; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
189 continue; |
6215
226d490216f7
Clean up indentation and whitespace.
Richard M. Stallman <rms@gnu.org>
parents:
6214
diff
changeset
|
190 } |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
191 } |
440 | 192 |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
193 if ((data.buffer[0] == '\0') && header) |
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 header = FALSE; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
196 if (labels_saved) |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
197 puts (labels); |
6215
226d490216f7
Clean up indentation and whitespace.
Richard M. Stallman <rms@gnu.org>
parents:
6214
diff
changeset
|
198 } |
440 | 199 |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
200 if (printing) |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
201 puts (data.buffer); |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
202 } |
37163
e563147d81e5
(main): Always return a value.
Gerd Moellmann <gerd@gnu.org>
parents:
26083
diff
changeset
|
203 |
55408
1c425ce93ce9
(GOOD, BAD): Delete macros. Throughout,
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
52401
diff
changeset
|
204 return EXIT_SUCCESS; |
10370
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 |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
207 |
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 /* |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
210 * 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
|
211 * concatenate those of s1, s2, s3. |
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 char * |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
214 concat (s1, s2, s3) |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
215 char *s1, *s2, *s3; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
216 { |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
217 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
|
218 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
|
219 |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
220 strcpy (result, s1); |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
221 strcpy (result + len1, s2); |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
222 strcpy (result + len1 + len2, s3); |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
223 result[len1 + len2 + len3] = '\0'; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
224 |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
225 return result; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
226 } |
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 * 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
|
230 * 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
|
231 * 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
|
232 */ |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
233 long |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
234 readline (linebuffer, stream) |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
235 struct linebuffer *linebuffer; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
236 register FILE *stream; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
237 { |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
238 char *buffer = linebuffer->buffer; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
239 register char *p = linebuffer->buffer; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
240 register char *pend; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
241 int chars_deleted; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
242 |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
243 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
|
244 |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
245 while (1) |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
246 { |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
247 register int c = getc (stream); |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
248 if (p == pend) |
6215
226d490216f7
Clean up indentation and whitespace.
Richard M. Stallman <rms@gnu.org>
parents:
6214
diff
changeset
|
249 { |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
250 linebuffer->size *= 2; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
251 buffer = (char *) xrealloc (buffer, linebuffer->size); |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
252 p += buffer - linebuffer->buffer; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
253 pend = buffer + linebuffer->size; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
254 linebuffer->buffer = buffer; |
6215
226d490216f7
Clean up indentation and whitespace.
Richard M. Stallman <rms@gnu.org>
parents:
6214
diff
changeset
|
255 } |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
256 if (c == EOF) |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
257 { |
18238
1f3d8941aba2
(readline): Terminate buffer properly when EOF seen.
Karl Heuer <kwzh@gnu.org>
parents:
14968
diff
changeset
|
258 *p = '\0'; |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
259 chars_deleted = 0; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
260 break; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
261 } |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
262 if (c == '\n') |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
263 { |
18238
1f3d8941aba2
(readline): Terminate buffer properly when EOF seen.
Karl Heuer <kwzh@gnu.org>
parents:
14968
diff
changeset
|
264 if (p > buffer && p[-1] == '\r') |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
265 { |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
266 *--p = '\0'; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
267 chars_deleted = 2; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
268 } |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
269 else |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
270 { |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
271 *p = '\0'; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
272 chars_deleted = 1; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
273 } |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
274 break; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
275 } |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
276 *p++ = c; |
440 | 277 } |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
278 |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
279 return (p - buffer + chars_deleted); |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
280 } |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
281 |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
282 /* |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
283 * 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
|
284 */ |
11674
754722efad75
(xmalloc, xrealloc): Declare them long *.
Richard M. Stallman <rms@gnu.org>
parents:
11423
diff
changeset
|
285 long * |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
286 xmalloc (size) |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
287 unsigned int size; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
288 { |
11674
754722efad75
(xmalloc, xrealloc): Declare them long *.
Richard M. Stallman <rms@gnu.org>
parents:
11423
diff
changeset
|
289 long *result = (long *) malloc (size); |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
290 if (result == NULL) |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
291 fatal ("virtual memory exhausted"); |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
292 return result; |
440 | 293 } |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
294 |
11674
754722efad75
(xmalloc, xrealloc): Declare them long *.
Richard M. Stallman <rms@gnu.org>
parents:
11423
diff
changeset
|
295 long * |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
296 xrealloc (ptr, size) |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
297 char *ptr; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
298 unsigned int size; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
299 { |
11674
754722efad75
(xmalloc, xrealloc): Declare them long *.
Richard M. Stallman <rms@gnu.org>
parents:
11423
diff
changeset
|
300 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
|
301 if (result == NULL) |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
302 fatal ("virtual memory exhausted"); |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
303 return result; |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
304 } |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
305 |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
306 void |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
307 fatal (message) |
21354
f998f239f77b
(fatal): Declare the arg.
Richard M. Stallman <rms@gnu.org>
parents:
20328
diff
changeset
|
308 char *message; |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
309 { |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
310 fprintf (stderr, "%s: %s\n", progname, message); |
55408
1c425ce93ce9
(GOOD, BAD): Delete macros. Throughout,
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
52401
diff
changeset
|
311 exit (EXIT_FAILURE); |
10370
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
312 } |
4b1c8dc724e6
(concat, xmalloc, xrealloc, readline, xnew): Four new
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
313 |
52401 | 314 /* arch-tag: 5a3ad2af-a802-408f-83cc-e7cf5e98653e |
315 (do not change this comment) */ | |
55408
1c425ce93ce9
(GOOD, BAD): Delete macros. Throughout,
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
52401
diff
changeset
|
316 |
1c425ce93ce9
(GOOD, BAD): Delete macros. Throughout,
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
52401
diff
changeset
|
317 /* b2m.c ends here */ |