* NAME: low->getddr() * DESCRIPTION: read a driver descriptor record */
| 38 | * DESCRIPTION: read a driver descriptor record |
| 39 | */ |
| 40 | int l_getddr(hfsvol *vol, Block0 *ddr) |
| 41 | { |
| 42 | block b; |
| 43 | const byte *ptr = b; |
| 44 | int i; |
| 45 | |
| 46 | if (b_readpb(vol, 0, &b, 1) == -1) |
| 47 | goto fail; |
| 48 | |
| 49 | d_fetchsw(&ptr, &ddr->sbSig); |
| 50 | d_fetchsw(&ptr, &ddr->sbBlkSize); |
| 51 | d_fetchsl(&ptr, &ddr->sbBlkCount); |
| 52 | d_fetchsw(&ptr, &ddr->sbDevType); |
| 53 | d_fetchsw(&ptr, &ddr->sbDevId); |
| 54 | d_fetchsl(&ptr, &ddr->sbData); |
| 55 | d_fetchsw(&ptr, &ddr->sbDrvrCount); |
| 56 | d_fetchsl(&ptr, &ddr->ddBlock); |
| 57 | d_fetchsw(&ptr, &ddr->ddSize); |
| 58 | d_fetchsw(&ptr, &ddr->ddType); |
| 59 | |
| 60 | for (i = 0; i < 243; ++i) |
| 61 | d_fetchsw(&ptr, &ddr->ddPad[i]); |
| 62 | |
| 63 | ASSERT(ptr - b == HFS_BLOCKSZ); |
| 64 | |
| 65 | return 0; |
| 66 | |
| 67 | fail: |
| 68 | return -1; |
| 69 | } |
| 70 | |
| 71 | /* |
| 72 | * NAME: low->putddr() |