Hi Jeff, Jeff King wrote: > When we pull the user's name from the GECOS field of the > passwd file (or generate an email address based on their > username and hostname), we put the result into a > static buffer. [...] > The conversion is mostly mechanical: replace string copies > with strbuf equivalents, and access the strbuf.buf directly. > There are a few exceptions: This broke /etc/mailname handling. Before: $ git var GIT_COMMITTER_IDENT Jonathan Nieder <jrn@xxxxxxxxxxxxxxxxxxxx> 1359069165 -0800 After: $ git var GIT_COMMITTER_IDENT Jonathan Nieder <mailname.example.com> 1359069192 -0800 The cause: [...] > --- a/ident.c > +++ b/ident.c > @@ -19,42 +18,27 @@ int user_ident_explicitly_given; [...] > -static int add_mailname_host(char *buf, size_t len) > +static int add_mailname_host(struct strbuf *buf) > { > FILE *mailname; > > @@ -65,7 +49,7 @@ static int add_mailname_host(char *buf, size_t len) > strerror(errno)); > return -1; > } > - if (!fgets(buf, len, mailname)) { > + if (strbuf_getline(buf, mailname, '\n') == EOF) { This clears the strbuf. How about something like this as a quick fix? Reported-by: Mihai Rusu <dizzy@xxxxxxxxxx> Signed-off-by: Jonathan Nieder <jrnieder@xxxxxxxxx> diff --git a/ident.c b/ident.c index 73a06a1..cabd73f 100644 --- 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; } -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html