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; } }
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; }