Lines 11-21
Link Here
|
11 |
Prototype void RunJob(CronFile *file, CronLine *line); |
11 |
Prototype void RunJob(CronFile *file, CronLine *line); |
12 |
Prototype void EndJob(CronFile *file, CronLine *line); |
12 |
Prototype void EndJob(CronFile *file, CronLine *line); |
13 |
|
13 |
|
|
|
14 |
void |
15 |
maildate(char *date, int len) |
16 |
{ |
17 |
char days[7][4] = {"Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"}; |
18 |
char months[12][4] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", |
19 |
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}; |
20 |
time_t now = time(NULL); |
21 |
/* |
22 |
* Use GMT for simplicity |
23 |
*/ |
24 |
struct tm nowbr = *gmtime(&now); |
25 |
/* |
26 |
* RFC2822 compliant date format |
27 |
*/ |
28 |
snprintf(date, len, "%s, %d %s %d %02d:%02d:%02d +0000", |
29 |
days[nowbr.tm_wday], |
30 |
nowbr.tm_mday, |
31 |
months[nowbr.tm_mon], |
32 |
nowbr.tm_year+1900, |
33 |
nowbr.tm_hour, |
34 |
nowbr.tm_min, |
35 |
nowbr.tm_sec |
36 |
); |
37 |
} |
38 |
|
14 |
void |
39 |
void |
15 |
RunJob(CronFile *file, CronLine *line) |
40 |
RunJob(CronFile *file, CronLine *line) |
16 |
{ |
41 |
{ |
17 |
char mailFile[128]; |
42 |
char mailFile[128]; |
18 |
int mailFd; |
43 |
int mailFd; |
|
|
44 |
char date[128]; |
19 |
|
45 |
|
20 |
line->cl_Pid = 0; |
46 |
line->cl_Pid = 0; |
21 |
line->cl_MailFlag = 0; |
47 |
line->cl_MailFlag = 0; |
Lines 30-37
Link Here
|
30 |
|
56 |
|
31 |
if (mailFd >= 0) { |
57 |
if (mailFd >= 0) { |
32 |
line->cl_MailFlag = 1; |
58 |
line->cl_MailFlag = 1; |
33 |
fdprintf(mailFd, "To: %s\nSubject: cron: %s\n\n", |
59 |
/* |
|
|
60 |
* RFC2822 compliant mail header |
61 |
*/ |
62 |
maildate(date, sizeof(date)); |
63 |
fdprintf(mailFd, "To: %s@localhost\nFrom: %s@localhost\nDate: %s\nSubject: cron: %s\n\n", |
64 |
file->cf_UserName, |
34 |
file->cf_UserName, |
65 |
file->cf_UserName, |
|
|
66 |
date, |
35 |
line->cl_Shell |
67 |
line->cl_Shell |
36 |
); |
68 |
); |
37 |
line->cl_MailPos = lseek(mailFd, 0, 1); |
69 |
line->cl_MailPos = lseek(mailFd, 0, 1); |