summaryrefslogtreecommitdiff
path: root/ident.c
diff options
context:
space:
mode:
authorPetr Baudis <pasky@suse.cz>2005-10-21 03:57:39 +0200
committerJunio C Hamano <junkio@cox.net>2005-10-20 22:32:07 -0700
commitadc3dbca1aed4e8b25dd9b77463bbe87f7e86b94 (patch)
treed0c32a64faaf7843d6624882f775e7f66416b5c7 /ident.c
parent4eba0f3763e2f4bbf614c99ae3a5b299e8d61aff (diff)
downloadgit-adc3dbca1aed4e8b25dd9b77463bbe87f7e86b94.tar.gz
Use sensible domain name (the DNS one) when guessing ident information
Currently, the code would use getdomainname() call, which however returns something usually unset and not necessarily related at all to the DNS domain name (it seems to be mostly some scary NIS/YP thing). This patch changes the code to actually use the DNS domain name, which is also what tends to be used in emails, and we aim at emails with our ident code. Signed-off-by: Petr Baudis <pasky@suse.cz> Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'ident.c')
-rw-r--r--ident.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/ident.c b/ident.c
index 06d0e6cbd3..bc89e1d04c 100644
--- a/ident.c
+++ b/ident.c
@@ -8,6 +8,7 @@
#include "cache.h"
#include <pwd.h>
+#include <netdb.h>
static char git_default_date[50];
@@ -64,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));