Index: ppp/keyfiles.h =================================================================== --- ppp/keyfiles.h (wersja 78) +++ ppp/keyfiles.h (kopia robocza) @@ -31,7 +31,7 @@ #include "ppp.h" -void setUser(char *user); +void setUser(const char *user); int keyfileExists(); int writeKeyFile(); int writeState(); Index: ppp/keyfiles.c =================================================================== --- ppp/keyfiles.c (wersja 78) +++ ppp/keyfiles.c (kopia robocza) @@ -319,14 +319,24 @@ return 1; } -void setUser(char *user) { +void setUser(const char *user) { #ifdef OS_IS_MACOSX strncpy(userhome, "/Users/", 7); + strncat(userhome, user, 120); #endif #ifdef OS_IS_LINUX - strncpy(userhome, "/home/", 6); + const struct passwd *pwent; + + while ((pwent = getpwent()) != NULL) { + if (strcmp(pwent->pw_name, user) == 0) { + strncpy(userhome, pwent->pw_dir, 126); + endpwent(); + return; + } + } + endpwent(); + strcpy(userhome, "/"); /* If user doesn't exists return something more/less sane */ #endif - strncat(userhome, user, 120); } int keyfileExists() {