(server-process-filter): Don't force the authentication
[bpt/emacs.git] / lib-src / cvtmail.c
CommitLineData
b3d90e46 1/* Copyright (C) 1985, 1994, 2001, 2002, 2003, 2004,
a5b68355 2 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
3b7ad313 3
518dd722
JB
4This file is part of GNU Emacs.
5
6GNU Emacs is free software; you can redistribute it and/or modify
7it under the terms of the GNU General Public License as published by
4a9f99bd 8the Free Software Foundation; either version 3, or (at your option)
518dd722
JB
9any later version.
10
11GNU Emacs is distributed in the hope that it will be useful,
12but WITHOUT ANY WARRANTY; without even the implied warranty of
13MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14GNU General Public License for more details.
15
16You should have received a copy of the GNU General Public License
17along with GNU Emacs; see the file COPYING. If not, write to
364c38d3
LK
18the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
19Boston, MA 02110-1301, USA. */
518dd722
JB
20
21/* cvtmail:
22 * Program to convert oldstyle goslings emacs mail directories into
23 * gnu-rmail format. Program expects a directory called Messages to
24 * exist in your home directory, containing individual mail messages in
25 * separate files in the standard gosling emacs mail reader format.
26 *
231c740a 27 * Program takes one argument: an output file. This file will contain
518dd722
JB
28 * all the messages in Messages directory, in berkeley mail format.
29 * If no output file is mentioned, messages are put in ~/OMAIL.
30 *
31 * In order to get rmail to read the messages, the resulting file must
32 * be mv'ed to ~/mbox, and then have rmail invoked on them.
2f8fe2f4 33 *
518dd722 34 * Author: Larry Kolodney, 1985
518dd722
JB
35 */
36
2f8fe2f4
PJ
37#ifdef HAVE_CONFIG_H
38#include <config.h>
39#endif
40
518dd722
JB
41#include <stdio.h>
42
0b3b8286 43#ifndef HAVE_STDLIB_H
340ff9de 44char *getenv ();
0b3b8286
DL
45#endif
46
47char *xmalloc __P ((unsigned));
48char *xrealloc __P ((char *, unsigned));
49void skip_to_lf __P ((FILE *));
50void sysfail __P ((char *));
518dd722 51
340ff9de 52int
518dd722
JB
53main (argc, argv)
54 int argc;
55 char *argv[];
56{
57 char *hd;
58 char *md;
59 char *mdd;
60 char *mfile;
61 char *cf;
62 int cflen;
63 FILE *mddf;
64 FILE *mfilef;
65 FILE *cff;
340ff9de 66 char pre[10];
518dd722
JB
67 char name[14];
68 int c;
69
70 hd = (char *) getenv ("HOME");
71
72 md = (char *) xmalloc (strlen (hd) + 10);
73 strcpy (md, hd);
74 strcat (md, "/Messages");
75
76 mdd = (char *) xmalloc (strlen (md) + 11);
77 strcpy (mdd, md);
78 strcat (mdd, "/Directory");
79
80 cflen = 100;
81 cf = (char *) xmalloc (cflen);
82
83 mddf = fopen (mdd, "r");
231c740a
KH
84 if (!mddf)
85 sysfail (mdd);
518dd722 86 if (argc > 1)
231c740a 87 mfile = argv[1];
518dd722
JB
88 else
89 {
90 mfile = (char *) xmalloc (strlen (hd) + 7);
91 strcpy (mfile, hd);
92 strcat (mfile, "/OMAIL");
518dd722 93 }
231c740a
KH
94 mfilef = fopen (mfile, "w");
95 if (!mfilef)
96 sysfail (mfile);
97
518dd722
JB
98 skip_to_lf (mddf);
99 while (fscanf (mddf, "%4c%14[0123456789]", pre, name) != EOF)
100 {
101 if (cflen < strlen (md) + strlen (name) + 2)
102 {
103 cflen = strlen (md) + strlen (name) + 2;
104 cf = (char *) xrealloc (cf, cflen);
105 }
106 strcpy (cf, md);
107 strcat (cf,"/");
108 strcat (cf, name);
109 cff = fopen (cf, "r");
231c740a
KH
110 if (!cff)
111 perror (cf);
112 else
113 {
114 while ((c = getc(cff)) != EOF)
115 putc (c, mfilef);
116 putc ('\n', mfilef);
117 skip_to_lf (mddf);
118 fclose (cff);
119 }
518dd722
JB
120 }
121 fclose (mddf);
2f8fe2f4 122 fclose (mfilef);
65396510 123 return EXIT_SUCCESS;
518dd722
JB
124}
125
340ff9de 126void
518dd722
JB
127skip_to_lf (stream)
128 FILE *stream;
129{
130 register int c;
231c740a 131 while ((c = getc(stream)) != EOF && c != '\n')
518dd722
JB
132 ;
133}
134
340ff9de
DM
135
136void
137error (s1, s2)
138 char *s1, *s2;
139{
140 fprintf (stderr, "cvtmail: ");
141 fprintf (stderr, s1, s2);
142 fprintf (stderr, "\n");
143}
144
145/* Print error message and exit. */
146
147void
148fatal (s1, s2)
149 char *s1, *s2;
150{
151 error (s1, s2);
65396510 152 exit (EXIT_FAILURE);
340ff9de
DM
153}
154
231c740a
KH
155void
156sysfail (s)
157 char *s;
158{
159 fprintf (stderr, "cvtmail: ");
160 perror (s);
65396510 161 exit (EXIT_FAILURE);
231c740a
KH
162}
163
00345809 164char *
518dd722 165xmalloc (size)
00345809 166 unsigned size;
518dd722 167{
2a61b9d2 168 char *result = (char *) malloc (size);
518dd722
JB
169 if (!result)
170 fatal ("virtual memory exhausted", 0);
171 return result;
172}
173
00345809 174char *
518dd722
JB
175xrealloc (ptr, size)
176 char *ptr;
00345809 177 unsigned size;
518dd722 178{
2a61b9d2 179 char *result = (char *) realloc (ptr, size);
518dd722 180 if (!result)
6d8f7d5d 181 fatal ("virtual memory exhausted", 0);
518dd722
JB
182 return result;
183}
ab5796a9
MB
184
185/* arch-tag: b93c25a9-9012-44f1-b78b-9cc7aed44a7a
186 (do not change this comment) */
65396510
TTN
187
188/* cvtmail.c ends here */