mirror of
				https://github.com/tmux/tmux.git
				synced 2025-10-26 12:27:15 +00:00 
			
		
		
		
	Use open(".")/fchdir() to save and restore current directory rather than
getcwd()/chdir().
This commit is contained in:
		
							
								
								
									
										12
									
								
								tmux.c
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								tmux.c
									
									
									
									
									
								
							| @@ -127,16 +127,22 @@ areshell(const char *shell) | |||||||
| const char* | const char* | ||||||
| get_full_path(const char *wd, const char *path) | get_full_path(const char *wd, const char *path) | ||||||
| { | { | ||||||
|  | 	int		fd; | ||||||
| 	static char	newpath[MAXPATHLEN]; | 	static char	newpath[MAXPATHLEN]; | ||||||
| 	char		oldpath[MAXPATHLEN]; |  | ||||||
|  |  | ||||||
| 	if (getcwd(oldpath, sizeof oldpath) == NULL) | 	fd = open(".", O_RDONLY); | ||||||
|  | 	if (fd == -1) | ||||||
| 		return (NULL); | 		return (NULL); | ||||||
|  |  | ||||||
| 	if (chdir(wd) != 0) | 	if (chdir(wd) != 0) | ||||||
| 		return (NULL); | 		return (NULL); | ||||||
| 	if (realpath(path, newpath) != 0) | 	if (realpath(path, newpath) != 0) | ||||||
| 		return (NULL); | 		return (NULL); | ||||||
| 	chdir(oldpath); |  | ||||||
|  | 	if (fchdir(fd) != 0) | ||||||
|  | 		chdir("/"); | ||||||
|  | 	close(fd); | ||||||
|  |  | ||||||
| 	return (newpath); | 	return (newpath); | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 nicm
					nicm