diff options
author | Karl Heuer <kwzh@gnu.org> | 1995-04-13 17:24:35 +0000 |
---|---|---|
committer | Karl Heuer <kwzh@gnu.org> | 1995-04-13 17:24:35 +0000 |
commit | 231c740a450fc16fce7b69193e7beb10d0d4cfac (patch) | |
tree | 98eef666a9b1c0d07487c48c32802de94696a894 /lib-src/cvtmail.c | |
parent | 8902ae9e18aac6274e2822ea2c4b65de9b103c4a (diff) | |
download | emacs-231c740a450fc16fce7b69193e7beb10d0d4cfac.tar.gz |
(main, skip_to_lf): Improve error handling.
(sysfail): New function.
Diffstat (limited to 'lib-src/cvtmail.c')
-rw-r--r-- | lib-src/cvtmail.c | 38 |
1 files changed, 29 insertions, 9 deletions
diff --git a/lib-src/cvtmail.c b/lib-src/cvtmail.c index b6e0c58ceb3..d2123291d18 100644 --- a/lib-src/cvtmail.c +++ b/lib-src/cvtmail.c @@ -21,7 +21,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ * exist in your home directory, containing individual mail messages in * separate files in the standard gosling emacs mail reader format. * - * Program takes one argument: an output file. THis file will contain + * Program takes one argument: an output file. This file will contain * all the messages in Messages directory, in berkeley mail format. * If no output file is mentioned, messages are put in ~/OMAIL. * @@ -41,6 +41,7 @@ char *getenv (); char *xmalloc (); char *xrealloc (); void skip_to_lf (); +void sysfail (); int main (argc, argv) @@ -74,15 +75,20 @@ main (argc, argv) cf = (char *) xmalloc (cflen); mddf = fopen (mdd, "r"); + if (!mddf) + sysfail (mdd); if (argc > 1) - mfilef = fopen (argv[1], "w"); + mfile = argv[1]; else { mfile = (char *) xmalloc (strlen (hd) + 7); strcpy (mfile, hd); strcat (mfile, "/OMAIL"); - mfilef = fopen (mfile, "w"); } + mfilef = fopen (mfile, "w"); + if (!mfilef) + sysfail (mfile); + skip_to_lf (mddf); while (fscanf (mddf, "%4c%14[0123456789]", pre, name) != EOF) { @@ -95,11 +101,16 @@ main (argc, argv) strcat (cf,"/"); strcat (cf, name); cff = fopen (cf, "r"); - while ((c = getc(cff)) != EOF) - putc (c, mfilef); - putc ('\n', mfilef); - skip_to_lf (mddf); - fclose (cff); + if (!cff) + perror (cf); + else + { + while ((c = getc(cff)) != EOF) + putc (c, mfilef); + putc ('\n', mfilef); + skip_to_lf (mddf); + fclose (cff); + } } fclose (mddf); fclose (mfilef); @@ -111,7 +122,7 @@ skip_to_lf (stream) FILE *stream; { register int c; - while ((c = getc(stream)) != '\n') + while ((c = getc(stream)) != EOF && c != '\n') ; } @@ -135,6 +146,15 @@ fatal (s1, s2) exit (1); } +void +sysfail (s) + char *s; +{ + fprintf (stderr, "cvtmail: "); + perror (s); + exit (1); +} + char * xmalloc (size) unsigned size; |