当前位置: 首页>>代码示例>>C++>>正文


C++ cmd_find_session函数代码示例

本文整理汇总了C++中cmd_find_session函数的典型用法代码示例。如果您正苦于以下问题:C++ cmd_find_session函数的具体用法?C++ cmd_find_session怎么用?C++ cmd_find_session使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了cmd_find_session函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: cmd_show_environment_exec

enum cmd_retval
cmd_show_environment_exec(struct cmd *self, struct cmd_q *cmdq)
{
	struct args		*args = self->args;
	struct session		*s;
	struct environ		*env;
	struct environ_entry	*envent;

	if (args_has(self->args, 'g'))
		env = global_environ;
	else {
		s = cmd_find_session(cmdq, args_get(args, 't'), 0);
		if (s == NULL)
			return (CMD_RETURN_ERROR);
		env = s->environ;
	}

	if (args->argc != 0) {
		envent = environ_find(env, args->argv[0]);
		if (envent == NULL) {
			cmdq_error(cmdq, "unknown variable: %s", args->argv[0]);
			return (CMD_RETURN_ERROR);
		}
		cmd_show_environment_print(self, cmdq, envent);
		return (CMD_RETURN_NORMAL);
	}

	envent = environ_first(env);
	while (envent != NULL) {
		cmd_show_environment_print(self, cmdq, envent);
		envent = environ_next(envent);
	}
	return (CMD_RETURN_NORMAL);
}
开发者ID:kylape,项目名称:tmux,代码行数:34,代码来源:cmd-show-environment.c

示例2: cmd_set_buffer_exec

int
cmd_set_buffer_exec(struct cmd *self, struct cmd_ctx *ctx)
{
    struct cmd_buffer_data	*data = self->data;
    struct session		*s;
    u_int			 limit;
    char			*pdata;
    size_t			 psize;

    if ((s = cmd_find_session(ctx, data->target)) == NULL)
        return (-1);
    limit = options_get_number(&s->options, "buffer-limit");

    pdata = xstrdup(data->arg);
    psize = strlen(pdata);

    if (data->buffer == -1) {
        paste_add(&s->buffers, pdata, psize, limit);
        return (0);
    }
    if (paste_replace(&s->buffers, data->buffer, pdata, psize) != 0) {
        ctx->error(ctx, "no buffer %d", data->buffer);
        xfree(pdata);
        return (-1);
    }
    return (0);
}
开发者ID:jnbek,项目名称:tmux,代码行数:27,代码来源:cmd-set-buffer.c

示例3: cmd_detach_client_exec

int
cmd_detach_client_exec(struct cmd *self, struct cmd_ctx *ctx)
{
	struct args	*args = self->args;
	struct client	*c;
	struct session 	*s;
	enum msgtype     msgtype;
	u_int 		 i;

	if (args_has(args, 'P'))
		msgtype = MSG_DETACHKILL;
	else
		msgtype = MSG_DETACH;

	if (args_has(args, 's')) {
		s = cmd_find_session(ctx, args_get(args, 's'), 0);
		if (s == NULL)
			return (-1);

		for (i = 0; i < ARRAY_LENGTH(&clients); i++) {
			c = ARRAY_ITEM(&clients, i);
			if (c != NULL && c->session == s)
				server_write_client(c, msgtype, NULL, 0);
		}
	} else {
		c = cmd_find_client(ctx, args_get(args, 't'));
		if (c == NULL)
			return (-1);

		server_write_client(c, msgtype, NULL, 0);
	}

	return (0);
}
开发者ID:smorin,项目名称:tmux-2,代码行数:34,代码来源:cmd-detach-client.c

示例4: cmd_rename_session_exec

enum cmd_retval
cmd_rename_session_exec(struct cmd *self, struct cmd_q *cmdq)
{
	struct args	*args = self->args;
	struct session	*s;
	const char	*newname;

	newname = args->argv[0];
	if (!session_check_name(newname)) {
		cmdq_error(cmdq, "bad session name: %s", newname);
		return (CMD_RETURN_ERROR);
	}
	if (session_find(newname) != NULL) {
		cmdq_error(cmdq, "duplicate session: %s", newname);
		return (CMD_RETURN_ERROR);
	}

	if ((s = cmd_find_session(cmdq, args_get(args, 't'), 0)) == NULL)
		return (CMD_RETURN_ERROR);

	RB_REMOVE(sessions, &sessions, s);
	free(s->name);
	s->name = xstrdup(newname);
	RB_INSERT(sessions, &sessions, s);

	server_status_session(s);
	notify_session_renamed(s);

	return (CMD_RETURN_NORMAL);
}
开发者ID:Stichting-MINIX-Research-Foundation,项目名称:minix,代码行数:30,代码来源:cmd-rename-session.c

