changeset 422:6952423ca1dd

Lets add Message-Id: and Date:
author mmj
date Sat, 15 Jan 2005 21:46:24 +1100
parents 5388b1eb5ca9
children ec509ab83a4c
files src/prepstdreply.c src/strgen.c
diffstat 2 files changed, 39 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/src/prepstdreply.c	Sat Jan 15 21:46:12 2005 +1100
+++ b/src/prepstdreply.c	Sat Jan 15 21:46:24 2005 +1100
@@ -151,7 +151,7 @@
 {
 	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 @@
 	
 	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 @@
 		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");
--- a/src/strgen.c	Sat Jan 15 21:46:12 2005 +1100
+++ b/src/strgen.c	Sat Jan 15 21:46:24 2005 +1100
@@ -219,8 +219,6 @@
 	return retstr;
 }
 
-/* Unused for now, but lets keep it for later
-
 char *genmsgid()
 {
 	size_t len = 128;
@@ -229,12 +227,43 @@
 
 	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, &lttm);
+	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;
+}