newfield.c
changeset 0 068428edee47
equal deleted inserted replaced
-1:000000000000 0:068428edee47
       
     1 #include "fmt.h"
       
     2 #include "datetime.h"
       
     3 #include "stralloc.h"
       
     4 #include "date822fmt.h"
       
     5 #include "newfield.h"
       
     6 
       
     7 /* "Date: 26 Sep 1995 04:46:53 -0000\n" */
       
     8 stralloc newfield_date = {0};
       
     9 /* "Message-ID: <19950926044653.12345.qmail@silverton.berkeley.edu>\n" */
       
    10 stralloc newfield_msgid = {0};
       
    11 
       
    12 static unsigned int datefmt(s,when)
       
    13 char *s;
       
    14 datetime_sec when;
       
    15 {
       
    16  unsigned int i;
       
    17  unsigned int len;
       
    18  struct datetime dt;
       
    19  datetime_tai(&dt,when);
       
    20  len = 0;
       
    21  i = fmt_str(s,"Date: "); len += i; if (s) s += i;
       
    22  i = date822fmt(s,&dt); len += i; if (s) s += i;
       
    23  return len;
       
    24 }
       
    25 
       
    26 static unsigned int msgidfmt(s,idhost,idhostlen,when)
       
    27 char *s;
       
    28 char *idhost;
       
    29 int idhostlen;
       
    30 datetime_sec when;
       
    31 {
       
    32  unsigned int i;
       
    33  unsigned int len;
       
    34  struct datetime dt;
       
    35  datetime_tai(&dt,when);
       
    36  len = 0;
       
    37  i = fmt_str(s,"Message-ID: <"); len += i; if (s) s += i;
       
    38  i = fmt_uint(s,dt.year + 1900); len += i; if (s) s += i;
       
    39  i = fmt_uint0(s,dt.mon + 1,2); len += i; if (s) s += i;
       
    40  i = fmt_uint0(s,dt.mday,2); len += i; if (s) s += i;
       
    41  i = fmt_uint0(s,dt.hour,2); len += i; if (s) s += i;
       
    42  i = fmt_uint0(s,dt.min,2); len += i; if (s) s += i;
       
    43  i = fmt_uint0(s,dt.sec,2); len += i; if (s) s += i;
       
    44  i = fmt_str(s,"."); len += i; if (s) s += i;
       
    45  i = fmt_uint(s,getpid()); len += i; if (s) s += i;
       
    46  i = fmt_str(s,".qmail@"); len += i; if (s) s += i;
       
    47  i = fmt_strn(s,idhost,idhostlen); len += i; if (s) s += i;
       
    48  i = fmt_str(s,">\n"); len += i; if (s) s += i;
       
    49  return len;
       
    50 }
       
    51 
       
    52 int newfield_datemake(when)
       
    53 datetime_sec when;
       
    54 {
       
    55  if (!stralloc_ready(&newfield_date,datefmt(FMT_LEN,when))) return 0;
       
    56  newfield_date.len = datefmt(newfield_date.s,when);
       
    57  return 1;
       
    58 }
       
    59 
       
    60 int newfield_msgidmake(idhost,idhostlen,when)
       
    61 char *idhost;
       
    62 int idhostlen;
       
    63 datetime_sec when;
       
    64 {
       
    65  if (!stralloc_ready(&newfield_msgid,msgidfmt(FMT_LEN,idhost,idhostlen,when))) return 0;
       
    66  newfield_msgid.len = msgidfmt(newfield_msgid.s,idhost,idhostlen,when);
       
    67  return 1;
       
    68 }