Use open(".")/fchdir() to save and restore current directory rather than

getcwd()/chdir().
pull/1/head
nicm 2013-10-05 08:12:39 +00:00
parent 304ea079d2
commit 3d8a8ea0c6
1 changed files with 9 additions and 3 deletions

12
tmux.c
View File

@ -127,16 +127,22 @@ areshell(const char *shell)
const char*
get_full_path(const char *wd, const char *path)
{
int fd;
static char newpath[MAXPATHLEN];
char oldpath[MAXPATHLEN];
if (getcwd(oldpath, sizeof oldpath) == NULL)
fd = open(".", O_RDONLY);
if (fd == -1)
return (NULL);
if (chdir(wd) != 0)
return (NULL);
if (realpath(path, newpath) != 0)
return (NULL);
chdir(oldpath);
if (fchdir(fd) != 0)
chdir("/");
close(fd);
return (newpath);
}