version 1.104, 2017/05/30 07:05:22 |
version 1.105, 2018/04/13 14:11:37 |
|
|
struct stat statbuf; |
struct stat statbuf; |
const char *cp; |
const char *cp; |
char user[LOGIN_NAME_MAX], path[NFILEN]; |
char user[LOGIN_NAME_MAX], path[NFILEN]; |
char *un, *ret; |
char *ret; |
size_t ulen, plen; |
size_t ulen, plen; |
|
|
path[0] = '\0'; |
path[0] = '\0'; |
|
|
return (NULL); |
return (NULL); |
return(ret); |
return(ret); |
} |
} |
if (ulen == 0) { /* ~/ or ~ */ |
if (ulen == 0) /* ~/ or ~ */ |
if ((un = getlogin()) != NULL) |
pw = getpwuid(geteuid()); |
(void)strlcpy(user, un, sizeof(user)); |
else { /* ~user/ or ~user */ |
else |
|
user[0] = '\0'; |
|
} else { /* ~user/ or ~user */ |
|
memcpy(user, &fn[1], ulen); |
memcpy(user, &fn[1], ulen); |
user[ulen] = '\0'; |
user[ulen] = '\0'; |
|
pw = getpwnam(user); |
} |
} |
pw = getpwnam(user); |
|
if (pw != NULL) { |
if (pw != NULL) { |
plen = strlcpy(path, pw->pw_dir, sizeof(path)); |
plen = strlcpy(path, pw->pw_dir, sizeof(path)); |
if (plen == 0 || path[plen - 1] != '/') { |
if (plen == 0 || path[plen - 1] != '/') { |