/* demacbin.c by Michael Thorpe 2001-01-15 */ #include #define BUF_SIZE 4096 unsigned char buf[BUF_SIZE]; int main(void) { size_t i; FILE *f; unsigned long datalen; i=fread(buf,128,1,stdin); if(i != 1 || buf[1]>63) { fprintf(stderr,"Couldn't read header\n"); return(-1); } buf[2+buf[1]]='\0'; f=fopen(buf+2,"wb"); if(!f) { fprintf(stderr,"Couldn't open output file\n"); return(-1); } datalen=(buf[83]<<24)+(buf[84]<<16)+(buf[85]<<8)+buf[86]; printf("datalen=%lx\n",datalen); while(datalen) { i=fread(buf,1,BUF_SIZE,stdin); if(i<0) { fprintf(stderr,"Couldn't read input file\n"); return(-1); } if(1 != fwrite(buf,i,1,f)) { fprintf(stderr,"Couldn't write output file\n"); return(-1); } datalen-=i; } return(0); }