/* * adfCreateFlop * * create a filesystem on a floppy device * fills dev->volList[] */ RETCODE adfCreateFlop(struct Device* dev, char* volName, int volType ) { if (dev==NULL) { (*adfEnv.eFct)("adfCreateFlop : dev==NULL"); return RC_ERROR; } dev->volList =(struct Volume**) malloc(sizeof(struct Volume*)); if (!dev->volList) { (*adfEnv.eFct)("adfCreateFlop : unknown device type"); return RC_ERROR; } dev->volList[0] = adfCreateVol( dev, 0L, 80L, volName, volType ); if (dev->volList[0]==NULL) { free(dev->volList); return RC_ERROR; } dev->nVol = 1; dev->volList[0]->blockSize = 512; if (dev->sectors==11) dev->devType=DEVTYPE_FLOPDD; else dev->devType=DEVTYPE_FLOPHD; return RC_OK; }
/* * adfCreateHd * * create a filesystem one an harddisk device (partitions==volumes, and the header) * * fills dev->volList[] * */ RETCODE adfCreateHd(struct Device* dev, int n, struct Partition** partList ) { int i, j; /*struct Volume *vol;*/ if (dev==NULL || partList==NULL || n<=0) { (*adfEnv.eFct)("adfCreateHd : illegal parameter(s)"); return RC_ERROR; } dev->volList =(struct Volume**) calloc(1,sizeof(struct Volume*)*n); if (!dev->volList) { (*adfEnv.eFct)("adfCreateFlop : malloc"); return RC_ERROR; } for(i=0; i<n; i++) { dev->volList[i] = adfCreateVol( dev, partList[i]->startCyl, partList[i]->lenCyl, partList[i]->volName, partList[i]->volType, 0); if (dev->volList[i]==NULL) { for(j=0; j<i; j++) { free( dev->volList[i] ); /* pas fini */ } free(dev->volList); (*adfEnv.eFct)("adfCreateHd : adfCreateVol() fails"); } dev->volList[i]->blockSize = 512; } dev->nVol = n; /* vol=dev->volList[0]; printf("0first=%ld last=%ld root=%ld\n",vol->firstBlock, vol->lastBlock, vol->rootBlock); */ if (adfCreateHdHeader(dev, n, partList )!=RC_OK) return RC_ERROR; return RC_OK; }
/* * adfCreateHdFile * */ RETCODE adfCreateHdFile(struct Device* dev, char* volName, int volType) { if (dev==NULL) { (*adfEnv.eFct)("adfCreateHdFile : dev==NULL"); return RC_ERROR; } dev->volList =(struct Volume**) calloc(1,sizeof(struct Volume*)); if (!dev->volList) { (*adfEnv.eFct)("adfCreateHdFile : unknown device type"); return RC_ERROR; } dev->volList[0] = adfCreateVol( dev, 0L, (long)dev->cylinders, volName, volType,0 ); if (dev->volList[0]==NULL) { free(dev->volList); return RC_ERROR; } dev->nVol = 1; dev->devType = DEVTYPE_HARDFILE; return RC_OK; }