#include "cache.h"
#include <pwd.h>
+#include <netdb.h>
static char git_default_date[50];
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));
/*
* Copy the rest to the buffer, but avoid the special
- * characters '\n' '<' and '>' that act as delimeters on
+ * characters '\n' '<' and '>' that act as delimiters on
* a identification line
*/
for (i = 0; i < len; i++) {
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];
name = git_default_name;
if (!email)
email = git_default_email;
+
+ if (!*name || !*email)
+ die("empty ident %s <%s> not allowed",
+ name, email);
+
strcpy(date, git_default_date);
if (date_str)
parse_date(date_str, date, sizeof(date));
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"));
}