1: /* Copyright (C) 1985 Free Software Foundation
   2: This file is part of GNU Emacs.
   3: 
   4: GNU Emacs is distributed in the hope that it will be useful,
   5: but without any warranty.  No author or distributor
   6: accepts responsibility to anyone for the consequences of using it
   7: or for whether it serves any particular purpose or works at all,
   8: unless he says so in writing.
   9: 
  10: Everyone is granted permission to copy, modify and redistribute
  11: GNU Emacs, but only under the conditions described in the
  12: document "GNU Emacs copying permission notice".   An exact copy
  13: of the document is supposed to have been given to you along with
  14: GNU Emacs so that you can know how you may redistribute it all.
  15: It should be in a file named COPYING.  Among other things, the
  16: copyright notice and this notice must be preserved on all copies.  */
  17: 
  18: /* cvtmail:
  19:  * Program to convert oldstyle goslings emacs mail directories into
  20:  * gnu-rmail format.  Program expects a directory called Messages to
  21:  * exist in your home directory, containing individual mail messages in
  22:  * separate files in the standard gosling emacs mail reader format.
  23:  *
  24:  * Program takes one argument: an output file.  THis file will contain
  25:  * all the messages in Messages directory, in berkeley mail format.
  26:  * If no output file is mentioned, messages are put in ~/OMAIL.
  27:  *
  28:  * In order to get rmail to read the messages, the resulting file must
  29:  * be mv'ed to ~/mbox, and then have rmail invoked on them.
  30:  *
  31:  * Author: Larry Kolodney, 1985
  32: 
  33:  * RMS, 2 Sept 85: Removed fix maximums on file name sizes.
  34:  */
  35: 
  36: 
  37: #include <stdio.h>
  38: 
  39: 
  40: main (argc, argv)
  41:      int argc;
  42:      char *argv[];
  43: {
  44:   char *hd;
  45:   char *md;
  46:   char *mdd;
  47:   char *mfile;
  48:   char *cf;
  49:   int cflen;
  50:   FILE *mddf;
  51:   FILE *mfilef;
  52:   FILE *cff;
  53:   char pre[10], post[100];
  54:   char name[14];
  55:   int c;
  56: 
  57:   hd = (char *) getenv ("HOME");
  58: 
  59:   md = (char *) xmalloc (strlen (hd) + 10);
  60:   strcpy (md, hd);
  61:   strcat (md, "/Messages");
  62: 
  63:   mdd = (char *) xmalloc (strlen (md) + 11);
  64:   strcpy (mdd, md);
  65:   strcat (mdd, "/Directory");
  66: 
  67:   cflen = 100;
  68:   cf = (char *) xmalloc (cflen);
  69: 
  70:   mddf = fopen (mdd, "r");
  71:   if (argc > 1)
  72:     mfilef = fopen (argv[1], "w");
  73:   else
  74:     {
  75:       mfile = (char *) xmalloc (strlen (hd) + 7);
  76:       strcpy (mfile, hd);
  77:       strcat (mfile, "/OMAIL");
  78:       mfilef = fopen (mfile, "w");
  79:     }
  80:   skip_to_lf (mddf);
  81:   while (fscanf (mddf, "%4c%14[0123456789]", pre, name) != EOF)
  82:     {
  83:       if (cflen < strlen (md) + strlen (name) + 2)
  84:     {
  85:       cflen = strlen (md) + strlen (name) + 2;
  86:       cf = (char *) xrealloc (cf, cflen);
  87:     }
  88:       strcpy (cf, md);
  89:       strcat (cf,"/");
  90:       strcat (cf, name);
  91:       cff = fopen (cf, "r");
  92:       while ((c = getc(cff)) != EOF)
  93:     putc (c, mfilef);
  94:       putc ('\n', mfilef);
  95:       skip_to_lf (mddf);
  96:      fclose (cff);
  97:     }
  98:   fclose (mddf);
  99:   fclose (mfilef);
 100:   return 0;
 101: }
 102: 
 103: skip_to_lf (stream)
 104:      FILE *stream;
 105: {
 106:   register int c;
 107:   while ((c = getc(stream)) != '\n')
 108:     ;
 109: }
 110: 
 111: int
 112: xmalloc (size)
 113:      int size;
 114: {
 115:   int result = malloc (size);
 116:   if (!result)
 117:     fatal ("virtual memory exhausted", 0);
 118:   return result;
 119: }
 120: 
 121: int
 122: xrealloc (ptr, size)
 123:      char *ptr;
 124:      int size;
 125: {
 126:   int result = realloc (ptr, size);
 127:   if (!result)
 128:     fatal ("virtual memory exhausted");
 129:   return result;
 130: }
 131: 
 132: /* Print error message and exit.  */
 133: 
 134: fatal (s1, s2)
 135:      char *s1, *s2;
 136: {
 137:   error (s1, s2);
 138:   exit (1);
 139: }
 140: 
 141: error (s1, s2)
 142:      char *s1, *s2;
 143: {
 144:   printf ("cvtmail: ");
 145:   printf (s1, s2);
 146:   printf ("\n");
 147: }

Defined functions

error defined in line 141; used 1 times
fatal defined in line 134; used 2 times
main defined in line 40; never used
skip_to_lf defined in line 103; used 2 times
xmalloc defined in line 111; used 4 times
xrealloc defined in line 121; used 1 times
  • in line 86
Last modified: 1986-03-28
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 1174
Valid CSS Valid XHTML 1.0 Strict