|
|
1.1 root 1: /* Copyright (C) 1985 Free Software Foundation
2:
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
7: the Free Software Foundation; either version 1, or (at your option)
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
17: the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
18:
19: /* cvtmail:
20: * Program to convert oldstyle goslings emacs mail directories into
21: * gnu-rmail format. Program expects a directory called Messages to
22: * exist in your home directory, containing individual mail messages in
23: * separate files in the standard gosling emacs mail reader format.
24: *
25: * Program takes one argument: an output file. THis file will contain
26: * all the messages in Messages directory, in berkeley mail format.
27: * If no output file is mentioned, messages are put in ~/OMAIL.
28: *
29: * In order to get rmail to read the messages, the resulting file must
30: * be mv'ed to ~/mbox, and then have rmail invoked on them.
31: *
32: * Author: Larry Kolodney, 1985
33:
34: * RMS, 2 Sept 85: Removed fix maximums on file name sizes.
35: */
36:
37:
38: #include <stdio.h>
39:
40:
41: main (argc, argv)
42: int argc;
43: char *argv[];
44: {
45: char *hd;
46: char *md;
47: char *mdd;
48: char *mfile;
49: char *cf;
50: int cflen;
51: FILE *mddf;
52: FILE *mfilef;
53: FILE *cff;
54: char pre[10], post[100];
55: char name[14];
56: int c;
57:
58: hd = (char *) getenv ("HOME");
59:
60: md = (char *) xmalloc (strlen (hd) + 10);
61: strcpy (md, hd);
62: strcat (md, "/Messages");
63:
64: mdd = (char *) xmalloc (strlen (md) + 11);
65: strcpy (mdd, md);
66: strcat (mdd, "/Directory");
67:
68: cflen = 100;
69: cf = (char *) xmalloc (cflen);
70:
71: mddf = fopen (mdd, "r");
72: if (argc > 1)
73: mfilef = fopen (argv[1], "w");
74: else
75: {
76: mfile = (char *) xmalloc (strlen (hd) + 7);
77: strcpy (mfile, hd);
78: strcat (mfile, "/OMAIL");
79: mfilef = fopen (mfile, "w");
80: }
81: skip_to_lf (mddf);
82: while (fscanf (mddf, "%4c%14[0123456789]", pre, name) != EOF)
83: {
84: if (cflen < strlen (md) + strlen (name) + 2)
85: {
86: cflen = strlen (md) + strlen (name) + 2;
87: cf = (char *) xrealloc (cf, cflen);
88: }
89: strcpy (cf, md);
90: strcat (cf,"/");
91: strcat (cf, name);
92: cff = fopen (cf, "r");
93: while ((c = getc(cff)) != EOF)
94: putc (c, mfilef);
95: putc ('\n', mfilef);
96: skip_to_lf (mddf);
97: fclose (cff);
98: }
99: fclose (mddf);
100: fclose (mfilef);
101: return 0;
102: }
103:
104: skip_to_lf (stream)
105: FILE *stream;
106: {
107: register int c;
108: while ((c = getc(stream)) != '\n')
109: ;
110: }
111:
112: int
113: xmalloc (size)
114: int size;
115: {
116: int result = malloc (size);
117: if (!result)
118: fatal ("virtual memory exhausted", 0);
119: return result;
120: }
121:
122: int
123: xrealloc (ptr, size)
124: char *ptr;
125: int size;
126: {
127: int result = realloc (ptr, size);
128: if (!result)
129: fatal ("virtual memory exhausted");
130: return result;
131: }
132:
133: /* Print error message and exit. */
134:
135: fatal (s1, s2)
136: char *s1, *s2;
137: {
138: error (s1, s2);
139: exit (1);
140: }
141:
142: error (s1, s2)
143: char *s1, *s2;
144: {
145: printf ("cvtmail: ");
146: printf (s1, s2);
147: printf ("\n");
148: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.