s/qmail 4.2.29a
Next generation secure email transport
Loading...
Searching...
No Matches
newfield.c
Go to the documentation of this file.
1#include <unistd.h>
2#include "fmt.h"
3#include "datetime.h"
4#include "stralloc.h"
5#include "date822fmt.h"
6#include "newfield.h"
7
8/* "Date: 26 Sep 1995 04:46:53 -0000\n" */
9stralloc newfield_date = {0};
10/* "Message-ID: <19950926044653.12345.qmail@silverton.berkeley.edu>\n" */
11stralloc newfield_msgid = {0};
12
13static unsigned int datefmt(char *s, datetime_sec when)
14{
15 unsigned int i;
16 unsigned int len;
17 struct datetime dt;
18 datetime_tai(&dt,when);
19 len = 0;
20 i = fmt_str(s,"Date: "); len += i; if (s) s += i;
21 i = date822fmt(s,&dt); len += i; if (s) s += i;
22 return len;
23}
24
25static unsigned int msgidfmt(char *s, char *idhost, int idhostlen, datetime_sec when)
26{
27 unsigned int i;
28 unsigned int len;
29 struct datetime dt;
30 datetime_tai(&dt,when);
31 len = 0;
32 i = fmt_str(s,"Message-ID: <"); len += i; if (s) s += i;
33 i = fmt_uint(s,dt.year + 1900); len += i; if (s) s += i;
34 i = fmt_uint0(s,dt.mon + 1,2); len += i; if (s) s += i;
35 i = fmt_uint0(s,dt.mday,2); len += i; if (s) s += i;
36 i = fmt_uint0(s,dt.hour,2); len += i; if (s) s += i;
37 i = fmt_uint0(s,dt.min,2); len += i; if (s) s += i;
38 i = fmt_uint0(s,dt.sec,2); len += i; if (s) s += i;
39 i = fmt_str(s,"."); len += i; if (s) s += i;
40 i = fmt_uint(s,getpid()); len += i; if (s) s += i;
41 i = fmt_str(s,".qmail@"); len += i; if (s) s += i;
42 i = fmt_strn(s,idhost,idhostlen); len += i; if (s) s += i;
43 i = fmt_str(s,">\n"); len += i; if (s) s += i;
44 return len;
45}
46
48{
49 if (!stralloc_ready(&newfield_date,datefmt(FMT_LEN,when))) return 0;
50 newfield_date.len = datefmt(newfield_date.s,when);
51 return 1;
52}
53
54int newfield_msgidmake(char *idhost, int idhostlen, datetime_sec when)
55{
56 if (!stralloc_ready(&newfield_msgid,msgidfmt(FMT_LEN,idhost,idhostlen,when))) return 0;
57 newfield_msgid.len = msgidfmt(newfield_msgid.s,idhost,idhostlen,when);
58 return 1;
59}
unsigned int date822fmt(char *s, struct datetime *dt)
Definition: date822fmt.c:9
long datetime_sec
Definition: datetime.h:15
void datetime_tai()
stralloc newfield_msgid
Definition: newfield.c:11
stralloc newfield_date
Definition: newfield.c:9
int newfield_datemake()
int newfield_msgidmake()
struct datetime dt
Definition: qmail-queue.c:33
int hour
Definition: datetime.h:5
int mon
Definition: datetime.h:11
int min
Definition: datetime.h:6
int mday
Definition: datetime.h:9
int sec
Definition: datetime.h:7
int year
Definition: datetime.h:12