summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 252fef7)
raw | patch | inline | side by side (parent: 252fef7)
author | Junio C Hamano <junkio@cox.net> | |
Thu, 15 Dec 2005 00:31:06 +0000 (16:31 -0800) | ||
committer | Junio C Hamano <junkio@cox.net> | |
Thu, 15 Dec 2005 00:31:06 +0000 (16:31 -0800) |
An isolated developer could have a local-only e-mail, which will
be stripped out by mailinfo because it lacks '@'. Define a
fallback parser to accomodate that.
At the same time, reject authorless patch in git-am.
Signed-off-by: Junio C Hamano <junkio@cox.net>
be stripped out by mailinfo because it lacks '@'. Define a
fallback parser to accomodate that.
At the same time, reject authorless patch in git-am.
Signed-off-by: Junio C Hamano <junkio@cox.net>
git-am.sh | patch | blob | history | |
mailinfo.c | patch | blob | history |
diff --git a/git-am.sh b/git-am.sh
index 343bee9d81e53106226f6f32a75860119ece92cb..1a114bcc0809836ed4edaa0866704b899e587cd2 100755 (executable)
--- a/git-am.sh
+++ b/git-am.sh
GIT_AUTHOR_NAME="$(sed -n '/^Author/ s/Author: //p' "$dotest/info")"
GIT_AUTHOR_EMAIL="$(sed -n '/^Email/ s/Email: //p' "$dotest/info")"
GIT_AUTHOR_DATE="$(sed -n '/^Date/ s/Date: //p' "$dotest/info")"
+
+ if test -z "$GIT_AUTHOR_EMAIL"
+ then
+ echo "Patch does not have a valid e-mail address."
+ stop_here $this
+ fi
+
export GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL GIT_AUTHOR_DATE
SUBJECT="$(sed -n '/^Subject/ s/Subject: //p' "$dotest/info")"
diff --git a/mailinfo.c b/mailinfo.c
index d4b4163628e582185e8a28defe009c75aa62edab..9f95f37651e2ce5a3930051fe875f1c16ede97c2 100644 (file)
--- a/mailinfo.c
+++ b/mailinfo.c
return name;
}
+static int bogus_from(char *line)
+{
+ /* John Doe <johndoe> */
+ char *bra, *ket, *dst, *cp;
+
+ /* This is fallback, so do not bother if we already have an
+ * e-mail address.
+ */
+ if (*email)
+ return 0;
+
+ bra = strchr(line, '<');
+ if (!bra)
+ return 0;
+ ket = strchr(bra, '>');
+ if (!ket)
+ return 0;
+
+ for (dst = email, cp = bra+1; cp < ket; )
+ *dst++ = *cp++;
+ *dst = 0;
+ for (cp = line; isspace(*cp); cp++)
+ ;
+ for (bra--; isspace(*bra); bra--)
+ *bra = 0;
+ cp = sanity_check(cp, email);
+ strcpy(name, cp);
+ return 1;
+}
+
static int handle_from(char *line)
{
char *at = strchr(line, '@');
char *dst;
if (!at)
- return 0;
+ return bogus_from(line);
/*
* If we already have one email, don't take any confusing lines