X-Git-Url: https://git.saurik.com/cycript.git/blobdiff_plain/4dc2cd21090bbbff96db8ef94d5956fc27c49a3c..35fa52c0744c970af2daa3c494f21bbe55aec536:/Console.cpp diff --git a/Console.cpp b/Console.cpp index a6a1c54..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(); } @@ -332,8 +335,6 @@ static void Console(apr_pool_t *pool, int client) { if (debug) std::cout << code << std::endl; - if (!bypass) - code = "with(Cycript.all){" + code + "}"; Run(client, code, fout, expand); } @@ -371,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")); @@ -418,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; @@ -564,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); @@ -601,20 +605,17 @@ int Main(int argc, char const * const argv[], char const * const envp[]) { } else if (driver.program_ != NULL) if (client != -1) { std::string code(start, end-start); - code = "with(Cycript.all){" + code + "}"; 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) std::cout << code; - else { - code = "with(Cycript.all){" + code + "}"; + else Run(client, code, stdout); - } } }