}
-static const char au_env[] = "GIT_AUTHOR_NAME";
-static const char co_env[] = "GIT_COMMITTER_NAME";
-static const char env_hint[] =
-"\n*** Environment problem:\n"
-"*** Your name cannot be determined from your system services (gecos).\n"
-"*** You would need to set %s and %s\n"
-"*** environment variables; otherwise you won't be able to perform\n"
-"*** certain operations because of \"empty ident\" errors.\n\n";
-
int setup_ident(void)
{
int len;
/* Get the name ("gecos") */
copy_gecos(pw, git_default_name, sizeof(git_default_name));
- if (!*git_default_name) {
- if (!getenv(au_env) || !getenv(co_env))
- fprintf(stderr, env_hint, au_env, co_env);
- }
-
/* Make up a fake email address (name + '@' + hostname [+ '.' + domainname]) */
len = strlen(pw->pw_name);
if (len > sizeof(git_default_email)/2)
len = strlen(git_default_email);
git_default_email[len++] = '.';
if (he && (domainname = strchr(he->h_name, '.')))
- strncpy(git_default_email + len, domainname + 1, sizeof(git_default_email) - len);
+ safe_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;
+ safe_strncpy(git_default_email + len, "(none)", sizeof(git_default_email) - len);
}
/* And set the default date */
datestamp(git_default_date, sizeof(git_default_date));
return offset;
}
+static const char au_env[] = "GIT_AUTHOR_NAME";
+static const char co_env[] = "GIT_COMMITTER_NAME";
+static const char *env_hint =
+"\n*** Environment problem:\n"
+"*** Your name cannot be determined from your system services (gecos).\n"
+"*** You would need to set %s and %s\n"
+"*** environment variables; otherwise you won't be able to perform\n"
+"*** certain operations because of \"empty ident\" errors.\n"
+"*** Alternatively, you can use user.name configuration variable.\n\n";
+
static const char *get_ident(const char *name, const char *email,
- const char *date_str)
+ const char *date_str, int error_on_no_name)
{
static char buffer[1000];
char date[50];
if (!email)
email = git_default_email;
- if (!*name || !*email)
- die("empty ident %s <%s> not allowed",
- name, email);
+ if (!*name) {
+ if (name == git_default_name && env_hint) {
+ fprintf(stderr, env_hint, au_env, co_env);
+ env_hint = NULL; /* warn only once, for "git-var -l" */
+ }
+ if (error_on_no_name)
+ die("empty ident %s <%s> not allowed", name, email);
+ }
strcpy(date, git_default_date);
if (date_str)
return buffer;
}
-const char *git_author_info(void)
+const char *git_author_info(int error_on_no_name)
{
return get_ident(getenv("GIT_AUTHOR_NAME"),
getenv("GIT_AUTHOR_EMAIL"),
- getenv("GIT_AUTHOR_DATE"));
+ getenv("GIT_AUTHOR_DATE"),
+ error_on_no_name);
}
-const char *git_committer_info(void)
+const char *git_committer_info(int error_on_no_name)
{
return get_ident(getenv("GIT_COMMITTER_NAME"),
getenv("GIT_COMMITTER_EMAIL"),
- getenv("GIT_COMMITTER_DATE"));
+ getenv("GIT_COMMITTER_DATE"),
+ error_on_no_name);
}