#include "../rfxswf.h"
+#define MAX_LOOKUP 1024 // make cross references in dumps
+
struct Action
{
int version;
return 1+4; //int
} else if (type == 8) {
return 1+1; //lookup
- }
+ } else return 1;
break;
}
}
int t;
U8*data;
char* cp;
- if(!prefix)
- prefix="";
+ int entry = 0;
+
+#ifdef MAX_LOOKUP
+
+ char * lookup[MAX_LOOKUP];
+ memset(lookup,0x00,sizeof(lookup));
+
+#endif
+
+ if (!prefix)
+ prefix="";
+
while(atag)
{
U8 poollen = 0;
} break;
case 'c': {
printf(" String:\"%s\"", data);
+#ifdef MAX_LOOKUP
+ if (entry<MAX_LOOKUP)
+ lookup[entry++] = strdup(data);
+#endif
} break;
case 'C': {
poollen = *data;
+ entry = 0;
printf("(%d entries)", poollen);
} break;
case 's': {
printf(" int:%d", *(int*)value);
} else if (type == 8) {
printf(" Lookup:%d", *value);
+#ifdef MAX_LOOKUP
+ if (lookup[*value])
+ printf(" (\"%s\")",lookup[*value]);
+#endif
} else {
printf(" UNKNOWN[%02x]",type);
}
printf("\n");
atag = atag->next;
}
+
+#ifdef MAX_LOOKUP
+ for (t=0;t<MAX_LOOKUP;t++) if (lookup[t]) free(lookup[t]);
+#endif
}
static const char TYPE_URL = 1;
swf_ActionFree(a);
}
if(globalflags) // should go to sterr.
- printf("%s ERROR: unsatisfied handlerflags: %02x", globalflags);
+ printf("ERROR: unsatisfied handlerflags: %02x", globalflags);
} else {
printf(" has action code\n");
}