mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-04 00:56:10 +00:00 
			
		
		
		
	Add TMUX_SOCK like TMUX_PATH for the socket directory.
This commit is contained in:
		
							
								
								
									
										37
									
								
								tmux.c
									
									
									
									
									
								
							
							
						
						
									
										37
									
								
								tmux.c
									
									
									
									
									
								
							@@ -180,31 +180,30 @@ expand_paths(const char *s, char ***paths, u_int *n)
 | 
				
			|||||||
static char *
 | 
					static char *
 | 
				
			||||||
make_label(const char *label, char **cause)
 | 
					make_label(const char *label, char **cause)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	char		*base, resolved[PATH_MAX], *path, *s;
 | 
						char		**paths, *path, *base;
 | 
				
			||||||
	struct stat	 sb;
 | 
						u_int		  i, n;
 | 
				
			||||||
	uid_t		 uid;
 | 
						struct stat	  sb;
 | 
				
			||||||
 | 
						uid_t		  uid;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	*cause = NULL;
 | 
						*cause = NULL;
 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (label == NULL)
 | 
						if (label == NULL)
 | 
				
			||||||
		label = "default";
 | 
							label = "default";
 | 
				
			||||||
	uid = getuid();
 | 
						uid = getuid();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if ((s = getenv("TMUX_TMPDIR")) != NULL && *s != '\0')
 | 
						expand_paths(TMUX_SOCK, &paths, &n);
 | 
				
			||||||
		xasprintf(&base, "%s/tmux-%ld", s, (long)uid);
 | 
						if (n == 0) {
 | 
				
			||||||
	else
 | 
							xasprintf(cause, "no suitable socket path");
 | 
				
			||||||
		xasprintf(&base, "%s/tmux-%ld", _PATH_TMP, (long)uid);
 | 
							return (NULL);
 | 
				
			||||||
	if (realpath(base, resolved) == NULL &&
 | 
					 | 
				
			||||||
	    strlcpy(resolved, base, sizeof resolved) >= sizeof resolved) {
 | 
					 | 
				
			||||||
		errno = ERANGE;
 | 
					 | 
				
			||||||
		free(base);
 | 
					 | 
				
			||||||
		goto fail;
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	free(base);
 | 
						path = paths[0]; /* can only have one socket! */
 | 
				
			||||||
 | 
						for (i = 1; i < n; i++)
 | 
				
			||||||
 | 
							free(paths[i]);
 | 
				
			||||||
 | 
						free(paths);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (mkdir(resolved, S_IRWXU) != 0 && errno != EEXIST)
 | 
						xasprintf(&base, "%s/tmux-%ld", path, (long)uid);
 | 
				
			||||||
 | 
						if (mkdir(base, S_IRWXU) != 0 && errno != EEXIST)
 | 
				
			||||||
		goto fail;
 | 
							goto fail;
 | 
				
			||||||
	if (lstat(resolved, &sb) != 0)
 | 
						if (lstat(base, &sb) != 0)
 | 
				
			||||||
		goto fail;
 | 
							goto fail;
 | 
				
			||||||
	if (!S_ISDIR(sb.st_mode)) {
 | 
						if (!S_ISDIR(sb.st_mode)) {
 | 
				
			||||||
		errno = ENOTDIR;
 | 
							errno = ENOTDIR;
 | 
				
			||||||
@@ -214,11 +213,13 @@ make_label(const char *label, char **cause)
 | 
				
			|||||||
		errno = EACCES;
 | 
							errno = EACCES;
 | 
				
			||||||
		goto fail;
 | 
							goto fail;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	xasprintf(&path, "%s/%s", resolved, label);
 | 
						xasprintf(&path, "%s/%s", base, label);
 | 
				
			||||||
 | 
						free(base);
 | 
				
			||||||
	return (path);
 | 
						return (path);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fail:
 | 
					fail:
 | 
				
			||||||
	xasprintf(cause, "error creating %s (%s)", resolved, strerror(errno));
 | 
						xasprintf(cause, "error creating %s (%s)", base, strerror(errno));
 | 
				
			||||||
 | 
						free(base);
 | 
				
			||||||
	return (NULL);
 | 
						return (NULL);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										5
									
								
								tmux.h
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								tmux.h
									
									
									
									
									
								
							@@ -65,10 +65,13 @@ struct winlink;
 | 
				
			|||||||
/* Client-server protocol version. */
 | 
					/* Client-server protocol version. */
 | 
				
			||||||
#define PROTOCOL_VERSION 8
 | 
					#define PROTOCOL_VERSION 8
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Default configuration file. */
 | 
					/* Default configuration files and socket paths. */
 | 
				
			||||||
#ifndef TMUX_CONF
 | 
					#ifndef TMUX_CONF
 | 
				
			||||||
#define TMUX_CONF "/etc/tmux.conf:~/.tmux.conf"
 | 
					#define TMUX_CONF "/etc/tmux.conf:~/.tmux.conf"
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					#ifndef TMUX_SOCK
 | 
				
			||||||
 | 
					#define TMUX_SOCK "$TMUX_TMPDIR:" _PATH_TMP
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Minimum layout cell size, NOT including border lines. */
 | 
					/* Minimum layout cell size, NOT including border lines. */
 | 
				
			||||||
#define PANE_MINIMUM 1
 | 
					#define PANE_MINIMUM 1
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user