]> git.saurik.com Git - cycript.git/blobdiff - Console.cpp
Added cyrver to make clean, fixed GC protection for CYJS*, implemented array comprehe...
[cycript.git] / Console.cpp
index fdfc05449ec2c71f41aa71ab64975adfad488557..b3702ca386af74bd734ecf0c8e70566c735b9603 100644 (file)
@@ -218,6 +218,7 @@ static void Console(int socket) {
         else {
             CYDriver driver("");
             cy::parser parser(driver);
         else {
             CYDriver driver("");
             cy::parser parser(driver);
+            //parser.set_debug_level(1);
 
             driver.data_ = command.c_str();
             driver.size_ = command.size();
 
             driver.data_ = command.c_str();
             driver.size_ = command.size();
@@ -301,14 +302,19 @@ static void *Map(const char *path, size_t *psize) {
 int main(int argc, char *argv[]) {
     bool tty(isatty(STDIN_FILENO));
     pid_t pid(_not(pid_t));
 int main(int argc, char *argv[]) {
     bool tty(isatty(STDIN_FILENO));
     pid_t pid(_not(pid_t));
+    bool compile(false);
 
 
-    for (;;) switch (getopt(argc, argv, "p:")) {
+    for (;;) switch (getopt(argc, argv, "cp:")) {
         case -1:
             goto getopt;
         case '?':
         case -1:
             goto getopt;
         case '?':
-            fprintf(stderr, "usage: cycript [-p <pid>] [<script> [<arg>...]]\n");
+            fprintf(stderr, "usage: cycript [-c] [-p <pid>] [<script> [<arg>...]]\n");
             return 1;
 
             return 1;
 
+        case 'c':
+            compile = true;
+        break;
+
         case 'p': {
             size_t size(strlen(optarg));
             char *end;
         case 'p': {
             size_t size(strlen(optarg));
             char *end;
@@ -322,11 +328,16 @@ int main(int argc, char *argv[]) {
 
     const char *script;
 
 
     const char *script;
 
-    if (optind < argc - 1 && pid != _not(pid_t)) {
+    if (pid != _not(pid_t) && optind < argc - 1) {
         fprintf(stderr, "-p cannot set argv\n");
         return 1;
     }
 
         fprintf(stderr, "-p cannot set argv\n");
         return 1;
     }
 
+    if (pid != _not(pid_t) && compile) {
+        fprintf(stderr, "-p conflicts with -c\n");
+        return 1;
+    }
+
     if (optind == argc)
         script = NULL;
     else {
     if (optind == argc)
         script = NULL;
     else {
@@ -398,7 +409,10 @@ int main(int argc, char *argv[]) {
                 std::ostringstream str;
                 driver.source_->Show(str);
                 std::string code(str.str());
                 std::ostringstream str;
                 driver.source_->Show(str);
                 std::string code(str.str());
-                Run(socket, code);
+                if (compile)
+                    std::cout << code;
+                else
+                    Run(socket, code);
             }
     }
 
             }
     }