]> code.delx.au - gnu-emacs/blobdiff - lib-src/cvtmail.c
Version 3.15
[gnu-emacs] / lib-src / cvtmail.c
index 1f3b8ff9f9e7c9bc56945b42cd07915d2520bb8c..562c5522ed9aa241638beeb640ec5268066cf313 100644 (file)
@@ -1,9 +1,11 @@
-/* Copyright (C) 1985 Free Software Foundation
+/* Copyright (C) 1985, 1994, 2002, 2003, 2004,
+                 2005 Free Software Foundation, Inc.
+
 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
 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,
 any later version.
 
 GNU Emacs is distributed in the hope that it will be useful,
@@ -13,7 +15,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
 
 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., 51 Franklin Street, Fifth Floor,
+Boston, MA 02110-1301, USA.  */
 
 /* cvtmail:
  * Program to convert oldstyle goslings emacs mail directories into
 
 /* cvtmail:
  * Program to convert oldstyle goslings emacs mail directories into
@@ -21,22 +24,32 @@ 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.
  *
  * 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.
  *
  * In order to get rmail to read the messages, the resulting file must
  * be mv'ed to ~/mbox, and then have rmail invoked on them.
  * all the messages in Messages directory, in berkeley mail format.
  * If no output file is mentioned, messages are put in ~/OMAIL.
  *
  * In order to get rmail to read the messages, the resulting file must
  * be mv'ed to ~/mbox, and then have rmail invoked on them.
- * 
+ *
  * Author: Larry Kolodney, 1985
  * Author: Larry Kolodney, 1985
-
- * RMS, 2 Sept 85: Removed fix maximums on file name sizes.
  */
 
  */
 
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
 
 #include <stdio.h>
 
 
 #include <stdio.h>
 
+#ifndef HAVE_STDLIB_H
+char *getenv ();
+#endif
 
 
+char *xmalloc __P ((unsigned));
+char *xrealloc __P ((char *, unsigned));
+void skip_to_lf __P ((FILE *));
+void sysfail __P ((char *));
+
+int
 main (argc, argv)
      int argc;
      char *argv[];
 main (argc, argv)
      int argc;
      char *argv[];
@@ -50,7 +63,7 @@ main (argc, argv)
   FILE *mddf;
   FILE *mfilef;
   FILE *cff;
   FILE *mddf;
   FILE *mfilef;
   FILE *cff;
-  char pre[10], post[100];
+  char pre[10];
   char name[14];
   int c;
 
   char name[14];
   int c;
 
@@ -68,15 +81,20 @@ main (argc, argv)
   cf = (char *) xmalloc (cflen);
 
   mddf = fopen (mdd, "r");
   cf = (char *) xmalloc (cflen);
 
   mddf = fopen (mdd, "r");
+  if (!mddf)
+    sysfail (mdd);
   if (argc > 1)
   if (argc > 1)
-    mfilef = fopen (argv[1], "w");
+    mfile = argv[1];
   else
     {
       mfile = (char *) xmalloc (strlen (hd) + 7);
       strcpy (mfile, hd);
       strcat (mfile, "/OMAIL");
   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)
     {
   skip_to_lf (mddf);
   while (fscanf (mddf, "%4c%14[0123456789]", pre, name) != EOF)
     {
@@ -89,59 +107,82 @@ main (argc, argv)
       strcat (cf,"/");
       strcat (cf, name);
       cff = fopen (cf, "r");
       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 (mddf);
-  fclose (mfilef);    
-  return 0;
+  fclose (mfilef);
+  return EXIT_SUCCESS;
 }
 
 }
 
+void
 skip_to_lf (stream)
      FILE *stream;
 {
   register int c;
 skip_to_lf (stream)
      FILE *stream;
 {
   register int c;
-  while ((c = getc(stream)) != '\n')
+  while ((c = getc(stream)) != EOF && c != '\n')
     ;
 }
 
     ;
 }
 
-int
+
+void
+error (s1, s2)
+     char *s1, *s2;
+{
+  fprintf (stderr, "cvtmail: ");
+  fprintf (stderr, s1, s2);
+  fprintf (stderr, "\n");
+}
+
+/* Print error message and exit.  */
+
+void
+fatal (s1, s2)
+     char *s1, *s2;
+{
+  error (s1, s2);
+  exit (EXIT_FAILURE);
+}
+
+void
+sysfail (s)
+     char *s;
+{
+  fprintf (stderr, "cvtmail: ");
+  perror (s);
+  exit (EXIT_FAILURE);
+}
+
+char *
 xmalloc (size)
 xmalloc (size)
-     int size;
+     unsigned size;
 {
 {
-  int result = malloc (size);
+  char *result = (char *) malloc (size);
   if (!result)
     fatal ("virtual memory exhausted", 0);
   return result;
 }
 
   if (!result)
     fatal ("virtual memory exhausted", 0);
   return result;
 }
 
-int
+char *
 xrealloc (ptr, size)
      char *ptr;
 xrealloc (ptr, size)
      char *ptr;
-     int size;
+     unsigned size;
 {
 {
-  int result = realloc (ptr, size);
+  char *result = (char *) realloc (ptr, size);
   if (!result)
   if (!result)
-    fatal ("virtual memory exhausted");
+    fatal ("virtual memory exhausted", 0);
   return result;
 }
 
   return result;
 }
 
-/* Print error message and exit.  */
+/* arch-tag: b93c25a9-9012-44f1-b78b-9cc7aed44a7a
+   (do not change this comment) */
 
 
-fatal (s1, s2)
-     char *s1, *s2;
-{
-  error (s1, s2);
-  exit (1);
-}
-
-error (s1, s2)
-     char *s1, *s2;
-{
-  printf ("cvtmail: ");
-  printf (s1, s2);
-  printf ("\n");
-}
+/* cvtmail.c ends here */