# HG changeset patch # User Karl Heuer # Date 797793875 0 # Node ID bcb88697b70b1469bf4c10709a884523c03311c1 # Parent 29493ce2d1cadb18c720e671dcc713ee784fa253 (main, skip_to_lf): Improve error handling. (sysfail): New function. diff -r 29493ce2d1ca -r bcb88697b70b lib-src/cvtmail.c --- a/lib-src/cvtmail.c Thu Apr 13 17:07:03 1995 +0000 +++ b/lib-src/cvtmail.c Thu Apr 13 17:24:35 1995 +0000 @@ -21,7 +21,7 @@ * 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 *xmalloc (); char *xrealloc (); void skip_to_lf (); +void sysfail (); int main (argc, argv) @@ -74,15 +75,20 @@ 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 @@ 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 @@ FILE *stream; { register int c; - while ((c = getc(stream)) != '\n') + while ((c = getc(stream)) != EOF && c != '\n') ; } @@ -135,6 +146,15 @@ exit (1); } +void +sysfail (s) + char *s; +{ + fprintf (stderr, "cvtmail: "); + perror (s); + exit (1); +} + char * xmalloc (size) unsigned size;