1
0
mirror of https://github.com/tmux/tmux.git synced 2025-04-22 04:18:47 +00:00

Pass a set of flags into client_init rather than just a start_server

variable. Only one flag now but more to come later.
This commit is contained in:
Nicholas Marriott 2009-07-22 21:58:56 +00:00
parent 5ee84436c8
commit bb14c36a27
2 changed files with 7 additions and 8 deletions

View File

@ -36,7 +36,7 @@
void client_handle_winch(struct client_ctx *); void client_handle_winch(struct client_ctx *);
int int
client_init(char *path, struct client_ctx *cctx, int start_server, int flags) client_init(char *path, struct client_ctx *cctx, int cmdflags, int flags)
{ {
struct sockaddr_un sa; struct sockaddr_un sa;
struct stat sb; struct stat sb;
@ -53,7 +53,7 @@ client_init(char *path, struct client_ctx *cctx, int start_server, int flags)
setproctitle("client (%s)", rpathbuf); setproctitle("client (%s)", rpathbuf);
if (lstat(path, &sb) != 0) { if (lstat(path, &sb) != 0) {
if (start_server && errno == ENOENT) { if (cmdflags & CMD_STARTSERVER && errno == ENOENT) {
if ((cctx->srv_fd = server_start(path)) == -1) if ((cctx->srv_fd = server_start(path)) == -1)
goto start_failed; goto start_failed;
goto server_started; goto server_started;
@ -79,7 +79,7 @@ client_init(char *path, struct client_ctx *cctx, int start_server, int flags)
if (connect( if (connect(
cctx->srv_fd, (struct sockaddr *) &sa, SUN_LEN(&sa)) == -1) { cctx->srv_fd, (struct sockaddr *) &sa, SUN_LEN(&sa)) == -1) {
if (errno == ECONNREFUSED) { if (errno == ECONNREFUSED) {
if (unlink(path) != 0 || !start_server) if (unlink(path) != 0 || !(cmdflags & CMD_STARTSERVER))
goto not_found; goto not_found;
if ((cctx->srv_fd = server_start(path)) == -1) if ((cctx->srv_fd = server_start(path)) == -1)
goto start_failed; goto start_failed;

9
tmux.c
View File

@ -213,7 +213,7 @@ main(int argc, char **argv)
struct passwd *pw; struct passwd *pw;
char *s, *path, *label, *cause, *home, *pass = NULL; char *s, *path, *label, *cause, *home, *pass = NULL;
char cwd[MAXPATHLEN]; char cwd[MAXPATHLEN];
int retcode, opt, flags, unlock, start_server; int retcode, opt, flags, unlock, cmdflags = 0;
unlock = flags = 0; unlock = flags = 0;
label = path = NULL; label = path = NULL;
@ -390,7 +390,7 @@ main(int argc, char **argv)
cmdlist = NULL; cmdlist = NULL;
if ((pass = getpass("Password: ")) == NULL) if ((pass = getpass("Password: ")) == NULL)
exit(1); exit(1);
start_server = 0; cmdflags &= ~CMD_STARTSERVER;
} else { } else {
if (argc == 0) { if (argc == 0) {
cmd = xmalloc(sizeof *cmd); cmd = xmalloc(sizeof *cmd);
@ -407,17 +407,16 @@ main(int argc, char **argv)
exit(1); exit(1);
} }
} }
start_server = 0;
TAILQ_FOREACH(cmd, cmdlist, qentry) { TAILQ_FOREACH(cmd, cmdlist, qentry) {
if (cmd->entry->flags & CMD_STARTSERVER) { if (cmd->entry->flags & CMD_STARTSERVER) {
start_server = 1; cmdflags |= CMD_STARTSERVER;
break; break;
} }
} }
} }
memset(&cctx, 0, sizeof cctx); memset(&cctx, 0, sizeof cctx);
if (client_init(path, &cctx, start_server, flags) != 0) if (client_init(path, &cctx, cmdflags, flags) != 0)
exit(1); exit(1);
xfree(path); xfree(path);