version 1.8, 2000/09/07 20:27:55 |
version 1.8.2.5, 2001/09/27 00:15:43 |
|
|
RCSID("$OpenBSD$"); |
RCSID("$OpenBSD$"); |
|
|
#include "xmalloc.h" |
#include "xmalloc.h" |
#include "ssh.h" |
#include "log.h" |
|
#include "tildexpand.h" |
|
|
/* |
/* |
* Expands tildes in the file name. Returns data allocated by xmalloc. |
* Expands tildes in the file name. Returns data allocated by xmalloc. |
|
|
tilde_expand_filename(const char *filename, uid_t my_uid) |
tilde_expand_filename(const char *filename, uid_t my_uid) |
{ |
{ |
const char *cp; |
const char *cp; |
unsigned int userlen; |
u_int userlen; |
char *expanded; |
char *expanded; |
struct passwd *pw; |
struct passwd *pw; |
char user[100]; |
char user[100]; |
|
|
if (len > MAXPATHLEN) |
if (len > MAXPATHLEN) |
fatal("Home directory too long (%d > %d", len-1, MAXPATHLEN-1); |
fatal("Home directory too long (%d > %d", len-1, MAXPATHLEN-1); |
expanded = xmalloc(len); |
expanded = xmalloc(len); |
snprintf(expanded, len, "%s/%s", pw->pw_dir, cp + 1); |
snprintf(expanded, len, "%s%s%s", pw->pw_dir, strcmp(pw->pw_dir, "/") ? "/" : "", cp + 1); |
return expanded; |
return expanded; |
} |
} |