(b2m): Add dependency on GETOPTDEPS.
[bpt/emacs.git] / lib-src / cvtmail.c
index 1f3b8ff..20ef341 100644 (file)
@@ -1,9 +1,10 @@
-/* Copyright (C) 1985 Free Software Foundation
+/* Copyright (C) 1985, 1994 Free Software Foundation
+
 This file is part of GNU Emacs.
 
 GNU Emacs is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 1, or (at your option)
+the Free Software Foundation; either version 2, or (at your option)
 any later version.
 
 GNU Emacs is distributed in the hope that it will be useful,
@@ -13,7 +14,8 @@ GNU General Public License for more details.
 
 You should have received a copy of the GNU General Public License
 along with GNU Emacs; see the file COPYING.  If not, write to
-the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
+the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
 
 /* cvtmail:
  * Program to convert oldstyle goslings emacs mail directories into
@@ -21,7 +23,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.
  *
@@ -29,14 +31,21 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
  * be mv'ed to ~/mbox, and then have rmail invoked on them.
  * 
  * Author: Larry Kolodney, 1985
-
- * RMS, 2 Sept 85: Removed fix maximums on file name sizes.
  */
 
 
 #include <stdio.h>
 
+char *malloc ();
+char *realloc ();
+char *getenv ();
+
+char *xmalloc ();
+char *xrealloc ();
+void skip_to_lf ();
+void sysfail ();
 
+int
 main (argc, argv)
      int argc;
      char *argv[];
@@ -50,7 +59,7 @@ main (argc, argv)
   FILE *mddf;
   FILE *mfilef;
   FILE *cff;
-  char pre[10], post[100];
+  char pre[10];
   char name[14];
   int c;
 
@@ -68,15 +77,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)
     {
@@ -89,48 +103,44 @@ 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);    
   return 0;
 }
 
+void
 skip_to_lf (stream)
      FILE *stream;
 {
   register int c;
-  while ((c = getc(stream)) != '\n')
+  while ((c = getc(stream)) != EOF && c != '\n')
     ;
 }
 
-int
-xmalloc (size)
-     int size;
-{
-  int result = malloc (size);
-  if (!result)
-    fatal ("virtual memory exhausted", 0);
-  return result;
-}
 
-int
-xrealloc (ptr, size)
-     char *ptr;
-     int size;
+void
+error (s1, s2)
+     char *s1, *s2;
 {
-  int result = realloc (ptr, size);
-  if (!result)
-    fatal ("virtual memory exhausted");
-  return result;
+  fprintf (stderr, "cvtmail: ");
+  fprintf (stderr, s1, s2);
+  fprintf (stderr, "\n");
 }
 
 /* Print error message and exit.  */
 
+void
 fatal (s1, s2)
      char *s1, *s2;
 {
@@ -138,10 +148,32 @@ fatal (s1, s2)
   exit (1);
 }
 
-error (s1, s2)
-     char *s1, *s2;
+void
+sysfail (s)
+     char *s;
+{
+  fprintf (stderr, "cvtmail: ");
+  perror (s);
+  exit (1);
+}
+
+char *
+xmalloc (size)
+     unsigned size;
+{
+  char *result = malloc (size);
+  if (!result)
+    fatal ("virtual memory exhausted", 0);
+  return result;
+}
+
+char *
+xrealloc (ptr, size)
+     char *ptr;
+     unsigned size;
 {
-  printf ("cvtmail: ");
-  printf (s1, s2);
-  printf ("\n");
+  char *result = realloc (ptr, size);
+  if (!result)
+    fatal ("virtual memory exhausted");
+  return result;
 }