ident: do not drop username when reading from /etc/mailname
[gitweb.git] / ident.c
diff --git a/ident.c b/ident.c
index 443c0751bd1f63c059649f9f7f9174349cc1d270..fb4cc722a3aa7859cbf170e0376ac16b445e6cba 100644 (file)
--- a/ident.c
+++ b/ident.c
@@ -41,6 +41,7 @@ static void copy_gecos(const struct passwd *w, struct strbuf *name)
 static int add_mailname_host(struct strbuf *buf)
 {
        FILE *mailname;
+       struct strbuf mailnamebuf = STRBUF_INIT;
 
        mailname = fopen("/etc/mailname", "r");
        if (!mailname) {
@@ -49,14 +50,17 @@ static int add_mailname_host(struct strbuf *buf)
                                strerror(errno));
                return -1;
        }
-       if (strbuf_getline(buf, mailname, '\n') == EOF) {
+       if (strbuf_getline(&mailnamebuf, mailname, '\n') == EOF) {
                if (ferror(mailname))
                        warning("cannot read /etc/mailname: %s",
                                strerror(errno));
+               strbuf_release(&mailnamebuf);
                fclose(mailname);
                return -1;
        }
        /* success! */
+       strbuf_addbuf(buf, &mailnamebuf);
+       strbuf_release(&mailnamebuf);
        fclose(mailname);
        return 0;
 }
@@ -210,8 +214,10 @@ int split_ident_line(struct ident_split *split, const char *line, int len)
                        split->name_end = cp + 1;
                        break;
                }
-       if (!split->name_end)
-               return status;
+       if (!split->name_end) {
+               /* no human readable name */
+               split->name_end = split->name_begin;
+       }
 
        for (cp = split->mail_begin; cp < line + len; cp++)
                if (*cp == '>') {