void as3_parse_scheduled(int pass)
{
- scheduled_file_t*s = scheduled;
- scheduled = 0;
- while(s) {
- scheduled_file_t*old = s;
- as3_parse_file_or_array(pass, s->name, s->filename, 0,0);
- s = s->next;
-
- free(old->filename);
- free(old->name);
- old->filename = old->name = 0;
- free(old);
+ //printf("[pass %d] parse scheduled\n", pass);
+
+ while(scheduled) {
+ scheduled_file_t*s = scheduled;
+ scheduled = 0;
+ while(s) {
+ scheduled_file_t*old = s;
+ as3_parse_file_or_array(pass, s->name, s->filename, 0,0);
+ s = s->next;
+
+ free(old->filename);
+ free(old->name);
+ old->filename = old->name = 0;
+ free(old);
+ }
}
if(scheduled_dict) {
dict_destroy(scheduled_dict);
if(!scheduled_dict)
scheduled_dict = dict_new();
- //printf("schedule %s %s\n", name, filename);
-
if(dict_contains(scheduled_dict, filename)) {
return; //already processed
} else {
dict_put(scheduled_dict, filename, 0);
}
+ //printf("[pass %d] schedule %s %s\n", as3_pass, name, filename);
NEW(scheduled_file_t, f);
f->name = strdup(name);
free(fullfilename);
}
-void as3_schedule_package(const char*package)
+void as3_parse_directory(const char*dir)
+{
+ as3_pass=1;
+ as3_schedule_directory(dir);
+ as3_parse_scheduled(1);
+ as3_pass=2;
+ as3_schedule_directory(dir);
+ as3_parse_scheduled(2);
+}
+
+char as3_schedule_directory(const char*dirname)
{
- char*dirname = strdup(package);
- int s=0;
- while(dirname[s]) {
- if(package[s]=='.') dirname[s]='/';
- s++;
- };
char ok=0;
#ifdef HAVE_DIRENT_H
include_dir_t*i = current_include_dirs;
i = i->next;
}
#endif
- if(!ok)
+ return ok;
+}
+
+void as3_schedule_package(const char*package)
+{
+ char*dirname = strdup(package);
+ int s=0;
+ while(dirname[s]) {
+ if(dirname[s]=='.') dirname[s]='/';
+ s++;
+ };
+ if(!as3_schedule_directory(package))
as3_softwarning("Could not find package %s in file system", package);
}