From 62c1f6b4afc68f6448d5ce94b00380405aa101eb Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Sun, 1 May 2005 21:42:53 -0700 Subject: [PATCH] Get AUTHOR_DATE from the email Date: line Now that git does pretty reliable date parsing, we might as well get the date from the email itself. Of course, it's still questionable whether the date on the email is all that relevant, but it's certainly no worse than taking the commit date. --- applypatch | 1 + mailinfo.c | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/applypatch b/applypatch index 97274a158..500720171 100755 --- a/applypatch +++ b/applypatch @@ -26,6 +26,7 @@ EDIT=${EDIT:-vi} export AUTHOR_NAME="$(sed -n '/^Author/ s/Author: //p' .dotest/info)" export AUTHOR_EMAIL="$(sed -n '/^Email/ s/Email: //p' .dotest/info)" +export AUTHOR_DATE="$(sed -n '/^Date/ s/Date: //p' .dotest/info)" export SUBJECT="$(sed -n '/^Subject/ s/Subject: //p' .dotest/info)" if [ -n "$signoff" -a -f "$signoff" ]; then diff --git a/mailinfo.c b/mailinfo.c index c1dcac130..13c1e951a 100644 --- a/mailinfo.c +++ b/mailinfo.c @@ -10,6 +10,7 @@ static FILE *cmitmsg, *patchfile, *filelist; static char line[1000]; +static char date[1000]; static char name[1000]; static char email[1000]; static char subject[1000]; @@ -78,6 +79,11 @@ static int handle_from(char *line) return 1; } +static void handle_date(char *line) +{ + strcpy(date, line); +} + static void handle_subject(char *line) { strcpy(subject, line); @@ -99,6 +105,11 @@ static void check_line(char *line, int len) cont = 0; return; } + if (!memcmp(line, "Date:", 5) && isspace(line[5])) { + handle_date(line+6); + cont = 0; + return; + } if (!memcmp(line, "Subject:", 8) && isspace(line[8])) { handle_subject(line+9); cont = 1; @@ -107,7 +118,7 @@ static void check_line(char *line, int len) if (isspace(*line)) { switch (cont) { case 0: - fprintf(stderr, "I don't do 'From:' line continuations\n"); + fprintf(stderr, "I don't do 'Date:' or 'From:' line continuations\n"); break; case 1: add_subject_line(line); @@ -213,9 +224,10 @@ static void handle_rest(void) { char *sub = cleanup_subject(subject); cleanup_space(name); + cleanup_space(date); cleanup_space(email); cleanup_space(sub); - printf("Author: %s\nEmail: %s\nSubject: %s\n\n", name, email, sub); + printf("Author: %s\nEmail: %s\nSubject: %s\nDate: %s\n\n", name, email, sub, date); FILE *out = cmitmsg; do { -- 2.26.2