On Mon, Aug 20, 2012 at 7:30 PM, Jeff King <peff@xxxxxxxx> wrote: > On Mon, Aug 20, 2012 at 06:28:57PM -0700, Conley Owens wrote: > >> From f64ba3c908b33a2ea5a5ad1f0e5800af76b82ce9 Mon Sep 17 00:00:00 2001 >> From: Conley Owens <cco3@xxxxxxxxxxx> >> Date: Mon, 20 Aug 2012 18:23:40 -0700 >> Subject: [PATCH] Fallback on getpwuid if envar HOME is unset > > Please drop these lines from the message body; they are redundant with > your email's headers. > > This seems sensible on the surface, but I'm a bit curious: why isn't > $HOME set? And are there any reasons that somebody who has unset HOME > would not want to fallback? For example, running under Apache, HOME is > often unset when calling CGI programs. Would it make sense for us to > look in ~www-data/.gitconfig in that case? I think it might, but perhaps I'm wrong. As another example, upstart strips all the environment variables, so if you run a job as a particular user, that user's .gitconfig will not be read unless HOME is specified. > >> diff --git a/path.c b/path.c >> index 66acd24..60affab 100644 >> --- a/path.c >> +++ b/path.c >> @@ -144,6 +144,11 @@ void home_config_paths(char **global, char **xdg, >> char *file) >> char *to_free = NULL; >> >> if (!home) { >> + struct passwd *pw = xgetpwuid_self(); >> + home = pw->pw_dir; >> + } >> + >> + if (!home) { >> if (global) >> *global = NULL; >> } else { > > If we do go this route, it would probably make sense to wrap this like: > > const char *home_directory(void) > { > const char *dir = getenv("HOME"); > if (!dir) { > struct passwd *pw = xgetpwuid_self(); > dir = pw->pw_dir; > } > return dir; > } > > and then call it consistently everywhere we do getenv("HOME"). You'd > want to double-check that each caller only uses the result for a short > period (unlike getenv, the results of getpwuid will be overwritten at > the next call). > > -Peff -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html