#include #include #include #include #include #include char buf[204800]; int write_entry(int image,void *ptr) { off_t o=(image+1)*16; lseek(1,o,SEEK_SET); write(1,ptr,16); } int write_image(int image,void *ptr) { off_t o=(image*204800)+8192; lseek(1,o,SEEK_SET); write(1,ptr,204800); } int main(int argc,char *argv[]) { int image=0; int fd,i; uint8_t entry[16]; char *ptr; bzero(entry,sizeof(entry)); entry[0]=0; entry[1]=1; entry[2]=2; entry[3]=3; lseek(1,0L,SEEK_SET); write(1,entry,16); for (argc--,argv++; argc;argc--,argv++) { bzero(buf,sizeof(buf)); fd=open(*argv,O_RDONLY); read(fd,buf,sizeof(buf)); close(fd); ptr=strstr(*argv,".ssd"); if (ptr) *ptr='\0'; ptr=strstr(*argv,".SSD"); if (ptr) *ptr='\0'; bzero(entry,sizeof(entry)); strncpy(entry,*argv,12); entry[12]=0; entry[13]=0; entry[14]=0; entry[15]=0x0f; write_image(image,buf); write_entry(image,entry); image++; } bzero(buf,sizeof(buf)); for (;image<511;++image) { bzero(entry,sizeof(entry)); entry[15]=0xf0; write_image(image,buf); } }