- /* hide our private meta data directory */
- if ((privateDir != 0) && (catalogInfo.nodeData.cnd_nodeID == privateDir))
- return (0);
-
- if ( returnAttrList->commonattr & ATTR_CMN_NAME ) {
- size_t utf8len = 0;
-
- catalogInfo.nodeData.cnm_nameptr = catalogInfo.nodeData.cnm_namespace;
-
- /* Return result in UTF-8 */
- if ( isHFSPlus ) {
- err = utf8_encodestr(key->hfsPlus.nodeName.unicode,
- key->hfsPlus.nodeName.length * sizeof(UniChar),
- catalogInfo.nodeData.cnm_namespace,
- &utf8len,
- MAXHFSVNODELEN + 1, ':', 0);
- if (err == ENAMETOOLONG) {
- utf8len = utf8_encodelen(key->hfsPlus.nodeName.unicode,
- key->hfsPlus.nodeName.length * sizeof(UniChar), ':', 0);
- MALLOC(catalogInfo.nodeData.cnm_nameptr, char *, utf8len+1, M_TEMP, M_WAITOK);
- catalogInfo.nodeData.cnm_flags |= kCatNameIsAllocated;
- err = utf8_encodestr(key->hfsPlus.nodeName.unicode,
- key->hfsPlus.nodeName.length * sizeof(UniChar),
- catalogInfo.nodeData.cnm_nameptr,
- &utf8len,
- utf8len + 1, ':', 0);
- }
- } else {
- err = hfs_to_utf8(vcb,
- key->hfs.nodeName,
- MAXHFSVNODELEN + 1,
- (ByteCount*) &utf8len,
- catalogInfo.nodeData.cnm_namespace);
- if (err == ENAMETOOLONG) {
- MALLOC(catalogInfo.nodeData.cnm_nameptr, char *, utf8len+1, M_TEMP, M_WAITOK);
- catalogInfo.nodeData.cnm_flags |= kCatNameIsAllocated;
- err = hfs_to_utf8(vcb,
- key->hfs.nodeName,
- utf8len + 1,
- (ByteCount*) &utf8len,
- catalogInfo.nodeData.cnm_nameptr);
- } else if (err) {
- /*
- * When an HFS name cannot be encoded with the current
- * volume encoding we use MacRoman as a fallback.
- */
- err = mac_roman_to_utf8(key->hfs.nodeName, MAXHFSVNODELEN + 1,
- (ByteCount*) &utf8len,
- catalogInfo.nodeData.cnm_namespace);
- }
- }
- catalogInfo.nodeData.cnm_length = utf8len;
- if (err && (catalogInfo.nodeData.cnm_flags & kCatNameIsAllocated))
- {
- DisposePtr(catalogInfo.nodeData.cnm_nameptr);
- catalogInfo.nodeData.cnm_flags &= ~kCatNameIsAllocated;
- catalogInfo.nodeData.cnm_nameptr = catalogInfo.nodeData.cnm_namespace;
- catalogInfo.nodeData.cnm_namespace[0] = 0;
- }
+ if (returnAttrList->commonattr & ATTR_CMN_NAME) {
+ cat_convertkey(hfsmp, key, rec, &c_desc);
+ } else {
+ c_desc.cd_cnid = c_attr.ca_fileid;
+ if (hfsmp->hfs_flags & HFS_STANDARD)
+ c_desc.cd_parentcnid = key->hfs.parentID;
+ else
+ c_desc.cd_parentcnid = key->hfsPlus.parentID;