/* 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]; if ( argc != 2 ) { fprintf(stderr, "Use: %s file.bin\n", argv[0]); exit(1); } if ( -1 != (id = open ( argv[1], O_RDONLY ))) { read(id, buf, 128); buf[2+buf[1]]=0x00; /* Data Fork length. 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); } else perror(argv[1]); }