- // Didn't find it in script?
- if(!bFound)
- {
- // Second: Search the variant's exports
- for( i = 0; i < Script->Variant->NFunctions; i ++ )
- {
- if( strcmp( Script->Variant->Functions[i].Name, trueName) == 0 )
- break;
- }
- // Execute!
- if(i < Script->Variant->NFunctions) {
- ret = Script->Variant->Functions[i].Handler( Script, NArguments, Arguments );
- bFound = 1;
- }
- }
-
- // Not in variant exports? Search the language internal ones
- if(!bFound)
- {
- for( i = 0; i < giSpiderScript_NumExports; i ++ )
- {
- if( strcmp( gaSpiderScript_Exports[i].Name, trueName ) == 0 )
- break;
- }
- // Execute!
- if(i < giSpiderScript_NumExports) {
- ret = gaSpiderScript_Exports[i].Handler( Script, NArguments, Arguments );
- bFound = 1;
- }
- }
-
- // Not found?
- if(!bFound)
- {
- fprintf(stderr, "Undefined reference to '%s'\n", trueName);
+ printf("Total Size: "); fflush(stdout);
+ size = AST_WriteScript(NULL, ret->Script);
+ printf("0x%x bytes\n", (unsigned)size);
+
+ fp = fopen(cacheFilename, "wb");
+ if(!fp) return ret;
+
+ data = malloc(size);
+ size = AST_WriteScript(data, ret->Script);
+ fwrite(data, size, 1, fp);
+ free(data);
+ fclose(fp);