/* w62.c * * Copyright (C) 1997 W.H. Scholten * (bbcim) */ #include #include #include int w62dfs(char *disk, int verbose) { FILE *fpdisk, *fpdisk2; unsigned char filebyte; char disk1[100], disk2[100]; int i; struct diskimage image; // strcpy(disk1, argv[2]); strcpy(disk1, disk); disk1[strcspn(disk1,".")]=0; strcpy(disk2, disk1); strcat(disk1,".w1"); strcat(disk2,".w2"); image.type=W62_DISK; image.sides=1; image.filename=disk; if (diskimage_sanitycheck(&image, verbose)) return bbcim_errno; fpdisk=fopen(disk,"rb"); /* are there files on image 2? */ fseek(fpdisk,512+DFSentries,SEEK_SET); fread(&filebyte,1,1,fpdisk); if (filebyte) { fpdisk2=fopen(disk2,"wb"); /* MOVE 2 SECTORS DOWN */ for (i=0; i<512; i++) { fseek(fpdisk,512+i,SEEK_SET); fread(&filebyte,1,1,fpdisk); fseek(fpdisk,0+i,SEEK_SET); fwrite(&filebyte,1,1,fpdisk2); } fseek(fpdisk,512,SEEK_SET); for (i=512; i<200*1024; i++) { fread(&filebyte,1,1,fpdisk); if (feof(fpdisk)) break; fwrite(&filebyte,1,1,fpdisk2); } fclose(fpdisk2); } /* NETJES AFSLUITEN */ fclose(fpdisk); rename(disk, disk1); return 0; }