{
int infd, outfd;
char *listaddr, *myfrom, *tmp, *subject, *retstr = NULL;
- char *myreplyto, *myto, *str = NULL;
+ char *myreplyto, *myto, *str = NULL, *mydate, *mymsgid;
tmp = concatstr(3, listdir, "/text/", filename);
infd = open(tmp, O_RDONLY);
myfrom = substitute(from, listaddr, tokencount, data);
myto = substitute(to, listaddr, tokencount, data);
+ mydate = gendatestr();
+ mymsgid = genmsgid();
if(replyto) {
myreplyto = substitute(replyto, listaddr, tokencount, data);
return NULL;
}
- str = concatstr(7, "From: ", myfrom, "\nTo: ", myto, "\n", myreplyto,
- subject);
+ str = concatstr(9, "From: ", myfrom, "\nTo: ", myto, "\n", myreplyto,
+ mymsgid, mydate, subject);
if(writen(outfd, str, strlen(str)) < 0) {
log_error(LOG_ARGS, "Could not write std mail");
return retstr;
}
-/* Unused for now, but lets keep it for later
-
char *genmsgid()
{
size_t len = 128;
t = time(NULL);
- snprintf(s, len-1, "<%ld-%x-mlmmj-%x@%x.plonk", t, random_int(),
- random_int(), random_int());
+ snprintf(s, len-1, "<%ld-%x-mlmmj-%x@%x.plonk", (long int)t,
+ random_int(), random_int(), random_int());
retstr = concatstr(3, "Message-ID: ", s, ">\n");
myfree(s);
return retstr;
}
-*/
+
+char *gendatestr()
+{
+ time_t t;
+ struct tm gmttm, lttm;
+ int dayyear;
+ char *timestr;
+
+ /* 6 + 26 + ' ' + timezone which is 5 + '\n\0' == 40 */
+ timestr = (char *)malloc(40);
+ strcpy(timestr, "Date: ");
+ t = time(NULL);
+
+ ctime_r(&t, timestr + 6);
+ localtime_r(&t, <tm);
+ gmtime_r(&t, &gmttm);
+
+ t = (((lttm.tm_hour - gmttm.tm_hour) * 60) +
+ (lttm.tm_min - gmttm.tm_min)) * 60;
+
+ dayyear = lttm.tm_yday - gmttm.tm_yday;
+ if(dayyear) {
+ if (dayyear == -1 || dayyear > 1)
+ t -= 24 * 60 * 60;
+ else
+ t += 24 * 60 * 60;
+ }
+
+ snprintf(timestr+30, 40, " %+05ld\n", ((long int)t)/36);
+
+ return timestr;
+}