示例5: cmd_rename_session_exec

int
cmd_rename_session_exec(struct cmd *self, struct cmd_ctx *ctx)
{
	struct args	*args = self->args;
	struct session	*s;
	const char	*newname;

	newname = args->argv[0];
	if (!session_check_name(newname)) {
		ctx->error(ctx, "bad session name: %s", newname);
		return (-1);
	}
	if (session_find(newname) != NULL) {
		ctx->error(ctx, "duplicate session: %s", newname);
		return (-1);
	}

	if ((s = cmd_find_session(ctx, args_get(args, 't'), 0)) == NULL)
		return (-1);

	RB_REMOVE(sessions, &sessions, s);
	xfree(s->name);
	s->name = xstrdup(newname);
	RB_INSERT(sessions, &sessions, s);

	server_status_session(s);
	control_notify_session_renamed(s);

	return (0);
}
开发者ID:bholt,项目名称:tmux,代码行数:30,代码来源:cmd-rename-session.c

示例6: cmd_switch_client_exec

int
cmd_switch_client_exec(struct cmd *self, struct cmd_ctx *ctx)
{
	struct cmd_switch_client_data	*data = self->data;
	struct client			*c;
	struct session			*s;

	if (data == NULL)
		return (0);

	if ((c = cmd_find_client(ctx, data->name)) == NULL)
		return (-1);

	if (data->flag_next) {
		if ((s = session_next_session(c->session)) == NULL) {
			ctx->error(ctx, "can't find next session");
			return (-1);
		}
	} else if (data->flag_previous) {
		if ((s = session_previous_session(c->session)) == NULL) {
			ctx->error(ctx, "can't find previous session");
			return (-1);
		}
	} else
		s = cmd_find_session(ctx, data->target);

	if (s == NULL)
		return (-1);
	c->session = s;

	recalculate_sizes();
	server_redraw_client(c);

	return (0);
}
开发者ID:ronin13,项目名称:Tmux,代码行数:35,代码来源:cmd-switch-client.c

示例7: cmd_list_clients_exec

/* ARGSUSED */
int
cmd_list_clients_exec(struct cmd *self, struct cmd_ctx *ctx)
{
	struct args 	*args = self->args;
	struct client	*c;
	struct session  *s;
	u_int		 i;
	const char	*s_utf8;

	if (args_has(args, 't')) {
		s = cmd_find_session(ctx, args_get(args, 't'), 0);
		if (s == NULL)
			return (-1);
	} else
		s = NULL;

	for (i = 0; i < ARRAY_LENGTH(&clients); i++) {
		c = ARRAY_ITEM(&clients, i);
		if (c == NULL || c->session == NULL)
			continue;

		if (c->tty.flags & TTY_UTF8)
			s_utf8 = " (utf8)";
		else
			s_utf8 = "";

		if (s != NULL && s != c->session)
			continue;
		ctx->print(ctx, "%s: %s [%ux%u %s]%s", c->tty.path,
		    c->session->name, c->tty.sx, c->tty.sy,
		    c->tty.termname, s_utf8);
	}

	return (0);
}
开发者ID:ThomasAdam,项目名称:tmux-cvs-archived,代码行数:36,代码来源:cmd-list-clients.c

示例8: cmd_load_buffer_exec

int
cmd_load_buffer_exec(struct cmd *self, struct cmd_ctx *ctx)
{
	struct cmd_buffer_data	*data = self->data;
	struct session		*s;
	FILE			*f;
	char		      	*pdata, *new_pdata;
	size_t			 psize;
	u_int			 limit;
	int			 ch;

	if ((s = cmd_find_session(ctx, data->target)) == NULL)
		return (-1);

	if ((f = fopen(data->arg, "rb")) == NULL) {
		ctx->error(ctx, "%s: %s", data->arg, strerror(errno));
		return (-1);
	}

	pdata = NULL;
	psize = 0;
	while ((ch = getc(f)) != EOF) {
		/* Do not let the server die due to memory exhaustion. */
		if ((new_pdata = realloc(pdata, psize + 2)) == NULL) {
			ctx->error(ctx, "realloc error: %s", strerror(errno));
			goto error;
		}
		pdata = new_pdata;
		pdata[psize++] = ch;
	}
	if (ferror(f)) {
		ctx->error(ctx, "%s: read error", data->arg);
		goto error;
	}
	if (pdata != NULL)
		pdata[psize] = '\0';

	fclose(f);

	limit = options_get_number(&s->options, "buffer-limit");
	if (data->buffer == -1) {
		paste_add(&s->buffers, pdata, psize, limit);
		return (0);
	}
	if (paste_replace(&s->buffers, data->buffer, pdata, psize) != 0) {
		ctx->error(ctx, "no buffer %d", data->buffer);
		goto error;
	}

	return (0);

error:
	if (pdata != NULL)
		xfree(pdata);
	fclose(f);
	return (-1);
}
开发者ID:ThomasAdam,项目名称:tmux-ARCHIVED,代码行数:57,代码来源:cmd-load-buffer.c

