changeset 448:2bb0ace27d96

Date: rfc conformance
author mmj
date Wed, 02 Feb 2005 02:00:56 +1100
parents 63b456214cd0
children e9fadd2c7a37
files ChangeLog src/strgen.c
diffstat 2 files changed, 53 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- 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)
--- 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, &lttm);
 	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;
 }