[PATCH] provide better committer information to commit-tree.c
authorGreg KH <greg@kroah.com>
Tue, 19 Apr 2005 00:37:32 +0000 (17:37 -0700)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Tue, 19 Apr 2005 00:37:32 +0000 (17:37 -0700)
Here's a small patch to commit-tree.c that does two things:
- allows the committer email address and name to be overridden
by environment variables (if you don't like the environment
variable names I've used (COMMIT_AUTHOR_NAME,
COMMIT_AUTHOR_EMAIL), feel free to change them.)
- provide the proper domainname to the author/committer email
address (otherwise, my address was only showing up as from the
hostname.)

This allows people to set sane values for the commit names and email
addresses, preventing odd, private hostnames and domains from being
exposed to the world.

Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
commit-tree.c
index cbb7d12a8682992584fe9fc717b6f95666b1ab73..71fce3f357f2287acdeb0e6c62122f4b19e677af 100644 (file)
@@ -284,8 +284,8 @@ int main(int argc, char **argv)
        unsigned char tree_sha1[20];
        unsigned char parent_sha1[MAXPARENT][20];
        unsigned char commit_sha1[20];
-       char *gecos, *realgecos;
-       char *email, realemail[1000];
+       char *gecos, *realgecos, *commitgecos;
+       char *email, *commitemail, realemail[1000];
        char date[20], realdate[20];
        char *audate;
        char comment[1000];
@@ -317,20 +317,24 @@ int main(int argc, char **argv)
        memcpy(realemail, pw->pw_name, len);
        realemail[len] = '@';
        gethostname(realemail+len+1, sizeof(realemail)-len-1);
+       strcat(realemail, ".");
+       getdomainname(realemail+strlen(realemail), sizeof(realemail)-strlen(realemail)-1);
        time(&now);
        tm = localtime(&now);
 
        strftime(realdate, sizeof(realdate), "%s %z", tm);
        strcpy(date, realdate);
 
+       commitgecos = getenv("COMMIT_AUTHOR_NAME") ? : realgecos;
+       commitemail = getenv("COMMIT_AUTHOR_EMAIL") ? : realemail;
        gecos = getenv("AUTHOR_NAME") ? : realgecos;
        email = getenv("AUTHOR_EMAIL") ? : realemail;
        audate = getenv("AUTHOR_DATE");
        if (audate)
                parse_rfc2822_date(audate, date, sizeof(date));
 
-       remove_special(gecos); remove_special(realgecos);
-       remove_special(email); remove_special(realemail);
+       remove_special(gecos); remove_special(realgecos); remove_special(commitgecos);
+       remove_special(email); remove_special(realemail); remove_special(commitemail);
 
        init_buffer(&buffer, &size);
        add_buffer(&buffer, &size, "tree %s\n", sha1_to_hex(tree_sha1));
@@ -345,7 +349,7 @@ int main(int argc, char **argv)
 
        /* Person/date information */
        add_buffer(&buffer, &size, "author %s <%s> %s\n", gecos, email, date);
-       add_buffer(&buffer, &size, "committer %s <%s> %s\n\n", realgecos, realemail, realdate);
+       add_buffer(&buffer, &size, "committer %s <%s> %s\n\n", commitgecos, commitemail, realdate);
 
        /* And add the comment */
        while (fgets(comment, sizeof(comment), stdin) != NULL)