mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-04 09:26:05 +00:00 
			
		
		
		
	Add a flag to cmd_find_session so that attach-session can prefer
unattached sessions when choosing the most recently used (if -t is not given). Suggested by claudio@.
This commit is contained in:
		@@ -51,7 +51,7 @@ cmd_attach_session_exec(struct cmd *self, struct cmd_ctx *ctx)
 | 
				
			|||||||
		return (-1);
 | 
							return (-1);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if ((s = cmd_find_session(ctx, args_get(args, 't'))) == NULL)
 | 
						if ((s = cmd_find_session(ctx, args_get(args, 't'), 1)) == NULL)
 | 
				
			||||||
		return (-1);
 | 
							return (-1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (ctx->cmdclient == NULL && ctx->curclient == NULL)
 | 
						if (ctx->cmdclient == NULL && ctx->curclient == NULL)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -41,7 +41,7 @@ cmd_has_session_exec(struct cmd *self, struct cmd_ctx *ctx)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
	struct args	*args = self->args;
 | 
						struct args	*args = self->args;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (cmd_find_session(ctx, args_get(args, 't')) == NULL)
 | 
						if (cmd_find_session(ctx, args_get(args, 't'), 0) == NULL)
 | 
				
			||||||
		return (-1);
 | 
							return (-1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return (0);
 | 
						return (0);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -45,7 +45,7 @@ cmd_kill_session_exec(struct cmd *self, struct cmd_ctx *ctx)
 | 
				
			|||||||
	struct args	*args = self->args;
 | 
						struct args	*args = self->args;
 | 
				
			||||||
	struct session	*s;
 | 
						struct session	*s;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if ((s = cmd_find_session(ctx, args_get(args, 't'))) == NULL)
 | 
						if ((s = cmd_find_session(ctx, args_get(args, 't'), 0)) == NULL)
 | 
				
			||||||
		return (-1);
 | 
							return (-1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	server_destroy_session(s);
 | 
						server_destroy_session(s);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -52,7 +52,7 @@ cmd_list_panes_exec(struct cmd *self, struct cmd_ctx *ctx)
 | 
				
			|||||||
	if (args_has(args, 'a'))
 | 
						if (args_has(args, 'a'))
 | 
				
			||||||
		cmd_list_panes_server(ctx);
 | 
							cmd_list_panes_server(ctx);
 | 
				
			||||||
	else if (args_has(args, 's')) {
 | 
						else if (args_has(args, 's')) {
 | 
				
			||||||
		s = cmd_find_session(ctx, args_get(args, 't'));
 | 
							s = cmd_find_session(ctx, args_get(args, 't'), 0);
 | 
				
			||||||
		if (s == NULL)
 | 
							if (s == NULL)
 | 
				
			||||||
			return (-1);
 | 
								return (-1);
 | 
				
			||||||
		cmd_list_panes_session(s, ctx);
 | 
							cmd_list_panes_session(s, ctx);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -50,7 +50,7 @@ cmd_list_windows_exec(struct cmd *self, struct cmd_ctx *ctx)
 | 
				
			|||||||
	if (args_has(args, 'a'))
 | 
						if (args_has(args, 'a'))
 | 
				
			||||||
		cmd_list_windows_server(ctx);
 | 
							cmd_list_windows_server(ctx);
 | 
				
			||||||
	else {
 | 
						else {
 | 
				
			||||||
		s = cmd_find_session(ctx, args_get(args, 't'));
 | 
							s = cmd_find_session(ctx, args_get(args, 't'), 0);
 | 
				
			||||||
		if (s == NULL)
 | 
							if (s == NULL)
 | 
				
			||||||
			return (-1);
 | 
								return (-1);
 | 
				
			||||||
		cmd_list_windows_session(s, ctx);
 | 
							cmd_list_windows_session(s, ctx);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -71,7 +71,7 @@ cmd_lock_server_exec(struct cmd *self, unused struct cmd_ctx *ctx)
 | 
				
			|||||||
	if (self->entry == &cmd_lock_server_entry)
 | 
						if (self->entry == &cmd_lock_server_entry)
 | 
				
			||||||
		server_lock();
 | 
							server_lock();
 | 
				
			||||||
	else if (self->entry == &cmd_lock_session_entry) {
 | 
						else if (self->entry == &cmd_lock_session_entry) {
 | 
				
			||||||
		if ((s = cmd_find_session(ctx, args_get(args, 't'))) == NULL)
 | 
							if ((s = cmd_find_session(ctx, args_get(args, 't'), 0)) == NULL)
 | 
				
			||||||
			return (-1);
 | 
								return (-1);
 | 
				
			||||||
		server_lock_session(s);
 | 
							server_lock_session(s);
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -75,7 +75,7 @@ cmd_new_session_exec(struct cmd *self, struct cmd_ctx *ctx)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	target = args_get(args, 't');
 | 
						target = args_get(args, 't');
 | 
				
			||||||
	if (target != NULL) {
 | 
						if (target != NULL) {
 | 
				
			||||||
		groupwith = cmd_find_session(ctx, target);
 | 
							groupwith = cmd_find_session(ctx, target, 0);
 | 
				
			||||||
		if (groupwith == NULL)
 | 
							if (groupwith == NULL)
 | 
				
			||||||
			return (-1);
 | 
								return (-1);
 | 
				
			||||||
	} else
 | 
						} else
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -51,7 +51,7 @@ cmd_rename_session_exec(struct cmd *self, struct cmd_ctx *ctx)
 | 
				
			|||||||
		return (-1);
 | 
							return (-1);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if ((s = cmd_find_session(ctx, args_get(args, 't'))) == NULL)
 | 
						if ((s = cmd_find_session(ctx, args_get(args, 't'), 0)) == NULL)
 | 
				
			||||||
		return (-1);
 | 
							return (-1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	RB_REMOVE(sessions, &sessions, s);
 | 
						RB_REMOVE(sessions, &sessions, s);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -102,7 +102,7 @@ cmd_select_window_exec(struct cmd *self, struct cmd_ctx *ctx)
 | 
				
			|||||||
		last = 1;
 | 
							last = 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (next || previous || last) {
 | 
						if (next || previous || last) {
 | 
				
			||||||
		s = cmd_find_session(ctx, args_get(args, 't'));
 | 
							s = cmd_find_session(ctx, args_get(args, 't'), 0);
 | 
				
			||||||
		if (s == NULL)
 | 
							if (s == NULL)
 | 
				
			||||||
			return (-1);
 | 
								return (-1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -65,7 +65,7 @@ cmd_set_environment_exec(struct cmd *self, struct cmd_ctx *ctx)
 | 
				
			|||||||
	if (args_has(self->args, 'g'))
 | 
						if (args_has(self->args, 'g'))
 | 
				
			||||||
		env = &global_environ;
 | 
							env = &global_environ;
 | 
				
			||||||
	else {
 | 
						else {
 | 
				
			||||||
		if ((s = cmd_find_session(ctx, args_get(args, 't'))) == NULL)
 | 
							if ((s = cmd_find_session(ctx, args_get(args, 't'), 0)) == NULL)
 | 
				
			||||||
			return (-1);
 | 
								return (-1);
 | 
				
			||||||
		env = &s->environ;
 | 
							env = &s->environ;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -164,7 +164,7 @@ cmd_set_option_exec(struct cmd *self, struct cmd_ctx *ctx)
 | 
				
			|||||||
		if (args_has(self->args, 'g'))
 | 
							if (args_has(self->args, 'g'))
 | 
				
			||||||
			oo = &global_s_options;
 | 
								oo = &global_s_options;
 | 
				
			||||||
		else {
 | 
							else {
 | 
				
			||||||
			s = cmd_find_session(ctx, args_get(args, 't'));
 | 
								s = cmd_find_session(ctx, args_get(args, 't'), 0);
 | 
				
			||||||
			if (s == NULL)
 | 
								if (s == NULL)
 | 
				
			||||||
				return (-1);
 | 
									return (-1);
 | 
				
			||||||
			oo = &s->options;
 | 
								oo = &s->options;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -49,7 +49,7 @@ cmd_show_buffer_exec(struct cmd *self, struct cmd_ctx *ctx)
 | 
				
			|||||||
	size_t			 size, len;
 | 
						size_t			 size, len;
 | 
				
			||||||
	u_int			 width;
 | 
						u_int			 width;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if ((s = cmd_find_session(ctx, NULL)) == NULL)
 | 
						if ((s = cmd_find_session(ctx, NULL, 0)) == NULL)
 | 
				
			||||||
		return (-1);
 | 
							return (-1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!args_has(args, 'b')) {
 | 
						if (!args_has(args, 'b')) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -50,7 +50,7 @@ cmd_show_environment_exec(struct cmd *self, struct cmd_ctx *ctx)
 | 
				
			|||||||
	if (args_has(self->args, 'g'))
 | 
						if (args_has(self->args, 'g'))
 | 
				
			||||||
		env = &global_environ;
 | 
							env = &global_environ;
 | 
				
			||||||
	else {
 | 
						else {
 | 
				
			||||||
		if ((s = cmd_find_session(ctx, args_get(args, 't'))) == NULL)
 | 
							if ((s = cmd_find_session(ctx, args_get(args, 't'), 0)) == NULL)
 | 
				
			||||||
			return (-1);
 | 
								return (-1);
 | 
				
			||||||
		env = &s->environ;
 | 
							env = &s->environ;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -79,7 +79,7 @@ cmd_show_options_exec(struct cmd *self, struct cmd_ctx *ctx)
 | 
				
			|||||||
		if (args_has(self->args, 'g'))
 | 
							if (args_has(self->args, 'g'))
 | 
				
			||||||
			oo = &global_s_options;
 | 
								oo = &global_s_options;
 | 
				
			||||||
		else {
 | 
							else {
 | 
				
			||||||
			s = cmd_find_session(ctx, args_get(args, 't'));
 | 
								s = cmd_find_session(ctx, args_get(args, 't'), 0);
 | 
				
			||||||
			if (s == NULL)
 | 
								if (s == NULL)
 | 
				
			||||||
				return (-1);
 | 
									return (-1);
 | 
				
			||||||
			oo = &s->options;
 | 
								oo = &s->options;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -86,7 +86,7 @@ cmd_switch_client_exec(struct cmd *self, struct cmd_ctx *ctx)
 | 
				
			|||||||
			return (-1);
 | 
								return (-1);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	} else
 | 
						} else
 | 
				
			||||||
		s = cmd_find_session(ctx, args_get(args, 't'));
 | 
							s = cmd_find_session(ctx, args_get(args, 't'), 0);
 | 
				
			||||||
	if (s == NULL)
 | 
						if (s == NULL)
 | 
				
			||||||
		return (-1);
 | 
							return (-1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										32
									
								
								cmd.c
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								cmd.c
									
									
									
									
									
								
							@@ -112,7 +112,7 @@ const struct cmd_entry *cmd_table[] = {
 | 
				
			|||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct session	*cmd_choose_session_list(struct sessionslist *);
 | 
					struct session	*cmd_choose_session_list(struct sessionslist *);
 | 
				
			||||||
struct session	*cmd_choose_session(void);
 | 
					struct session	*cmd_choose_session(int);
 | 
				
			||||||
struct client	*cmd_choose_client(struct clients *);
 | 
					struct client	*cmd_choose_client(struct clients *);
 | 
				
			||||||
struct client	*cmd_lookup_client(const char *);
 | 
					struct client	*cmd_lookup_client(const char *);
 | 
				
			||||||
struct session	*cmd_lookup_session(const char *, int *);
 | 
					struct session	*cmd_lookup_session(const char *, int *);
 | 
				
			||||||
@@ -316,7 +316,7 @@ cmd_print(struct cmd *cmd, char *buf, size_t len)
 | 
				
			|||||||
 * session from all sessions.
 | 
					 * session from all sessions.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
struct session *
 | 
					struct session *
 | 
				
			||||||
cmd_current_session(struct cmd_ctx *ctx)
 | 
					cmd_current_session(struct cmd_ctx *ctx, int prefer_unattached)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct msg_command_data	*data = ctx->msgdata;
 | 
						struct msg_command_data	*data = ctx->msgdata;
 | 
				
			||||||
	struct client		*c = ctx->cmdclient;
 | 
						struct client		*c = ctx->cmdclient;
 | 
				
			||||||
@@ -365,19 +365,25 @@ cmd_current_session(struct cmd_ctx *ctx)
 | 
				
			|||||||
			return (s);
 | 
								return (s);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return (cmd_choose_session());
 | 
						return (cmd_choose_session(prefer_unattached));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Find the most recently used session. */
 | 
					/*
 | 
				
			||||||
 | 
					 * Find the most recently used session, preferring unattached if the flag is
 | 
				
			||||||
 | 
					 * set.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
struct session *
 | 
					struct session *
 | 
				
			||||||
cmd_choose_session(void)
 | 
					cmd_choose_session(int prefer_unattached)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct session	*s, *sbest;
 | 
						struct session	*s, *sbest;
 | 
				
			||||||
	struct timeval	*tv = NULL;
 | 
						struct timeval	*tv = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	sbest = NULL;
 | 
						sbest = NULL;
 | 
				
			||||||
	RB_FOREACH(s, sessions, &sessions) {
 | 
						RB_FOREACH(s, sessions, &sessions) {
 | 
				
			||||||
		if (tv == NULL || timercmp(&s->activity_time, tv, >)) {
 | 
							if (tv == NULL || timercmp(&s->activity_time, tv, >) ||
 | 
				
			||||||
 | 
							    (prefer_unattached &&
 | 
				
			||||||
 | 
							    !(sbest->flags & SESSION_UNATTACHED) &&
 | 
				
			||||||
 | 
							    (s->flags & SESSION_UNATTACHED))) {
 | 
				
			||||||
			sbest = s;
 | 
								sbest = s;
 | 
				
			||||||
			tv = &s->activity_time;
 | 
								tv = &s->activity_time;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -428,7 +434,7 @@ cmd_current_client(struct cmd_ctx *ctx)
 | 
				
			|||||||
	 * No current client set. Find the current session and return the
 | 
						 * No current client set. Find the current session and return the
 | 
				
			||||||
	 * newest of its clients.
 | 
						 * newest of its clients.
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	s = cmd_current_session(ctx);
 | 
						s = cmd_current_session(ctx, 0);
 | 
				
			||||||
	if (s != NULL && !(s->flags & SESSION_UNATTACHED)) {
 | 
						if (s != NULL && !(s->flags & SESSION_UNATTACHED)) {
 | 
				
			||||||
		ARRAY_INIT(&cc);
 | 
							ARRAY_INIT(&cc);
 | 
				
			||||||
		for (i = 0; i < ARRAY_LENGTH(&clients); i++) {
 | 
							for (i = 0; i < ARRAY_LENGTH(&clients); i++) {
 | 
				
			||||||
@@ -671,7 +677,7 @@ cmd_pane_session(struct cmd_ctx *ctx, struct window_pane *wp,
 | 
				
			|||||||
	struct winlink		*wl;
 | 
						struct winlink		*wl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* If this pane is in the current session, return that winlink. */
 | 
						/* If this pane is in the current session, return that winlink. */
 | 
				
			||||||
	s = cmd_current_session(ctx);
 | 
						s = cmd_current_session(ctx, 0);
 | 
				
			||||||
	if (s != NULL) {
 | 
						if (s != NULL) {
 | 
				
			||||||
		wl = winlink_find_by_window(&s->windows, wp->window);
 | 
							wl = winlink_find_by_window(&s->windows, wp->window);
 | 
				
			||||||
		if (wl != NULL) {
 | 
							if (wl != NULL) {
 | 
				
			||||||
@@ -696,7 +702,7 @@ cmd_pane_session(struct cmd_ctx *ctx, struct window_pane *wp,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/* Find the target session or report an error and return NULL. */
 | 
					/* Find the target session or report an error and return NULL. */
 | 
				
			||||||
struct session *
 | 
					struct session *
 | 
				
			||||||
cmd_find_session(struct cmd_ctx *ctx, const char *arg)
 | 
					cmd_find_session(struct cmd_ctx *ctx, const char *arg, int prefer_unattached)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct session		*s;
 | 
						struct session		*s;
 | 
				
			||||||
	struct window_pane	*wp;
 | 
						struct window_pane	*wp;
 | 
				
			||||||
@@ -707,7 +713,7 @@ cmd_find_session(struct cmd_ctx *ctx, const char *arg)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	/* A NULL argument means the current session. */
 | 
						/* A NULL argument means the current session. */
 | 
				
			||||||
	if (arg == NULL)
 | 
						if (arg == NULL)
 | 
				
			||||||
		return (cmd_current_session(ctx));
 | 
							return (cmd_current_session(ctx, prefer_unattached));
 | 
				
			||||||
	tmparg = xstrdup(arg);
 | 
						tmparg = xstrdup(arg);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Lookup as pane id. */
 | 
						/* Lookup as pane id. */
 | 
				
			||||||
@@ -753,7 +759,7 @@ cmd_find_window(struct cmd_ctx *ctx, const char *arg, struct session **sp)
 | 
				
			|||||||
	 * Find the current session. There must always be a current session, if
 | 
						 * Find the current session. There must always be a current session, if
 | 
				
			||||||
	 * it can't be found, report an error.
 | 
						 * it can't be found, report an error.
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	if ((s = cmd_current_session(ctx)) == NULL) {
 | 
						if ((s = cmd_current_session(ctx, 0)) == NULL) {
 | 
				
			||||||
		ctx->error(ctx, "can't establish current session");
 | 
							ctx->error(ctx, "can't establish current session");
 | 
				
			||||||
		return (NULL);
 | 
							return (NULL);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -900,7 +906,7 @@ cmd_find_index(struct cmd_ctx *ctx, const char *arg, struct session **sp)
 | 
				
			|||||||
	 * Find the current session. There must always be a current session, if
 | 
						 * Find the current session. There must always be a current session, if
 | 
				
			||||||
	 * it can't be found, report an error.
 | 
						 * it can't be found, report an error.
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	if ((s = cmd_current_session(ctx)) == NULL) {
 | 
						if ((s = cmd_current_session(ctx, 0)) == NULL) {
 | 
				
			||||||
		ctx->error(ctx, "can't establish current session");
 | 
							ctx->error(ctx, "can't establish current session");
 | 
				
			||||||
		return (-2);
 | 
							return (-2);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -1054,7 +1060,7 @@ cmd_find_pane(struct cmd_ctx *ctx,
 | 
				
			|||||||
	u_int			 idx;
 | 
						u_int			 idx;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Get the current session. */
 | 
						/* Get the current session. */
 | 
				
			||||||
	if ((s = cmd_current_session(ctx)) == NULL) {
 | 
						if ((s = cmd_current_session(ctx, 0)) == NULL) {
 | 
				
			||||||
		ctx->error(ctx, "can't establish current session");
 | 
							ctx->error(ctx, "can't establish current session");
 | 
				
			||||||
		return (NULL);
 | 
							return (NULL);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										11
									
								
								tmux.1
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								tmux.1
									
									
									
									
									
								
							@@ -562,6 +562,17 @@ If no server is started,
 | 
				
			|||||||
.Ic attach-session
 | 
					.Ic attach-session
 | 
				
			||||||
will attempt to start it; this will fail unless sessions are created in the
 | 
					will attempt to start it; this will fail unless sessions are created in the
 | 
				
			||||||
configuration file.
 | 
					configuration file.
 | 
				
			||||||
 | 
					.Pp
 | 
				
			||||||
 | 
					The
 | 
				
			||||||
 | 
					.Ar target-session
 | 
				
			||||||
 | 
					rules for
 | 
				
			||||||
 | 
					.Ic attach-session
 | 
				
			||||||
 | 
					are slightly adjusted: if
 | 
				
			||||||
 | 
					.Nm
 | 
				
			||||||
 | 
					needs to select the most recently used session, it will prefer the most
 | 
				
			||||||
 | 
					recently used
 | 
				
			||||||
 | 
					.Em unattached
 | 
				
			||||||
 | 
					session.
 | 
				
			||||||
.It Xo Ic detach-client
 | 
					.It Xo Ic detach-client
 | 
				
			||||||
.Op Fl P
 | 
					.Op Fl P
 | 
				
			||||||
.Op Fl t Ar target-client
 | 
					.Op Fl t Ar target-client
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										4
									
								
								tmux.h
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								tmux.h
									
									
									
									
									
								
							@@ -1487,10 +1487,10 @@ struct cmd	*cmd_parse(int, char **, char **);
 | 
				
			|||||||
int		 cmd_exec(struct cmd *, struct cmd_ctx *);
 | 
					int		 cmd_exec(struct cmd *, struct cmd_ctx *);
 | 
				
			||||||
void		 cmd_free(struct cmd *);
 | 
					void		 cmd_free(struct cmd *);
 | 
				
			||||||
size_t		 cmd_print(struct cmd *, char *, size_t);
 | 
					size_t		 cmd_print(struct cmd *, char *, size_t);
 | 
				
			||||||
struct session	*cmd_current_session(struct cmd_ctx *);
 | 
					struct session	*cmd_current_session(struct cmd_ctx *, int);
 | 
				
			||||||
struct client	*cmd_current_client(struct cmd_ctx *);
 | 
					struct client	*cmd_current_client(struct cmd_ctx *);
 | 
				
			||||||
struct client	*cmd_find_client(struct cmd_ctx *, const char *);
 | 
					struct client	*cmd_find_client(struct cmd_ctx *, const char *);
 | 
				
			||||||
struct session	*cmd_find_session(struct cmd_ctx *, const char *);
 | 
					struct session	*cmd_find_session(struct cmd_ctx *, const char *, int);
 | 
				
			||||||
struct winlink	*cmd_find_window(
 | 
					struct winlink	*cmd_find_window(
 | 
				
			||||||
		     struct cmd_ctx *, const char *, struct session **);
 | 
							     struct cmd_ctx *, const char *, struct session **);
 | 
				
			||||||
int		 cmd_find_index(
 | 
					int		 cmd_find_index(
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user