From: mmj Date: Sat, 15 Jan 2005 10:46:24 +0000 (+1100) Subject: Lets add Message-Id: and Date: X-Git-Tag: RELEASE_1_2_0~15 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a0fa32da82718d7a8a27a3dd9020f512c2ed6e7b;p=thirdparty%2Fmlmmj.git Lets add Message-Id: and Date: --- diff --git a/src/prepstdreply.c b/src/prepstdreply.c index 5c401b76..c438fa0d 100644 --- a/src/prepstdreply.c +++ b/src/prepstdreply.c @@ -151,7 +151,7 @@ char *prepstdreply(const char *listdir, const char *filename, const char *from, { 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); @@ -175,6 +175,8 @@ char *prepstdreply(const char *listdir, const char *filename, const char *from, myfrom = substitute(from, listaddr, tokencount, data); myto = substitute(to, listaddr, tokencount, data); + mydate = gendatestr(); + mymsgid = genmsgid(); if(replyto) { myreplyto = substitute(replyto, listaddr, tokencount, data); @@ -200,8 +202,8 @@ char *prepstdreply(const char *listdir, const char *filename, const char *from, 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"); diff --git a/src/strgen.c b/src/strgen.c index 81676e68..96faba0e 100644 --- a/src/strgen.c +++ b/src/strgen.c @@ -219,8 +219,6 @@ char *cleanquotedp(const char *qpstr) return retstr; } -/* Unused for now, but lets keep it for later - char *genmsgid() { size_t len = 128; @@ -229,12 +227,43 @@ char *genmsgid() 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; +}