+}
+
+uchar * combine(uchar*masterdata, int masterlength, char*_slavename, uchar*slavedata, int slavelength, int*newlength)
+{
+ char master_flash = 0;
+ char slave_flash = 0;
+ slavename = _slavename;
+
+ slaveid = -1;
+ slaveframe = -1;
+
+ if(slavename[0] == '#')
+ {
+ slaveid = atoi(&slavename[1]);
+ slavename = 0;
+ }
+ if(config.isframe)
+ {
+ slaveframe = slaveid;
+ slaveid = -1;
+ }
+
+ logf("<debug> move x (%d)", config.movex);
+ logf("<debug> move y (%d)", config.movey);
+ logf("<debug> scale x (%f)", config.scalex);
+ logf("<debug> scale y (%f)", config.scaley);
+ logf("<debug> is frame (%d)", config.isframe);
+
+ memset(masterids, -1, sizeof(masterids));
+
+ if(masterlength < 3)
+ {
+ logf("<fatal> the master file is too small (%d bytes)", masterlength);
+ return 0;
+ }
+ if(slavelength < 3)
+ {
+ logf("<fatal> the slave file is too small (%d bytes)", slavelength);
+ return 0;
+ }
+ if(masterdata[2] == 'S' &&
+ masterdata[1] == 'W' &&
+ masterdata[0] == 'F')
+ {
+ logf("<notice> the master file is flash (swf) format\n");
+ master_flash = 1;
+ }
+ else
+ logf("<notice> the master file is not flash (swf) format!\n");
+
+ if(slavedata[2] == 'S' &&
+ slavedata[1] == 'W' &&
+ slavedata[0] == 'F')
+ {
+ logf("<notice> the slave file is flash (swf) format\n");
+ slave_flash = 1;
+ }
+ else
+ logf("<notice> the slave file is not flash (swf) format!\n");
+
+ if(master_flash && slave_flash) {
+ read_swf(&master, masterdata, masterlength);
+ if(config.cat)
+ return catcombine(masterdata, masterlength, _slavename, slavedata, slavelength, newlength);
+ else
+ return normalcombine(masterdata, masterlength, _slavename, slavedata, slavelength, newlength);