MCPcopy Create free account
hub / github.com/davidgiven/fluxengine / adfMount

Function adfMount

dep/adflib/src/adf_disk.c:160–208  ·  view source on GitHub ↗

* adfMount * * */

Source from the content-addressed store, hash-verified

158 *
159 */
160struct Volume* adfMount( struct Device *dev, int nPart, BOOL readOnly )
161{
162 int32_t nBlock;
163 struct bRootBlock root;
164 struct bBootBlock boot;
165 struct Volume* vol;
166
167 if (dev==NULL || nPart >= dev->nVol) {
168 (*adfEnv.eFct)("adfMount : invalid parameter(s)");
169 return NULL;
170 }
171
172 vol = dev->volList[nPart];
173 vol->dev = dev;
174 vol->mounted = TRUE;
175
176/*printf("first=%ld last=%ld root=%ld\n",vol->firstBlock,
177 vol->lastBlock, vol->rootBlock);
178*/
179 if (adfReadBootBlock(vol, &boot)!=RC_OK) {
180 (*adfEnv.wFct)("adfMount : BootBlock invalid");
181 return NULL;
182 }
183
184 vol->dosType = boot.dosType[3];
185 if (isFFS(vol->dosType))
186 vol->datablockSize=512;
187 else
188 vol->datablockSize=488;
189
190 if (dev->readOnly /*|| isDIRCACHE(vol->dosType)*/)
191 vol->readOnly = TRUE;
192 else
193 vol->readOnly = readOnly;
194
195 if (adfReadRootBlock(vol, vol->rootBlock, &root)!=RC_OK) {
196 (*adfEnv.wFct)("adfMount : RootBlock invalid");
197 return NULL;
198 }
199
200 nBlock = vol->lastBlock - vol->firstBlock +1 - 2;
201
202 adfReadBitmap( vol, nBlock, &root );
203 vol->curDirPtr = vol->rootBlock;
204
205/*printf("blockSize=%d\n",vol->blockSize);*/
206
207 return( vol );
208}
209
210
211/*

Callers 1

mountMethod · 0.85

Calls 3

adfReadBootBlockFunction · 0.85
adfReadRootBlockFunction · 0.85
adfReadBitmapFunction · 0.85

Tested by

no test coverage detected