X-Git-Url: https://git.saurik.com/cycript.git/blobdiff_plain/98ea05a3b0deae271e486d5f3614b05045fc4ad4..3f325e008194e76f2addb53f5522b413305e1f2e:/Console.cpp?ds=sidebyside diff --git a/Console.cpp b/Console.cpp index 5357103..b6bcedf 100644 --- a/Console.cpp +++ b/Console.cpp @@ -39,6 +39,10 @@ #include "cycript.hpp" +#ifdef CY_EXECUTE +#include "JavaScript.hpp" +#endif + #include #include @@ -108,10 +112,9 @@ void Setup(CYDriver &driver, cy::parser &parser) { driver.strict_ = true; } -void Setup(CYOutput &out, CYDriver &driver) { +void Setup(CYOutput &out, CYDriver &driver, CYOptions &options) { out.pretty_ = pretty_; - - CYContext context(driver.pool_); + CYContext context(driver.pool_, options); driver.program_->Replace(context); } @@ -178,7 +181,7 @@ void Run(int client, std::string &code, FILE *fout = NULL, bool expand = false) int (*append_history$)(int, const char *); -static void Console(apr_pool_t *pool, int client) { +static void Console(apr_pool_t *pool, int client, CYOptions &options) { passwd *passwd; if (const char *username = getenv("LOGNAME")) passwd = getpwnam(username); @@ -320,8 +323,8 @@ static void Console(apr_pool_t *pool, int client) { code = command; else { std::ostringstream str; - CYOutput out(str); - Setup(out, driver); + CYOutput out(str, options); + Setup(out, driver, options); out << *driver.program_; code = str.str(); } @@ -369,6 +372,7 @@ void InjectLibrary(pid_t pid); int Main(int argc, char const * const argv[], char const * const envp[]) { bool tty(isatty(STDIN_FILENO)); bool compile(false); + CYOptions options; append_history$ = reinterpret_cast(dlsym(RTLD_DEFAULT, "append_history")); @@ -416,6 +420,8 @@ int Main(int argc, char const * const argv[], char const * const envp[]) { case 'g': if (false); + else if (strcmp(arg, "rename") == 0) + options.verbose_ = true; #if YYDEBUG else if (strcmp(arg, "bison") == 0) bison_ = true; @@ -562,7 +568,7 @@ int Main(int argc, char const * const argv[], char const * const envp[]) { #endif if (script == NULL && tty) - Console(pool, client); + Console(pool, client, options); else { CYDriver driver(script ?: ""); cy::parser parser(driver); @@ -602,8 +608,8 @@ int Main(int argc, char const * const argv[], char const * const envp[]) { Run(client, code, stdout); } else { std::ostringstream str; - CYOutput out(str); - Setup(out, driver); + CYOutput out(str, options); + Setup(out, driver, options); out << *driver.program_; std::string code(str.str()); if (compile)