# HG changeset patch # User mmj # Date 1107270056 -39600 # Node ID 2bb0ace27d96b15ce3394ec16335eea651a6c211 # Parent 63b456214cd06fc7810db44a94e30b4dad77d1d6 Date: rfc conformance diff -r 63b456214cd0 -r 2bb0ace27d96 ChangeLog --- a/ChangeLog Tue Feb 01 20:18:21 2005 +1100 +++ b/ChangeLog Wed Feb 02 02:00:56 2005 +1100 @@ -1,3 +1,4 @@ + o Make the Date: header RFC2822 conformant 1.2.2 o Make mlmmj-send work allthough no subscribers exist o Bring webinterfaces up to speed (Christian Laursen) diff -r 63b456214cd0 -r 2bb0ace27d96 src/strgen.c --- a/src/strgen.c Tue Feb 01 20:18:21 2005 +1100 +++ b/src/strgen.c Wed Feb 02 02:00:56 2005 +1100 @@ -242,13 +242,13 @@ struct tm gmttm, lttm; int dayyear; char *timestr; + const char *weekday = NULL, *month = NULL; /* 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); @@ -263,7 +263,57 @@ t += 24 * 60 * 60; } - snprintf(timestr+30, 40, " %+05ld\n", ((long int)t)/36); + switch(lttm.tm_wday) { + case 0: weekday = "Sun"; + break; + case 1: weekday = "Mon"; + break; + case 2: weekday = "Tue"; + break; + case 3: weekday = "Wed"; + break; + case 4: weekday = "Thu"; + break; + case 5: weekday = "Fri"; + break; + case 6: weekday = "Sat"; + break; + default: + break; + } + switch(lttm.tm_mon) { + case 0: month = "Jan"; + break; + case 1: month = "Feb"; + break; + case 2: month = "Mar"; + break; + case 3: month = "Apr"; + break; + case 4: month = "May"; + break; + case 5: month = "Jun"; + break; + case 6: month = "Jul"; + break; + case 7: month = "Aug"; + break; + case 8: month = "Sep"; + break; + case 9: month = "Oct"; + break; + case 10: month = "Nov"; + break; + case 11: month = "Dec"; + break; + default: + break; + } + + + snprintf(timestr, 40, "Date: %s, %02d %s %d %d:%d:%d %+05d\n", + weekday, lttm.tm_mday, month, lttm.tm_year + 1900, + lttm.tm_hour, lttm.tm_min, lttm.tm_sec, ((int)t)/36); return timestr; }