Exemplo n.º 1
0
int SeamlessChannel_recv(char** line) {
	int size;

	if (*line)
		free(*line);

	*line = malloc(sizeof(char) * VCHANNEL_MAX_LINE);

	size = vchannel_read(*line, VCHANNEL_MAX_LINE);
	if (size < 0) {
		free(*line);
		*line = NULL;
	}

	return size;
}
Exemplo n.º 2
0
static void
process_cmds(void)
{
	char line[VCHANNEL_MAX_LINE];
	int size;

	char *p, *tok1, *tok2, *tok3, *tok4, *tok5, *tok6, *tok7, *tok8;

	while ((size = vchannel_read(line, sizeof(line))) >= 0) {

		p = unescape(line);

		tok1 = get_token(&p);
		tok2 = get_token(&p);
		tok3 = get_token(&p);
		tok4 = get_token(&p);
		tok5 = get_token(&p);
		tok6 = get_token(&p);
		tok7 = get_token(&p);
		tok8 = get_token(&p);

		if (strcmp(tok1, "SYNC") == 0)
			do_sync();
		else if (strcmp(tok1, "STATE") == 0)
			do_state(strtoul(tok2, NULL, 0), long_to_hwnd(strtoul(tok3, NULL,
						0)), strtol(tok4, NULL, 0));
		else if (strcmp(tok1, "POSITION") == 0)
			do_position(strtoul(tok2, NULL, 0), long_to_hwnd(strtoul(tok3, NULL,
						0)), strtol(tok4, NULL, 0), strtol(tok5, NULL, 0),
				strtol(tok6, NULL, 0), strtol(tok7, NULL, 0));
		else if (strcmp(tok1, "ZCHANGE") == 0)
			do_zchange(strtoul(tok2, NULL, 0), long_to_hwnd(strtoul(tok3, NULL,
						0)), long_to_hwnd(strtoul(tok4, NULL, 0)));
		else if (strcmp(tok1, "FOCUS") == 0)
			do_focus(strtoul(tok2, NULL, 0), long_to_hwnd(strtoul(tok3, NULL,
						0)));
		else if (strcmp(tok1, "DESTROY") == 0)
			do_destroy(long_to_hwnd(strtoul(tok3, NULL, 0)));
		else if (strcmp(tok1, "SPAWN") == 0)
			do_spawn(strtoul(tok2, NULL, 0), tok3);
		else if (strcmp(tok1, "PERSISTENT") == 0)
			do_persistent(strtoul(tok2, NULL, 0), strtol(tok3, NULL, 0));

		free(p);
	}
}