URI:
       tmail.c - plan9port - [fork] Plan 9 from user space
  HTML git clone git://src.adamsgaard.dk/plan9port
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
       tmail.c (1346B)
       ---
            1 #include "common.h"
            2 
            3 /* format of REMOTE FROM lines */
            4 char *REMFROMRE =
            5         "^>?From[ \t]+((\".*\")?[^\" \t]+?(\".*\")?[^\" \t]+?)[ \t]+(.+)[ \t]+remote[ \t]+from[ \t]+(.*)\n$";
            6 int REMSENDERMATCH = 1;
            7 int REMDATEMATCH = 4;
            8 int REMSYSMATCH = 5;
            9 
           10 /* format of LOCAL FROM lines */
           11 char *FROMRE =
           12         "^>?From[ \t]+((\".*\")?[^\" \t]+?(\".*\")?[^\" \t]+?)[ \t]+(.+)\n$";
           13 int SENDERMATCH = 1;
           14 int DATEMATCH = 4;
           15 
           16 /* output a unix style local header */
           17 int
           18 print_header(Biobuf *fp, char *sender, char *date)
           19 {
           20         return Bprint(fp, "From %s %s\n", sender, date);
           21 }
           22 
           23 /* output a unix style remote header */
           24 int
           25 print_remote_header(Biobuf *fp, char *sender, char *date, char *system)
           26 {
           27         return Bprint(fp, "From %s %s remote from %s\n", sender, date, system);
           28 }
           29 
           30 /* parse a mailbox style header */
           31 int
           32 parse_header(char *line, String *sender, String *date)
           33 {
           34         if (!IS_HEADER(line))
           35                 return -1;
           36         line += sizeof("From ") - 1;
           37         s_restart(sender);
           38         while(*line==' '||*line=='\t')
           39                 line++;
           40         if(*line == '"'){
           41                 s_putc(sender, *line++);
           42                 while(*line && *line != '"')
           43                         s_putc(sender, *line++);
           44                 s_putc(sender, *line++);
           45         } else {
           46                 while(*line && *line != ' ' && *line != '\t')
           47                         s_putc(sender, *line++);
           48         }
           49         s_terminate(sender);
           50         s_restart(date);
           51         while(*line==' '||*line=='\t')
           52                 line++;
           53         while(*line)
           54                 s_putc(date, *line++);
           55         s_terminate(date);
           56         return 0;
           57 }