bool PackCom::canPack() { unsigned char buf[128]; fi->readx(buf, sizeof(buf)); if (memcmp(buf,"MZ",2) == 0 || memcmp(buf,"ZM",2) == 0 // .exe || memcmp (buf,"\xff\xff\xff\xff",4) == 0) // .sys return false; if (!fn_has_ext(fi->getName(),"com")) return false; checkAlreadyPacked(buf, sizeof(buf)); if (file_size < 1024) throwCantPack("file is too small"); if (file_size > 0xFF00) throwCantPack("file is too big for dos/com"); return true; }
static const #include "stub/i086-dos16.sys.h" /************************************************************************* // **************************************************************************/ bool PackSys::canPack() { unsigned char buf[128]; fi->readx(buf, sizeof(buf)); if (memcmp (buf,"\xff\xff\xff\xff",4) != 0) return false; if (!fn_has_ext(fi->getName(),"sys")) return false; checkAlreadyPacked(buf, sizeof(buf)); if (file_size < 1024) throwCantPack("file is too small"); if (file_size > 0x10000) throwCantPack("file is too big for dos/sys"); return true; }