X-Git-Url: https://git.saurik.com/cycript.git/blobdiff_plain/674115e8e5e4afdcbb67ef088efb2c88612a8839..fa3c5be836cc074bdc12ba66298764a1da026e48:/Console.cpp?ds=sidebyside diff --git a/Console.cpp b/Console.cpp index d91e6d4..2b68edd 100644 --- a/Console.cpp +++ b/Console.cpp @@ -44,6 +44,8 @@ #endif #include +#include +#include #include #include @@ -58,10 +60,6 @@ #include #include -#include -#include -#include - #include #include "Display.hpp" @@ -240,7 +238,7 @@ static CYExpression *ParseExpression(CYUTF8String code) { static int client_; static char **Complete(const char *word, int start, int end) { - rl_attempted_completion_over = TRUE; + rl_attempted_completion_over = ~0; CYLocalPool pool; @@ -405,7 +403,8 @@ class History { ~History() { if (append_history$ != NULL) { - _syscall(close(_syscall(open(histfile_.c_str(), O_CREAT | O_WRONLY, 0600)))); + int fd(_syscall(open(histfile_.c_str(), O_CREAT | O_WRONLY, 0600))); + _syscall(close(fd)); _assert((*append_history$)(histlines_, histfile_.c_str()) == 0); } else { _assert(write_history(histfile_.c_str()) == 0); @@ -608,14 +607,10 @@ static void Console(CYOptions &options) { void InjectLibrary(pid_t pid); -int Main(int argc, char const * const argv[], char const * const envp[]) { - _aprcall(apr_initialize()); - - apr_pool_t *pool; - apr_pool_create(&pool, NULL); - +int Main(int argc, char * const argv[], char const * const envp[]) { bool tty(isatty(STDIN_FILENO)); bool compile(false); + bool target(false); CYOptions options; append_history$ = (int (*)(int, const char *)) (dlsym(RTLD_DEFAULT, "append_history")); @@ -627,27 +622,35 @@ int Main(int argc, char const * const argv[], char const * const envp[]) { const char *host(NULL); const char *port(NULL); - apr_getopt_t *state; - _aprcall(apr_getopt_init(&state, pool, argc, argv)); + optind = 1; for (;;) { - char opt; - const char *arg; - - apr_status_t status(apr_getopt(state, - "cg:n:" + int option(getopt_long(argc, argv, + "c" + "g:" + "n:" #ifdef CY_ATTACH "p:" #endif "r:" "s" - , &opt, &arg)); + , (const struct option[]) { + {NULL, no_argument, NULL, 'c'}, + {NULL, required_argument, NULL, 'g'}, + {NULL, required_argument, NULL, 'n'}, +#ifdef CY_ATTACH + {NULL, required_argument, NULL, 'p'}, +#endif + {NULL, required_argument, NULL, 'r'}, + {NULL, no_argument, NULL, 's'}, + {0, 0, 0, 0}}, NULL)); - switch (status) { - case APR_EOF: + switch (option) { + case -1: goto getopt; - case APR_BADCH: - case APR_BADARG: + + case ':': + case '?': fprintf(stderr, "usage: cycript [-c]" #ifdef CY_ATTACH @@ -657,21 +660,30 @@ int Main(int argc, char const * const argv[], char const * const envp[]) { " [