• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++ cmd_find_session函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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



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


示例16: cmd_set_environment_exec

int
cmd_set_environment_exec(struct cmd *self, struct cmd_ctx *ctx)
{
	struct args	*args = self->args;
	struct session	*s;
	struct environ	*env;
	const char	*name, *value;

	name = args->argv[0];
	if (*name == '\0') {
		ctx->error(ctx, "empty variable name");
		return (-1);
	}
	if (strchr(name, '=') != NULL) {
		ctx->error(ctx, "variable name contains =");
		return (-1);
	}

	if (args->argc < 1)
		value = NULL;
	else
		value = args->argv[1];

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

	if (args_has(self->args, 'u')) {
		if (value != NULL) {
			ctx->error(ctx, "can't specify a value with -u");
			return (-1);
		}
		environ_unset(env, name);
	} else if (args_has(self->args, 'r')) {
		if (value != NULL) {
			ctx->error(ctx, "can't specify a value with -r");
			return (-1);
		}
		environ_set(env, name, NULL);
	} else {
		if (value == NULL) {
			ctx->error(ctx, "no value specified");
			return (-1);
		}
		environ_set(env, name, value);
	}

	return (0);
}
开发者ID:Hooman3,项目名称:minix,代码行数:53,代码来源:cmd-set-environment.c


示例17: cmd_kill_session_exec

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

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

	server_destroy_session(s);
	session_destroy(s);

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


示例18: cmd_lock_session_exec

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

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

	server_lock_session(s);
	recalculate_sizes();

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


示例19: cmd_rename_session_exec

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

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

	xfree(s->name);
	s->name = xstrdup(data->arg);

	server_status_session(s);

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


示例20: 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);

	s = NULL;
	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 if (data->flag_last) {
		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, data->target);
	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);

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



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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++ cmd_find_window函数代码示例发布时间:2022-05-30
下一篇:
C++ cmd_find_client函数代码示例发布时间:2022-05-30
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap