as3compile: added -R option, fixed some namespace bugs
[swftools.git] / src / as3compile.c
index f42af26..8810cec 100644 (file)
@@ -38,6 +38,8 @@ static double width = 400;
 static double height = 300;
 static int flashversion = 9;
 static int verbose = 1;
+static char local_with_networking = 0;
+static char local_with_filesystem = 0;
 
 static struct options_t options[] = {
 {"h", "help"},
@@ -48,7 +50,10 @@ static struct options_t options[] = {
 {"X", "width"},
 {"Y", "height"},
 {"r", "rate"},
+{"l", "library"},
+{"I", "include"},
 {"T", "flashversion"},
+{"R", "recurse"},
 {"o", "output"},
 {0,0}
 };
@@ -92,6 +97,28 @@ int args_callback_option(char*name,char*val)
        do_cgi = 1;
        return 0;
     }
+    else if(!strcmp(name, "l")) {
+        as3_import_file(val);
+       return 1;
+    }
+    else if(!strcmp(name, "I")) {
+        as3_add_include_dir(val);
+       return 1;
+    }
+    else if(!strcmp(name, "R")) {
+        as3_set_option("recurse","1");
+       return 0;
+    }
+    else if (!strcmp(name, "N"))
+    {
+       local_with_networking = 1;
+       return 0;
+    }
+    else if (!strcmp(name, "L"))
+    {
+       local_with_filesystem = 1;
+       return 0;
+    }
     else {
         printf("Unknown option: -%s\n", name);
        exit(1);
@@ -115,6 +142,8 @@ void args_callback_usage(char *name)
     printf("-X , --width                   Set target SWF width\n");
     printf("-Y , --height                  Set target SWF width\n");
     printf("-r , --rate                    Set target SWF framerate\n");
+    printf("-l , --library <file>          Include library file <file>\n");
+    printf("-I , --include <dir>           Add include dir <dir>\n");
     printf("-T , --flashversion <num>      Set target SWF flash version to <num>.\n");
     printf("-o , --output <filename>       Set output file to <filename>.\n");
     printf("\n");
@@ -155,8 +184,18 @@ void writeSWF(SWF*swf)
 
 int main (int argc,char ** argv)
 {
+    char buf[512];
+    char*currentdir = getcwd(buf, 512);
+    if(!currentdir) {
+        as3_warning("Could not determine the current directory");
+    } else {
+        as3_add_include_dir(currentdir);
+    }
+    registry_init();
+
     int t;
     processargs(argc, argv);
+    as3_setverbosity(verbose);
 
     if(!filename) {
        args_callback_usage(argv[0]);
@@ -167,16 +206,6 @@ int main (int argc,char ** argv)
         //as3_warning("output name not given, writing to %s", outputname);
     }
 
-    as3_setverbosity(verbose);
-
-    char buf[512];
-    char*currentdir = getcwd(buf, 512);
-    if(!currentdir) {
-        as3_warning("Could not determine the current directory");
-    } else {
-        as3_add_include_dir(currentdir);
-    }
-
     as3_parse_file(filename);
     void*code = as3_getcode();
 
@@ -199,7 +228,6 @@ int main (int argc,char ** argv)
     } else {
         as3_warning("no global public MovieClip subclass");
     }
-
     
     as3_destroy();
 
@@ -207,6 +235,11 @@ int main (int argc,char ** argv)
     tag = swf_InsertTag(tag, ST_END);
 
     swf_FreeABC(code);
+    
+    if(local_with_filesystem)
+        swf.fileAttributes &= ~FILEATTRIBUTE_USENETWORK;
+    if(local_with_networking)
+        swf.fileAttributes |= FILEATTRIBUTE_USENETWORK;
 
     writeSWF(&swf);
     swf_FreeTags(&swf);