mirror of
https://github.com/git/git.git
synced 2024-11-24 10:26:17 +08:00
mailinfo and git-am: allow "John Doe <johndoe>"
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>
This commit is contained in:
parent
252fef7149
commit
e0e3ba208d
@ -249,6 +249,13 @@ do
|
||||
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")"
|
||||
|
32
mailinfo.c
32
mailinfo.c
@ -40,13 +40,43 @@ static char *sanity_check(char *name, char *email)
|
||||
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
|
||||
|
Loading…
Reference in New Issue
Block a user