Exemplo n.º 1
0
static void handle_message(struct tmate_decoder *decoder, msgpack_object obj)
{
	struct tmate_unpacker _uk;
	struct tmate_unpacker *uk = &_uk;

	init_unpacker(uk, obj);

	switch (unpack_int(uk)) {
	case TMATE_NOTIFY:		tmate_notify(uk); break;
	case TMATE_CLIENT_PANE_KEY:	tmate_client_pane_key(uk); break;
	case TMATE_CLIENT_RESIZE:	tmate_client_resize(uk); break;
	case TMATE_CLIENT_EXEC_CMD:	tmate_client_exec_cmd(uk); break;
	case TMATE_CLIENT_ENV:		tmate_client_env(uk); break;
	case TMATE_CLIENT_READY:	tmate_client_ready(decoder, uk); break;
	default:			decoder_error();
	}
}
Exemplo n.º 2
0
static void mate_notify_message(struct client *c, int join)
{
	char buf[100];
	int count;
	static int multi_client;

	count = num_clients();
	if (count > 1)
		multi_client = 1;

	if (multi_client)
		sprintf(buf, " -- %d mate%s %sconnected",
			count,
			count == 1 ? " is" : "s are",
			(join || !count) ? "" : "still ");

	tmate_notify("%s mate has %s the session (%s)%s",
		     multi_client ? "A" : "Your",
		     join ? "joined" : "left",
		     c->ip_address,
		     multi_client ? buf : "");
}