]> Pileus Git - ~andy/git/blobdiff - ident.c
Merge branch 'tg/maint-cache-name-compare' into tg/ce-namelen-field
[~andy/git] / ident.c
diff --git a/ident.c b/ident.c
index 8b5080dfe64884dd16ab22fe46068deb46318404..443c0751bd1f63c059649f9f7f9174349cc1d270 100644 (file)
--- a/ident.c
+++ b/ident.c
@@ -205,7 +205,7 @@ int split_ident_line(struct ident_split *split, const char *line, int len)
        if (!split->mail_begin)
                return status;
 
-       for (cp = split->mail_begin - 2; line < cp; cp--)
+       for (cp = split->mail_begin - 2; line <= cp; cp--)
                if (!isspace(*cp)) {
                        split->name_end = cp + 1;
                        break;
@@ -267,7 +267,7 @@ const char *fmt_ident(const char *name, const char *email,
 {
        static struct strbuf ident = STRBUF_INIT;
        char date[50];
-       int error_on_no_name = (flag & IDENT_ERROR_ON_NO_NAME);
+       int strict = (flag & IDENT_STRICT);
        int want_date = !(flag & IDENT_NO_DATE);
        int want_name = !(flag & IDENT_NO_NAME);
 
@@ -279,7 +279,7 @@ const char *fmt_ident(const char *name, const char *email,
        if (want_name && !*name) {
                struct passwd *pw;
 
-               if (error_on_no_name) {
+               if (strict) {
                        if (name == git_default_name.buf)
                                fputs(env_hint, stderr);
                        die("empty ident name (for <%s>) not allowed", email);
@@ -288,6 +288,12 @@ const char *fmt_ident(const char *name, const char *email,
                name = pw->pw_name;
        }
 
+       if (strict && email == git_default_email.buf &&
+           strstr(email, "(none)")) {
+               fputs(env_hint, stderr);
+               die("unable to auto-detect email address (got '%s')", email);
+       }
+
        if (want_date) {
                if (date_str && date_str[0]) {
                        if (parse_date(date_str, date, sizeof(date)) < 0)
@@ -314,7 +320,7 @@ const char *fmt_ident(const char *name, const char *email,
 
 const char *fmt_name(const char *name, const char *email)
 {
-       return fmt_ident(name, email, NULL, IDENT_ERROR_ON_NO_NAME | IDENT_NO_DATE);
+       return fmt_ident(name, email, NULL, IDENT_STRICT | IDENT_NO_DATE);
 }
 
 const char *git_author_info(int flag)