diff options
author | nicm <nicm> | 2013-10-05 08:12:39 +0000 |
---|---|---|
committer | nicm <nicm> | 2013-10-05 08:12:39 +0000 |
commit | 3d8a8ea0c68d6ab343568559f7d5879170c2e78c (patch) | |
tree | d034a471e907966a47cd38e699d2dc9060bc1cf7 /tmux.c | |
parent | 304ea079d2157b6625c960e0daa817213ba1ffd6 (diff) | |
download | rtmux-3d8a8ea0c68d6ab343568559f7d5879170c2e78c.tar.gz rtmux-3d8a8ea0c68d6ab343568559f7d5879170c2e78c.tar.bz2 rtmux-3d8a8ea0c68d6ab343568559f7d5879170c2e78c.zip |
Use open(".")/fchdir() to save and restore current directory rather than
getcwd()/chdir().
Diffstat (limited to 'tmux.c')
-rw-r--r-- | tmux.c | 12 |
1 files changed, 9 insertions, 3 deletions
@@ -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); } |