if ((dirFlags & kFileTypeMask) != kFileTypeUnknown) return -1;␊ |
}␊ |
␉␊ |
GetCatalogEntry(dirIndex, name, flags, time, finderInfo, infoValid);␊ |
if (GetCatalogEntry(dirIndex, name, flags, time, finderInfo, infoValid) != 0) return -1;␊ |
if (*dirIndex == 0) *dirIndex = -1;␊ |
if ((*flags & kFileTypeMask) == kFileTypeUnknown) return -1;␊ |
␉␊ |
|
␉␊ |
/* Fill some crucial data structures by side effect. */␊ |
dirIndex = 0;␊ |
HFSGetDirEntry(ih, "/", &dirIndex, &name, &flags, &time, 0, 0);␊ |
if (HFSGetDirEntry(ih, "/", &dirIndex, &name, &flags, &time, 0, 0) != 0) return;␊ |
␉␊ |
/* Now we can loook up the volume name node. */␊ |
nodeSize = SWAP_BE16(gBTHeaders[kBTreeCatalog]->nodeSize);␊ |
|
␉␊ |
dirIndex = (long long) firstLeafNode * nodeSize;␊ |
␉␊ |
GetCatalogEntry(&dirIndex, &name, &flags, &time, 0, 0);␊ |
if (GetCatalogEntry(&dirIndex, &name, &flags, &time, 0, 0) != 0) return;␊ |
␉␊ |
strncpy(str, name, strMaxLen);␊ |
str[strMaxLen] = '\0';␊ |
|
␉␊ |
nodeSize = SWAP_BE16(gBTHeaders[kBTreeCatalog]->nodeSize);␊ |
nodeBuf = (char *)malloc(nodeSize);␊ |
␉if (!nodeBuf) ␊ |
␉{␊ |
␉␉return -1;␊ |
␉}␊ |
node = (BTNodeDescriptor *)nodeBuf;␊ |
␉␊ |
index = (long) (*dirIndex % nodeSize);␊ |
|
curNode = SWAP_BE32(gBTHeaders[btree]->rootNode);␊ |
nodeSize = SWAP_BE16(gBTHeaders[btree]->nodeSize);␊ |
nodeBuf = (char *)malloc(nodeSize);␊ |
␉if (!nodeBuf) ␊ |
␉{␊ |
␉␉return -1;␊ |
␉}␊ |
node = (BTNodeDescriptor *)nodeBuf;␊ |
␉␊ |
while (1) {␊ |