- if(t==definedactions) {
- printf("%s (%5d bytes) action: %02x\n", prefix, atag->len, op);
- atag = atag->next;
- continue;
- }
- printf("%s (%5d bytes) action: %s", prefix, atag->len, actions[t].name);
- cp = actions[t].flags;
- data = atag->data;
- if(atag->len) //TODO: check for consistency: should we have a length?
- while(*cp)
- {
- switch(*cp)
- {
- case 'f': {
- printf(" %d", *(U16*)data); //FIXME: le/be
- } break;
- case 'u': {
- printf(" URL:\"%s\"", data);
- } break;
- case 't': {
- printf(" Target:\"%s\"", data);
- } break;
- case 'l': {
- printf(" Label:\"%s\"", data);
- } break;
- case 'c': {
- printf(" Constant Pool:\"%s\"", data);
- } break;
- case 's': {
- printf(" +%d", data);
- } break;
- case 'm': {
-//m: method (byte) url:(0=none, 1=get, 2=datat)/gf2:(1=play)
- printf(" %d", data);
- } break;
- case 'b': {
- printf(" %d", *(U16*)data);
- } break;
- case 'p': {
- U8 type = *data;
- char*value = data+1;
- if(type == 0) {
- printf(" String:\"%s\"", value);
- } else if (type == 1) {
- printf(" Float:\"%f\"", *(float*)value);
- } else if (type == 2) {
- printf(" NULL");
- } else if (type == 4) {
- printf(" register:%d", value);
- } else if (type == 5) {
- printf(" %s", *value?"true":"false");
- } else if (type == 6) {
- printf(" %f", *(double*)value);
- } else if (type == 7) {
- printf(" %d", *(int*)value);
- } else if (type == 8) {
- printf(" Lookup:%d", *value);
- }
- } break;
- }
- data += swf_OpAdvance(*cp, data);
- cp++;
- }
+ if(t==definedactions) {
+ printf("%s (%5d bytes) action: %02x\n", prefix, atag->len, op);
+ atag = atag->next;
+ continue;
+ }
+ printf("%s (%5d bytes) action: %s", prefix, atag->len, actions[t].name);
+ cp = actions[t].flags;
+ data = atag->data;
+ if(atag->len) //TODO: check for consistency: should we have a length?
+ while(*cp)
+ {
+ switch(*cp)
+ {
+ case 'f': {
+ printf(" %d", *(U16*)data); //FIXME: le/be
+ } break;
+ case 'u': {
+ printf(" URL:\"%s\"", data);
+ } break;
+ case 't': {
+ printf(" Target:\"%s\"", data);
+ } break;
+ case 'l': {
+ printf(" Label:\"%s\"", data);
+ } break;
+ case 'c': {
+ printf(" String:\"%s\"", data);
+ } break;
+ case 'C': {
+ poollen = *data;
+ printf("(%d entries)", poollen);
+ } break;
+ case 's': {
+ printf(" +%d", data);
+ } break;
+ case 'm': {
+ //m: method (byte) url:(0=none, 1=get, 2=datat)/gf2:(1=play)
+ printf(" %d", data);
+ } break;
+ case 'b': {
+ printf(" %d", *(U16*)data);
+ } break;
+ case 'p': {
+ U8 type = *data;
+ char*value = data+1;
+ if(type == 0) {
+ printf(" String:\"%s\"", value);
+ } else if (type == 1) {
+ printf(" Float:\"%f\"", *(float*)value);
+ } else if (type == 2) {
+ printf(" NULL");
+ } else if (type == 4) {
+ printf(" register:%d", value);
+ } else if (type == 5) {
+ printf(" %s", *value?"true":"false");
+ } else if (type == 6) {
+ printf(" %f", *(double*)value);
+ } else if (type == 7) {
+ printf(" %d", *(int*)value);
+ } else if (type == 8) {
+ printf(" Lookup:%d", *value);
+ }
+ } break;
+ }
+ data += OpAdvance(*cp, data);
+ if(*cp!='c' || !poollen)
+ cp++;
+ if(poollen)
+ poollen--;
+ }