Ejemplo n.º 1
0
static int run_remote(int fd, const char *command)
{
	fflush(stdout);

	if (!ctl_send_chars(fd, command, -1)) {
		printf("\r[%sFAIL%s]\n", c(RED, use_colors), c(CLEAR, use_colors));
		return COMMAND_FAILED;
	}

	struct luadebug_user *readline_user = luadebug_user_readline();
	if (!readline_user) {
		printf(": %ls", clear_error());
		printf("\r[%sFAIL%s]\n", c(RED, use_colors), c(CLEAR, use_colors));
	}

	if (check_status(fd, NULL) == COMMAND_SUCCESS) {
		luadebug_user_remote_server(fd, readline_user);
		if (check_error()) {
			message(HAKA_LOG_FATAL, L"debug", clear_error());
			return COMMAND_FAILED;
		}
		return COMMAND_SUCCESS;
	}
	else {
		return COMMAND_FAILED;
	}
}
Ejemplo n.º 2
0
static int run_console(int fd, int argc, char *argv[])
{
	struct lua_state *state;
	struct luadebug_user *user;

	state = lua_state_init();
	if (!state) {
		messagef(HAKA_LOG_FATAL, "hakactl", clear_error());
		return COMMAND_FAILED;
	}

	console_fd = fd;

	lua_pushcfunction(state->L, luaopen_hakactl);
	lua_call(state->L, 0, 1);
	lua_setglobal(state->L, "hakactl");

	if (!initialize_console(state)) {
		messagef(HAKA_LOG_FATAL, "hakactl", clear_error());
		lua_state_close(state);
		return COMMAND_FAILED;
	}

	user = luadebug_user_readline();
	if (!user) {
		messagef(HAKA_LOG_FATAL, "hakactl", clear_error());
		lua_state_close(state);
		return COMMAND_FAILED;
	}

	/* Load Lua console utilities */
	luadebug_interactive_enter(state->L, ">  ", ">> ", NULL, -1, user);
	luadebug_user_release(&user);

	lua_state_close(state);

	return COMMAND_SUCCESS;
}