/* Quick & (very) Dirty program to extract Data Fork from MacBinary */ #include #include main(int argc, char **argv) { int id, od; long i; char buf[128]; id = open ( argv[1], O_RDONLY ); read(id, buf, 128); buf[2+buf[1]]=0x00; /* Data Fork lenght. Avoid byte sex problems */ i = buf[86] + 256 * ( buf[85] + 256 * ( buf [84] + 256 * buf[83])); od = open ( &buf[2], O_WRONLY | O_CREAT, 0666 ); for ( ; i>0 ; i-=128) write( od, buf, read ( id , buf, i < 128 ? i : 128 )); close(od); close(id); }