X-Git-Url: https://git.saurik.com/cycript.git/blobdiff_plain/4cf49641600bf5204fce42b168b489ea19fc865a..f33b048af6516bdeff373d3eb709f3d445233dc4:/Application.mm diff --git a/Application.mm b/Application.mm index 31b7a45..46b24ac 100644 --- a/Application.mm +++ b/Application.mm @@ -1,3 +1,42 @@ +/* Cycript - Remove Execution Server and Disassembler + * Copyright (C) 2009 Jay Freeman (saurik) +*/ + +/* Modified BSD License {{{ */ +/* + * Redistribution and use in source and binary + * forms, with or without modification, are permitted + * provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the + * above copyright notice, this list of conditions + * and the following disclaimer. + * 2. Redistributions in binary form must reproduce the + * above copyright notice, this list of conditions + * and the following disclaimer in the documentation + * and/or other materials provided with the + * distribution. + * 3. The name of the author may not be used to endorse + * or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR + * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +/* }}} */ + #define _GNU_SOURCE #include @@ -24,10 +63,12 @@ static jmp_buf ctrlc_; -void sigint(int) { +static void sigint(int) { longjmp(ctrlc_, 1); } +static JSStringRef Result_; + void Run(const char *code, FILE *fout) { _pooled JSStringRef script(JSStringCreateWithUTF8CString(code)); @@ -46,10 +87,12 @@ void Run(const char *code, FILE *fout) { _pooled CYPool pool; const char *json; - json = CYPoolJSONString(pool, context, result, &exception); + json = CYPoolCYONString(pool, context, result, &exception); if (exception != NULL) goto error; + CYSetProperty(context, CYGetGlobalObject(context), Result_, result); + if (fout != NULL) { fputs(json, fout); fputs("\n", fout); @@ -58,7 +101,7 @@ void Run(const char *code, FILE *fout) { _pooled } } -void Console() { +static void Console() { bool bypass(false); bool debug(false); @@ -160,7 +203,7 @@ void Console() { fflush(fout); } -void *Map(const char *path, size_t *psize) { +static void *Map(const char *path, size_t *psize) { int fd; _syscall(fd = open(path, O_RDONLY)); @@ -187,6 +230,8 @@ int main(int argc, const char *argv[]) { script = argv[1]; } + Result_ = CYCopyJSString("_"); + if (script == NULL || strcmp(script, "-") == 0) Console(); else {