Documentation: more examples.
[gitweb.git] / ident.c
diff --git a/ident.c b/ident.c
index 7a9f5672ebfa0d3fc4ba72b7b90273b11aeebee4..ac1c27f1998b8245132dced5875e022fe24b93ec 100644 (file)
--- a/ident.c
+++ b/ident.c
@@ -8,8 +8,7 @@
 #include "cache.h"
 
 #include <pwd.h>
-#include <time.h>
-#include <ctype.h>
+#include <netdb.h>
 
 static char git_default_date[50];
 
@@ -66,9 +65,16 @@ int setup_ident(void)
        git_default_email[len++] = '@';
        gethostname(git_default_email + len, sizeof(git_default_email) - len);
        if (!strchr(git_default_email+len, '.')) {
+               struct hostent *he = gethostbyname(git_default_email + len);
+               char *domainname;
+
                len = strlen(git_default_email);
                git_default_email[len++] = '.';
-               getdomainname(git_default_email+len, sizeof(git_default_email)-len);
+               if (he && (domainname = strchr(he->h_name, '.')))
+                       strncpy(git_default_email + len, domainname + 1, sizeof(git_default_email) - len);
+               else
+                       strncpy(git_default_email + len, "(none)", sizeof(git_default_email) - len);
+               git_default_email[sizeof(git_default_email) - 1] = 0;
        }
        /* And set the default date */
        datestamp(git_default_date, sizeof(git_default_date));
@@ -150,7 +156,8 @@ static int copy(char *buf, int size, int offset, const char *src)
        return offset;
 }
 
-char *get_ident(const char *name, const char *email, const char *date_str)
+static const char *get_ident(const char *name, const char *email,
+                            const char *date_str)
 {
        static char buffer[1000];
        char date[50];
@@ -175,12 +182,16 @@ char *get_ident(const char *name, const char *email, const char *date_str)
        return buffer;
 }
 
-char *git_author_info(void)
+const char *git_author_info(void)
 {
-       return get_ident(getenv("GIT_AUTHOR_NAME"), getenv("GIT_AUTHOR_EMAIL"), getenv("GIT_AUTHOR_DATE"));
+       return get_ident(getenv("GIT_AUTHOR_NAME"),
+                        getenv("GIT_AUTHOR_EMAIL"),
+                        getenv("GIT_AUTHOR_DATE"));
 }
 
-char *git_committer_info(void)
+const char *git_committer_info(void)
 {
-       return get_ident(getenv("GIT_COMMITTER_NAME"), getenv("GIT_COMMITTER_EMAIL"), getenv("GIT_COMMITTER_DATE"));
+       return get_ident(getenv("GIT_COMMITTER_NAME"),
+                        getenv("GIT_COMMITTER_EMAIL"),
+                        getenv("GIT_COMMITTER_DATE"));
 }