]> git.eshelyaron.com Git - emacs.git/commitdiff
(main, skip_to_lf): Improve error handling.
authorKarl Heuer <kwzh@gnu.org>
Thu, 13 Apr 1995 17:24:35 +0000 (17:24 +0000)
committerKarl Heuer <kwzh@gnu.org>
Thu, 13 Apr 1995 17:24:35 +0000 (17:24 +0000)
(sysfail): New function.

lib-src/cvtmail.c

index b6e0c58ceb3ff332ebed41dd77d3e77cb491830c..d2123291d1826605560ae31a198fe6afb6109774 100644 (file)
@@ -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;