Mercurial > emacs
annotate lib-src/cvtmail.c @ 31318:29ea4dc8a310
*** empty log message ***
| author | Eli Zaretskii <eliz@gnu.org> |
|---|---|
| date | Fri, 01 Sep 2000 13:50:50 +0000 |
| parents | fdac027af4e1 |
| children | e3eadbc9fda7 |
| rev | line source |
|---|---|
|
6107
8cc2a5d2e728
* cvtmail.c: Declare malloc, realloc, xmalloc, xrealloc.
David J. MacKenzie <djm@gnu.org>
parents:
37
diff
changeset
|
1 /* Copyright (C) 1985, 1994 Free Software Foundation |
|
14186
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
11425
diff
changeset
|
2 |
| 37 | 3 This file is part of GNU Emacs. |
| 4 | |
| 5 GNU Emacs is free software; you can redistribute it and/or modify | |
| 6 it under the terms of the GNU General Public License as published by | |
|
6107
8cc2a5d2e728
* cvtmail.c: Declare malloc, realloc, xmalloc, xrealloc.
David J. MacKenzie <djm@gnu.org>
parents:
37
diff
changeset
|
7 the Free Software Foundation; either version 2, or (at your option) |
| 37 | 8 any later version. |
| 9 | |
| 10 GNU Emacs is distributed in the hope that it will be useful, | |
| 11 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 13 GNU General Public License for more details. | |
| 14 | |
| 15 You should have received a copy of the GNU General Public License | |
| 16 along with GNU Emacs; see the file COPYING. If not, write to | |
|
14186
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
11425
diff
changeset
|
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
|
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
11425
diff
changeset
|
18 Boston, MA 02111-1307, USA. */ |
| 37 | 19 |
| 20 /* cvtmail: | |
| 21 * Program to convert oldstyle goslings emacs mail directories into | |
| 22 * gnu-rmail format. Program expects a directory called Messages to | |
| 23 * exist in your home directory, containing individual mail messages in | |
| 24 * separate files in the standard gosling emacs mail reader format. | |
| 25 * | |
|
11425
bcb88697b70b
(main, skip_to_lf): Improve error handling.
Karl Heuer <kwzh@gnu.org>
parents:
9491
diff
changeset
|
26 * Program takes one argument: an output file. This file will contain |
| 37 | 27 * all the messages in Messages directory, in berkeley mail format. |
| 28 * If no output file is mentioned, messages are put in ~/OMAIL. | |
| 29 * | |
| 30 * In order to get rmail to read the messages, the resulting file must | |
| 31 * be mv'ed to ~/mbox, and then have rmail invoked on them. | |
| 32 * | |
| 33 * Author: Larry Kolodney, 1985 | |
| 34 */ | |
| 35 | |
| 36 | |
| 37 #include <stdio.h> | |
| 38 | |
|
6107
8cc2a5d2e728
* cvtmail.c: Declare malloc, realloc, xmalloc, xrealloc.
David J. MacKenzie <djm@gnu.org>
parents:
37
diff
changeset
|
39 char *malloc (); |
|
8cc2a5d2e728
* cvtmail.c: Declare malloc, realloc, xmalloc, xrealloc.
David J. MacKenzie <djm@gnu.org>
parents:
37
diff
changeset
|
40 char *realloc (); |
|
9491
dd3b83e4ceb0
Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents:
6107
diff
changeset
|
41 char *getenv (); |
|
dd3b83e4ceb0
Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents:
6107
diff
changeset
|
42 |
|
6107
8cc2a5d2e728
* cvtmail.c: Declare malloc, realloc, xmalloc, xrealloc.
David J. MacKenzie <djm@gnu.org>
parents:
37
diff
changeset
|
43 char *xmalloc (); |
|
8cc2a5d2e728
* cvtmail.c: Declare malloc, realloc, xmalloc, xrealloc.
David J. MacKenzie <djm@gnu.org>
parents:
37
diff
changeset
|
44 char *xrealloc (); |
|
9491
dd3b83e4ceb0
Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents:
6107
diff
changeset
|
45 void skip_to_lf (); |
|
11425
bcb88697b70b
(main, skip_to_lf): Improve error handling.
Karl Heuer <kwzh@gnu.org>
parents:
9491
diff
changeset
|
46 void sysfail (); |
| 37 | 47 |
|
9491
dd3b83e4ceb0
Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents:
6107
diff
changeset
|
48 int |
| 37 | 49 main (argc, argv) |
| 50 int argc; | |
| 51 char *argv[]; | |
| 52 { | |
| 53 char *hd; | |
| 54 char *md; | |
| 55 char *mdd; | |
| 56 char *mfile; | |
| 57 char *cf; | |
| 58 int cflen; | |
| 59 FILE *mddf; | |
| 60 FILE *mfilef; | |
| 61 FILE *cff; | |
|
9491
dd3b83e4ceb0
Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents:
6107
diff
changeset
|
62 char pre[10]; |
| 37 | 63 char name[14]; |
| 64 int c; | |
| 65 | |
| 66 hd = (char *) getenv ("HOME"); | |
| 67 | |
| 68 md = (char *) xmalloc (strlen (hd) + 10); | |
| 69 strcpy (md, hd); | |
| 70 strcat (md, "/Messages"); | |
| 71 | |
| 72 mdd = (char *) xmalloc (strlen (md) + 11); | |
| 73 strcpy (mdd, md); | |
| 74 strcat (mdd, "/Directory"); | |
| 75 | |
| 76 cflen = 100; | |
| 77 cf = (char *) xmalloc (cflen); | |
| 78 | |
| 79 mddf = fopen (mdd, "r"); | |
|
11425
bcb88697b70b
(main, skip_to_lf): Improve error handling.
Karl Heuer <kwzh@gnu.org>
parents:
9491
diff
changeset
|
80 if (!mddf) |
|
bcb88697b70b
(main, skip_to_lf): Improve error handling.
Karl Heuer <kwzh@gnu.org>
parents:
9491
diff
changeset
|
81 sysfail (mdd); |
| 37 | 82 if (argc > 1) |
|
11425
bcb88697b70b
(main, skip_to_lf): Improve error handling.
Karl Heuer <kwzh@gnu.org>
parents:
9491
diff
changeset
|
83 mfile = argv[1]; |
| 37 | 84 else |
| 85 { | |
| 86 mfile = (char *) xmalloc (strlen (hd) + 7); | |
| 87 strcpy (mfile, hd); | |
| 88 strcat (mfile, "/OMAIL"); | |
| 89 } | |
|
11425
bcb88697b70b
(main, skip_to_lf): Improve error handling.
Karl Heuer <kwzh@gnu.org>
parents:
9491
diff
changeset
|
90 mfilef = fopen (mfile, "w"); |
|
bcb88697b70b
(main, skip_to_lf): Improve error handling.
Karl Heuer <kwzh@gnu.org>
parents:
9491
diff
changeset
|
91 if (!mfilef) |
|
bcb88697b70b
(main, skip_to_lf): Improve error handling.
Karl Heuer <kwzh@gnu.org>
parents:
9491
diff
changeset
|
92 sysfail (mfile); |
|
bcb88697b70b
(main, skip_to_lf): Improve error handling.
Karl Heuer <kwzh@gnu.org>
parents:
9491
diff
changeset
|
93 |
| 37 | 94 skip_to_lf (mddf); |
| 95 while (fscanf (mddf, "%4c%14[0123456789]", pre, name) != EOF) | |
| 96 { | |
| 97 if (cflen < strlen (md) + strlen (name) + 2) | |
| 98 { | |
| 99 cflen = strlen (md) + strlen (name) + 2; | |
| 100 cf = (char *) xrealloc (cf, cflen); | |
| 101 } | |
| 102 strcpy (cf, md); | |
| 103 strcat (cf,"/"); | |
| 104 strcat (cf, name); | |
| 105 cff = fopen (cf, "r"); | |
|
11425
bcb88697b70b
(main, skip_to_lf): Improve error handling.
Karl Heuer <kwzh@gnu.org>
parents:
9491
diff
changeset
|
106 if (!cff) |
|
bcb88697b70b
(main, skip_to_lf): Improve error handling.
Karl Heuer <kwzh@gnu.org>
parents:
9491
diff
changeset
|
107 perror (cf); |
|
bcb88697b70b
(main, skip_to_lf): Improve error handling.
Karl Heuer <kwzh@gnu.org>
parents:
9491
diff
changeset
|
108 else |
|
bcb88697b70b
(main, skip_to_lf): Improve error handling.
Karl Heuer <kwzh@gnu.org>
parents:
9491
diff
changeset
|
109 { |
|
bcb88697b70b
(main, skip_to_lf): Improve error handling.
Karl Heuer <kwzh@gnu.org>
parents:
9491
diff
changeset
|
110 while ((c = getc(cff)) != EOF) |
|
bcb88697b70b
(main, skip_to_lf): Improve error handling.
Karl Heuer <kwzh@gnu.org>
parents:
9491
diff
changeset
|
111 putc (c, mfilef); |
|
bcb88697b70b
(main, skip_to_lf): Improve error handling.
Karl Heuer <kwzh@gnu.org>
parents:
9491
diff
changeset
|
112 putc ('\n', mfilef); |
|
bcb88697b70b
(main, skip_to_lf): Improve error handling.
Karl Heuer <kwzh@gnu.org>
parents:
9491
diff
changeset
|
113 skip_to_lf (mddf); |
|
bcb88697b70b
(main, skip_to_lf): Improve error handling.
Karl Heuer <kwzh@gnu.org>
parents:
9491
diff
changeset
|
114 fclose (cff); |
|
bcb88697b70b
(main, skip_to_lf): Improve error handling.
Karl Heuer <kwzh@gnu.org>
parents:
9491
diff
changeset
|
115 } |
| 37 | 116 } |
| 117 fclose (mddf); | |
| 118 fclose (mfilef); | |
| 119 return 0; | |
| 120 } | |
| 121 | |
|
9491
dd3b83e4ceb0
Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents:
6107
diff
changeset
|
122 void |
| 37 | 123 skip_to_lf (stream) |
| 124 FILE *stream; | |
| 125 { | |
| 126 register int c; | |
|
11425
bcb88697b70b
(main, skip_to_lf): Improve error handling.
Karl Heuer <kwzh@gnu.org>
parents:
9491
diff
changeset
|
127 while ((c = getc(stream)) != EOF && c != '\n') |
| 37 | 128 ; |
| 129 } | |
| 130 | |
|
9491
dd3b83e4ceb0
Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents:
6107
diff
changeset
|
131 |
|
dd3b83e4ceb0
Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents:
6107
diff
changeset
|
132 void |
|
dd3b83e4ceb0
Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents:
6107
diff
changeset
|
133 error (s1, s2) |
|
dd3b83e4ceb0
Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents:
6107
diff
changeset
|
134 char *s1, *s2; |
|
dd3b83e4ceb0
Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents:
6107
diff
changeset
|
135 { |
|
dd3b83e4ceb0
Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents:
6107
diff
changeset
|
136 fprintf (stderr, "cvtmail: "); |
|
dd3b83e4ceb0
Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents:
6107
diff
changeset
|
137 fprintf (stderr, s1, s2); |
|
dd3b83e4ceb0
Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents:
6107
diff
changeset
|
138 fprintf (stderr, "\n"); |
|
dd3b83e4ceb0
Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents:
6107
diff
changeset
|
139 } |
|
dd3b83e4ceb0
Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents:
6107
diff
changeset
|
140 |
|
dd3b83e4ceb0
Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents:
6107
diff
changeset
|
141 /* Print error message and exit. */ |
|
dd3b83e4ceb0
Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents:
6107
diff
changeset
|
142 |
|
dd3b83e4ceb0
Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents:
6107
diff
changeset
|
143 void |
|
dd3b83e4ceb0
Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents:
6107
diff
changeset
|
144 fatal (s1, s2) |
|
dd3b83e4ceb0
Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents:
6107
diff
changeset
|
145 char *s1, *s2; |
|
dd3b83e4ceb0
Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents:
6107
diff
changeset
|
146 { |
|
dd3b83e4ceb0
Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents:
6107
diff
changeset
|
147 error (s1, s2); |
|
dd3b83e4ceb0
Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents:
6107
diff
changeset
|
148 exit (1); |
|
dd3b83e4ceb0
Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents:
6107
diff
changeset
|
149 } |
|
dd3b83e4ceb0
Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents:
6107
diff
changeset
|
150 |
|
11425
bcb88697b70b
(main, skip_to_lf): Improve error handling.
Karl Heuer <kwzh@gnu.org>
parents:
9491
diff
changeset
|
151 void |
|
bcb88697b70b
(main, skip_to_lf): Improve error handling.
Karl Heuer <kwzh@gnu.org>
parents:
9491
diff
changeset
|
152 sysfail (s) |
|
bcb88697b70b
(main, skip_to_lf): Improve error handling.
Karl Heuer <kwzh@gnu.org>
parents:
9491
diff
changeset
|
153 char *s; |
|
bcb88697b70b
(main, skip_to_lf): Improve error handling.
Karl Heuer <kwzh@gnu.org>
parents:
9491
diff
changeset
|
154 { |
|
bcb88697b70b
(main, skip_to_lf): Improve error handling.
Karl Heuer <kwzh@gnu.org>
parents:
9491
diff
changeset
|
155 fprintf (stderr, "cvtmail: "); |
|
bcb88697b70b
(main, skip_to_lf): Improve error handling.
Karl Heuer <kwzh@gnu.org>
parents:
9491
diff
changeset
|
156 perror (s); |
|
bcb88697b70b
(main, skip_to_lf): Improve error handling.
Karl Heuer <kwzh@gnu.org>
parents:
9491
diff
changeset
|
157 exit (1); |
|
bcb88697b70b
(main, skip_to_lf): Improve error handling.
Karl Heuer <kwzh@gnu.org>
parents:
9491
diff
changeset
|
158 } |
|
bcb88697b70b
(main, skip_to_lf): Improve error handling.
Karl Heuer <kwzh@gnu.org>
parents:
9491
diff
changeset
|
159 |
|
6107
8cc2a5d2e728
* cvtmail.c: Declare malloc, realloc, xmalloc, xrealloc.
David J. MacKenzie <djm@gnu.org>
parents:
37
diff
changeset
|
160 char * |
| 37 | 161 xmalloc (size) |
|
6107
8cc2a5d2e728
* cvtmail.c: Declare malloc, realloc, xmalloc, xrealloc.
David J. MacKenzie <djm@gnu.org>
parents:
37
diff
changeset
|
162 unsigned size; |
| 37 | 163 { |
|
6107
8cc2a5d2e728
* cvtmail.c: Declare malloc, realloc, xmalloc, xrealloc.
David J. MacKenzie <djm@gnu.org>
parents:
37
diff
changeset
|
164 char *result = malloc (size); |
| 37 | 165 if (!result) |
| 166 fatal ("virtual memory exhausted", 0); | |
| 167 return result; | |
| 168 } | |
| 169 | |
|
6107
8cc2a5d2e728
* cvtmail.c: Declare malloc, realloc, xmalloc, xrealloc.
David J. MacKenzie <djm@gnu.org>
parents:
37
diff
changeset
|
170 char * |
| 37 | 171 xrealloc (ptr, size) |
| 172 char *ptr; | |
|
6107
8cc2a5d2e728
* cvtmail.c: Declare malloc, realloc, xmalloc, xrealloc.
David J. MacKenzie <djm@gnu.org>
parents:
37
diff
changeset
|
173 unsigned size; |
| 37 | 174 { |
|
6107
8cc2a5d2e728
* cvtmail.c: Declare malloc, realloc, xmalloc, xrealloc.
David J. MacKenzie <djm@gnu.org>
parents:
37
diff
changeset
|
175 char *result = realloc (ptr, size); |
| 37 | 176 if (!result) |
| 177 fatal ("virtual memory exhausted"); | |
| 178 return result; | |
| 179 } |
