diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/netrc.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/lib/netrc.c b/lib/netrc.c index a7a710159..7435d94c4 100644 --- a/lib/netrc.c +++ b/lib/netrc.c @@ -76,7 +76,19 @@ int Curl_parsenetrc(const char *host, char *home = curl_getenv("HOME"); /* portable environment reader */ if(home) { home_alloc = TRUE; -#if defined(HAVE_GETPWUID) && defined(HAVE_GETEUID) +#if defined(HAVE_GETPWUID_R) && defined(HAVE_GETEUID) + } + else { + struct passwd pw, *pw_res; + char pwbuf[1024]; + if(!getpwuid_r(geteuid(), &pw, pwbuf, sizeof(pwbuf), &pw_res) + && pw_res) { + home = strdup(pw.pw_dir); + if(!home) + return CURLE_OUT_OF_MEMORY; + home_alloc = TRUE; + } +#elif defined(HAVE_GETPWUID) && defined(HAVE_GETEUID) } else { struct passwd *pw; |