Re: [PATCH] Fallback on getpwuid if envar HOME is unset

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]