/[mailutils]/mailutils/mh/refile.c
ViewVC logotype

Diff of /mailutils/mh/refile.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.12 by gray, Sat Feb 8 02:25:37 2003 UTC revision 1.13 by gray, Sat Feb 8 15:57:24 2003 UTC
# Line 198  refile (mailbox_t mbox, message_t msg, s Line 198  refile (mailbox_t mbox, message_t msg, s
198      }      }
199  }  }
200    
 mailbox_t  
 open_source (char *file_name)  
 {  
   struct stat st;  
   char *buffer;  
   int fd;  
   size_t len = 0;  
   mailbox_t tmp;  
   stream_t stream;  
   char *p;  
     
   if (stat (file_name, &st) < 0)  
     {  
       mh_error (_("can't stat file %s: %s"), file_name, strerror (errno));  
       return NULL;  
     }  
   
   buffer = xmalloc (st.st_size+1);  
   fd = open (file_name, O_RDONLY);  
   if (fd == -1)  
     {  
       mh_error (_("can't open file %s: %s"), file_name, strerror (errno));  
       return NULL;  
     }  
   
   if (read (fd, buffer, st.st_size) != st.st_size)  
     {  
       mh_error (_("error reading file %s: %s"), file_name, strerror (errno));  
       return NULL;  
     }  
   
   buffer[st.st_size] = 0;  
   close (fd);  
   
   if (mailbox_create (&tmp, "/dev/null")  
       || mailbox_open (tmp, MU_STREAM_READ) != 0)  
     {  
       mh_error (_("can't create temporary mailbox"));  
       return NULL;  
     }  
   
   if (memory_stream_create (&stream, 0, MU_STREAM_RDWR)  
       || stream_open (stream))  
     {  
       mailbox_close (tmp);  
       mh_error (_("can't create temporary stream"));  
       return NULL;  
     }  
   
   for (p = buffer; *p && isspace (*p); p++)  
     ;  
   
   if (strncmp (p, "From ", 5))  
     {  
       struct tm *tm;  
       time_t t;  
       char date[80];  
         
       time(&t);  
       tm = gmtime(&t);  
       strftime (date, sizeof (date),  
                 "From GNU-MH-refile %a %b %e %H:%M:%S %Y%n",  
                 tm);  
       stream_write (stream, date, strlen (date), 0, &len);  
     }        
   
   stream_write (stream, p, strlen (p), len, &len);  
   mailbox_set_stream (tmp, stream);  
   if (mailbox_messages_count (tmp, &len)  
       || len < 1)  
     {  
       mh_error (_("input file %s is not a valid message file"), file_name);  
       return NULL;  
     }  
   else if (len > 1)  
     {  
       mh_error (ngettext ("input file %s contains %lu message",  
                           "input file %s contains %lu messages",  
                           len),  
                 (unsigned long) len);  
       return NULL;  
     }  
   free (buffer);  
   return tmp;  
 }  
   
201  int  int
202  main (int argc, char **argv)  main (int argc, char **argv)
203  {  {
# Line 305  main (int argc, char **argv) Line 219  main (int argc, char **argv)
219            mh_error (_("both message set and source file given"));            mh_error (_("both message set and source file given"));
220            exit (1);            exit (1);
221          }          }
222        mbox = open_source (source_file);        mbox = mh_open_msg_file (source_file);
223        mh_msgset_parse (mbox, &msgset, 0, NULL, "first");        mh_msgset_parse (mbox, &msgset, 0, NULL, "first");
224      }      }
225    else    else

Legend:
Removed from v.1.12  
changed lines
  Added in v.1.13

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26