示例9: cmd_has_session_exec

int
cmd_has_session_exec(struct cmd *self, struct cmd_ctx *ctx)
{
	struct args	*args = self->args;

	if (cmd_find_session(ctx, args_get(args, 't'), 0) == NULL)
		return (-1);

	return (0);
}
开发者ID:ThomasAdam,项目名称:tmux-cvs-archived,代码行数:10,代码来源:cmd-has-session.c

示例10: cmd_has_session_exec

int
cmd_has_session_exec(struct cmd *self, struct cmd_ctx *ctx)
{
	struct cmd_target_data	*data = self->data;

	if (cmd_find_session(ctx, data->target) == NULL)
		return (-1);

	return (0);
}
开发者ID:ThomasAdam,项目名称:tmux-ARCHIVED,代码行数:10,代码来源:cmd-has-session.c

示例11: cmd_has_session_exec

enum cmd_retval
cmd_has_session_exec(struct cmd *self, struct cmd_ctx *ctx)
{
	struct args	*args = self->args;

	if (cmd_find_session(ctx, args_get(args, 't'), 0) == NULL)
		return (CMD_RETURN_ERROR);

	return (CMD_RETURN_NORMAL);
}
开发者ID:HonestQiao,项目名称:tmux,代码行数:10,代码来源:cmd-has-session.c

示例12: cmd_switch_client_exec

int
cmd_switch_client_exec(struct cmd *self, struct cmd_ctx *ctx)
{
	struct args	*args = self->args;
	struct client	*c;
	struct session	*s;

	if ((c = cmd_find_client(ctx, args_get(args, 'c'))) == NULL)
		return (-1);

	if (args_has(args, 'r')) {
		if (c->flags & CLIENT_READONLY) {
			c->flags &= ~CLIENT_READONLY;
			ctx->info(ctx, "made client writable");
		} else {
			c->flags |= CLIENT_READONLY;
			ctx->info(ctx, "made client read-only");
		}
	}

	s = NULL;
	if (args_has(args, 'n')) {
		if ((s = session_next_session(c->session)) == NULL) {
			ctx->error(ctx, "can't find next session");
			return (-1);
		}
	} else if (args_has(args, 'p')) {
		if ((s = session_previous_session(c->session)) == NULL) {
			ctx->error(ctx, "can't find previous session");
			return (-1);
		}
	} else if (args_has(args, 'l')) {
		if (c->last_session != NULL && session_alive(c->last_session))
			s = c->last_session;
		if (s == NULL) {
			ctx->error(ctx, "can't find last session");
			return (-1);
		}
	} else
		s = cmd_find_session(ctx, args_get(args, 't'), 0);
	if (s == NULL)
		return (-1);

	if (c->session != NULL)
		c->last_session = c->session;
	c->session = s;
	session_update_activity(s);

	recalculate_sizes();
	server_check_unattached();
	server_redraw_client(c);
	s->curw->flags &= ~WINLINK_ALERTFLAGS;

	return (0);
}
开发者ID:ThomasAdam,项目名称:tmux-ARCHIVED,代码行数:55,代码来源:cmd-switch-client.c

示例13: cmd_copy_buffer_exec

int
cmd_copy_buffer_exec(struct cmd *self, struct cmd_ctx *ctx)
{
    struct cmd_copy_buffer_data	*data = self->data;
    struct paste_buffer		*pb;
    struct paste_stack		*dst_ps, *src_ps;
    u_char				*pdata;
    struct session			*dst_session, *src_session;
    u_int				 limit;

    if ((dst_session = cmd_find_session(ctx, data->dst_session)) == NULL ||
            (src_session = cmd_find_session(ctx, data->src_session)) == NULL)
        return (-1);
    dst_ps = &dst_session->buffers;
    src_ps = &src_session->buffers;

    if (data->src_idx == -1) {
        if ((pb = paste_get_top(src_ps)) == NULL) {
            ctx->error(ctx, "no buffers");
            return (-1);
        }
    } else {
        if ((pb = paste_get_index(src_ps, data->src_idx)) == NULL) {
            ctx->error(ctx, "no buffer %d", data->src_idx);
            return (-1);
        }
    }
    limit = options_get_number(&dst_session->options, "buffer-limit");

    pdata = xmalloc(pb->size);
    memcpy(pdata, pb->data, pb->size);

    if (data->dst_idx == -1)
        paste_add(dst_ps, pdata, pb->size, limit);
    else if (paste_replace(dst_ps, data->dst_idx, pdata, pb->size) != 0) {
        ctx->error(ctx, "no buffer %d", data->dst_idx);
        xfree(pdata);
        return (-1);
    }

    return (0);
}
开发者ID:jnbek,项目名称:tmux,代码行数:42,代码来源:cmd-copy-buffer.c

示例14: cmd_set_option_user

/* Set user option. */
enum cmd_retval
cmd_set_option_user(struct cmd *self, struct cmd_ctx *ctx, const char* optstr,
    const char *valstr)
{
	struct args	*args = self->args;
	struct session	*s;
	struct winlink	*wl;
	struct options	*oo;

	if (args_has(args, 's'))
		oo = &global_options;
	else if (args_has(self->args, 'w') ||
	    self->entry == &cmd_set_window_option_entry) {
		if (args_has(self->args, 'g'))
			oo = &global_w_options;
		else {
			wl = cmd_find_window(ctx, args_get(args, 't'), NULL);
			if (wl == NULL)
				return (CMD_RETURN_ERROR);
			oo = &wl->window->options;
		}
	} else {
		if (args_has(self->args, 'g'))
			oo = &global_s_options;
		else {
			s = cmd_find_session(ctx, args_get(args, 't'), 0);
			if (s == NULL)
				return (CMD_RETURN_ERROR);
			oo = &s->options;
		}
	}

	if (args_has(args, 'u')) {
		if (options_find1(oo, optstr) == NULL) {
			ctx->error(ctx, "unknown option: %s", optstr);
			return (CMD_RETURN_ERROR);
		}
		if (valstr != NULL) {
			ctx->error(ctx, "value passed to unset option: %s",
			    optstr);
			return (CMD_RETURN_ERROR);
		}
		options_remove(oo, optstr);
	} else {
		if (valstr == NULL) {
			ctx->error(ctx, "empty value");
			return (CMD_RETURN_ERROR);
		}
		options_set_string(oo, optstr, "%s", valstr);
		if (!args_has(args, 'q'))
			ctx->info(ctx, "set option: %s -> %s", optstr, valstr);
	}
	return (CMD_RETURN_NORMAL);
}
开发者ID:akracun,项目名称:tmux,代码行数:55,代码来源:cmd-set-option.c

示例15: cmd_select_window_exec

int
cmd_select_window_exec(struct cmd *self, struct cmd_ctx *ctx)
{
	struct args	*args = self->args;
	struct winlink	*wl;
	struct session	*s;
	int		 next, previous, last, activity;

	next = self->entry == &cmd_next_window_entry;
	if (args_has(self->args, 'n'))
		next = 1;
	previous = self->entry == &cmd_previous_window_entry;
	if (args_has(self->args, 'p'))
		previous = 1;
	last = self->entry == &cmd_last_window_entry;
	if (args_has(self->args, 'l'))
		last = 1;

	if (next || previous || last) {
		s = cmd_find_session(ctx, args_get(args, 't'), 0);
		if (s == NULL)
			return (-1);

		activity = args_has(self->args, 'a');
		if (next) {
			if (session_next(s, activity) != 0) {
				ctx->error(ctx, "no next window");
				return (-1);
			}
		} else if (previous) {
			if (session_previous(s, activity) != 0) {
				ctx->error(ctx, "no previous window");
				return (-1);
			}
		} else {
			if (session_last(s) != 0) {
				ctx->error(ctx, "no last window");
				return (-1);
			}
		}

		server_redraw_session(s);
	} else {
		wl = cmd_find_window(ctx, args_get(args, 't'), &s);
		if (wl == NULL)
			return (-1);

		if (session_select(s, wl->idx) == 0)
			server_redraw_session(s);
	}
	recalculate_sizes();

	return (0);
}
开发者ID:ThomasAdam,项目名称:tmux-ARCHIVED,代码行数:54,代码来源:cmd-select-window.c


注:本文中的cmd_find_session函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。