• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.5.8/xnu-1228.15.4/bsd/hfs/

Lines Matching defs:hfsmp

80 	struct hfsmount *hfsmp;
93 static int cat_lookupbykey(struct hfsmount *hfsmp, CatalogKey *keyp, int allow_system_files, u_long hint, int wantrsrc,
96 static int cat_lookupmangled(struct hfsmount *hfsmp, struct cat_desc *descp, int wantrsrc,
104 static int resolvelinkid(struct hfsmount *hfsmp, u_long linkref, ino_t *ino);
106 static int getkey(struct hfsmount *hfsmp, cnid_t cnid, CatalogKey * key);
108 static int buildkey(struct hfsmount *hfsmp, struct cat_desc *descp,
120 static void getbsdattr(struct hfsmount *hfsmp, const struct HFSPlusCatalogFile *crp, struct cat_attr * attrp);
122 static void promotekey(struct hfsmount *hfsmp, const HFSCatalogKey *hfskey, HFSPlusCatalogKey *keyp, u_long *encoding);
123 static void promotefork(struct hfsmount *hfsmp, const struct HFSCatalogFile *file, int resource, struct cat_fork * forkp);
124 static void promoteattr(struct hfsmount *hfsmp, const CatalogRecord *dataPtr, struct HFSPlusCatalogFile *crp);
134 static int cat_makealias(struct hfsmount *hfsmp, u_int32_t inode_num, struct HFSPlusCatalogFile *crp);
139 cat_preflight(struct hfsmount *hfsmp, catops_t ops, cat_cookie_t *cookie, __unused proc_t p)
144 if (hfsmp->hfs_catalog_cp->c_lockowner != current_thread())
145 lockflags = hfs_systemfile_lock(hfsmp, SFL_CATALOG, HFS_EXCLUSIVE_LOCK);
147 result = BTReserveSpace(hfsmp->hfs_catalog_cp->c_datafork, ops, (void*)cookie);
150 hfs_systemfile_unlock(hfsmp, lockflags);
157 cat_postflight(struct hfsmount *hfsmp, cat_cookie_t *cookie, __unused proc_t p)
161 if (hfsmp->hfs_catalog_cp->c_lockowner != current_thread())
162 lockflags = hfs_systemfile_lock(hfsmp, SFL_CATALOG, HFS_EXCLUSIVE_LOCK);
164 (void) BTReleaseReserve(hfsmp->hfs_catalog_cp->c_datafork, (void*)cookie);
167 hfs_systemfile_unlock(hfsmp, lockflags);
174 struct hfsmount *hfsmp,
180 int std_hfs = HFSTOVCB(hfsmp)->vcbSigWord == kHFSSigWord;
185 promoteattr(hfsmp, recp, &cnoderec);
186 getbsdattr(hfsmp, &cnoderec, attrp);
188 getbsdattr(hfsmp, (struct HFSPlusCatalogFile *)recp, attrp);
194 promotefork(hfsmp, (HFSCatalogFile *)&recp->hfsFile, 0, datafp);
195 promotefork(hfsmp, (HFSCatalogFile *)&recp->hfsFile, 1, rsrcfp);
201 if ((hfsmp->hfc_stage == HFC_RECORDING) &&
202 (attrp->ca_atime >= hfsmp->hfc_timebase)) {
205 HFSTOVCB(hfsmp)->blockSize;
217 if ((hfsmp->hfc_stage == HFC_RECORDING) &&
218 (attrp->ca_atime >= hfsmp->hfc_timebase)) {
221 HFSTOVCB(hfsmp)->blockSize;
239 struct hfsmount *hfsmp,
244 int std_hfs = HFSTOVCB(hfsmp)->vcbSigWord == kHFSSigWord;
250 promotekey(hfsmp, (HFSCatalogKey *)key, pluskey, &encoding);
302 cat_lookup(struct hfsmount *hfsmp, struct cat_desc *descp, int wantrsrc,
310 std_hfs = (HFSTOVCB(hfsmp)->vcbSigWord == kHFSSigWord);
314 result = buildkey(hfsmp, descp, (HFSPlusCatalogKey *)keyp, 1);
318 result = cat_lookupbykey(hfsmp, keyp, 0, descp->cd_hint, wantrsrc, outdescp, attrp, forkp, desc_cnid);
327 result = cat_lookupmangled(hfsmp, descp, wantrsrc, outdescp, attrp, forkp);
335 } else if (hfsmp->hfs_encoding != kTextEncodingMacRoman) {
337 // result = cat_lookupbykey(hfsmp, keyp, descp->cd_hint, attrp, forkp);
349 cat_insertfilethread(struct hfsmount *hfsmp, struct cat_desc *descp)
358 if (HFSTOVCB(hfsmp)->vcbSigWord != kHFSSigWord)
361 fcb = GetFileControlBlock(HFSTOVCB(hfsmp)->catalogRefNum);
365 result = buildkey(hfsmp, descp, (HFSPlusCatalogKey *)&iterator[0].key, 0);
414 cat_findname(struct hfsmount *hfsmp, cnid_t cnid, struct cat_desc *outdescp)
425 std_hfs = (hfsmp->hfs_flags & HFS_STANDARD);
434 result = BTSearchRecord(VTOF(hfsmp->hfs_catalog_vp), iterator, &btdata, NULL, NULL);
465 promotekey(hfsmp, &keyp->hfs, pluskey, &encoding);
487 cat_idlookup(struct hfsmount *hfsmp, cnid_t cnid, int allow_system_files,
498 std_hfs = (HFSTOVCB(hfsmp)->vcbSigWord == kHFSSigWord);
507 result = BTSearchRecord(VTOF(HFSTOVCB(hfsmp)->catalogRefNum), iterator,
532 result = cat_lookupbykey(hfsmp, keyp, allow_system_files, 0, 0, outdescp, attrp, forkp, NULL);
559 cat_lookupmangled(struct hfsmount *hfsmp, struct cat_desc *descp, int wantrsrc,
573 if (fileID == hfsmp->hfs_private_desc[FILE_HARDLINKS].cd_cnid ||
574 fileID == hfsmp->hfs_private_desc[DIR_HARDLINKS].cd_cnid ||
575 fileID == hfsmp->hfs_jnlfileid ||
576 fileID == hfsmp->hfs_jnlinfoblkid) {
580 result = cat_idlookup(hfsmp, fileID, 0, outdescp, attrp, forkp);
603 cat_lookupbykey(struct hfsmount *hfsmp, CatalogKey *keyp, int allow_system_files, u_long hint, int wantrsrc,
616 std_hfs = (HFSTOVCB(hfsmp)->vcbSigWord == kHFSSigWord);
625 result = BTSearchRecord(VTOF(HFSTOVCB(hfsmp)->catalogRefNum), iterator,
636 if ((hfsmp->jnl || ((HFSTOVCB(hfsmp)->vcbAtrb & kHFSVolumeJournaledMask) && (hfsmp->hfs_flags & HFS_READ_ONLY))) &&
637 ((cnid == hfsmp->hfs_jnlfileid) || (cnid == hfsmp->hfs_jnlinfoblkid)) &&
652 && ((to_bsd_time(recp->hfsPlusFile.createDate) == (time_t)hfsmp->vcbCrDate) ||
653 (to_bsd_time(recp->hfsPlusFile.createDate) == (time_t)hfsmp->hfs_metadata_createdate))) {
667 (void) cat_resolvelink(hfsmp, ilink, isdirlink, (struct HFSPlusCatalogFile *)recp);
675 promoteattr(hfsmp, recp, &cnoderec);
676 getbsdattr(hfsmp, &cnoderec, attrp);
678 getbsdattr(hfsmp, (struct HFSPlusCatalogFile *)recp, attrp);
687 promotefork(hfsmp, (HFSCatalogFile *)&recp->hfsFile, wantrsrc, forkp);
693 if ((hfsmp->hfc_stage == HFC_RECORDING) &&
694 (to_bsd_time(recp->hfsPlusFile.accessDate) >= hfsmp->hfc_timebase)) {
697 HFSTOVCB(hfsmp)->blockSize;
712 if ((hfsmp->hfc_stage == HFC_RECORDING) &&
713 (to_bsd_time(recp->hfsPlusFile.accessDate) >= hfsmp->hfc_timebase)) {
716 HFSTOVCB(hfsmp)->blockSize;
727 if (forkp->cf_extents[i].startBlock + forkp->cf_extents[i].blockCount >= hfsmp->totalBlocks) {
747 psize = (off_t)validblks * (off_t)hfsmp->blockSize;
760 promotekey(hfsmp, (HFSCatalogKey *)&iterator->key, pluskey, &encoding);
793 cat_create(struct hfsmount *hfsmp, struct cat_desc *descp, struct cat_attr *attrp,
808 fcb = hfsmp->hfs_catalog_cp->c_datafork;
809 std_hfs = (hfsmp->hfs_flags & HFS_STANDARD);
814 nextCNID = hfsmp->vcbNxtCNID;
819 HFS_MOUNT_LOCK(hfsmp, TRUE)
820 hfsmp->vcbNxtCNID = kHFSFirstUserCatalogNodeID;
821 hfsmp->vcbAtrb |= kHFSCatalogNodeIDsReusedMask;
822 HFS_MOUNT_UNLOCK(hfsmp, TRUE);
825 hfsmp->vcbNxtCNID++;
827 MarkVCBDirty(hfsmp);
833 result = buildkey(hfsmp, descp, &bto->key, 0);
840 hfs_setencodingbits(hfsmp, encoding);
855 result = file_attribute_exist(hfsmp, nextCNID);
868 if ((result == btExists) && !std_hfs && (hfsmp->vcbAtrb & kHFSCatalogNodeIDsReusedMask)) {
886 if ((hfsmp->vcbAtrb & kHFSCatalogNodeIDsReusedMask)) {
887 hfsmp->vcbNxtCNID = nextCNID + 1;
888 if (hfsmp->vcbNxtCNID < kHFSFirstUserCatalogNodeID) {
889 hfsmp->vcbNxtCNID = kHFSFirstUserCatalogNodeID;
915 printf ("hfs: cat_create() failed to delete thread record on volume %s\n", hfsmp->vcbVN);
916 hfs_mark_volume_inconsistent(hfsmp);
930 promotekey(hfsmp, (HFSCatalogKey *)&bto->iterator.key, pluskey, &encoding);
969 struct hfsmount * hfsmp,
991 vcb = HFSTOVCB(hfsmp);
1000 if ((result = buildkey(hfsmp, from_cdp, (HFSPlusCatalogKey *)&from_iterator->key, 0)))
1005 if ((result = buildkey(hfsmp, to_cdp, (HFSPlusCatalogKey *)&to_iterator->key, 0)))
1060 result = cat_lookupmangled(hfsmp, from_cdp, 0, &temp_desc, NULL, NULL);
1066 result = buildkey(hfsmp, &temp_desc, (HFSPlusCatalogKey *)&from_iterator->key, 0);
1097 todir_cdp->cd_parentcnid != hfsmp->hfs_private_desc[FILE_HARDLINKS].cd_cnid &&
1098 todir_cdp->cd_parentcnid != hfsmp->hfs_private_desc[DIR_HARDLINKS].cd_cnid) {
1100 hfs_setencodingbits(hfsmp, encoding);
1156 hfs_mark_volume_inconsistent(hfsmp);
1183 hfs_mark_volume_inconsistent(hfsmp);
1226 promotekey(hfsmp, (HFSCatalogKey *)&to_iterator->key, pluskey, &encoding);
1267 cat_delete(struct hfsmount *hfsmp, struct cat_desc *descp, struct cat_attr *attrp)
1275 fcb = hfsmp->hfs_catalog_cp->c_datafork;
1276 std_hfs = (hfsmp->hfs_flags & HFS_STANDARD);
1299 result = getkey(hfsmp, attrp->ca_fileid, (CatalogKey *)&iterator->key);
1302 result = buildkey(hfsmp, descp, (HFSPlusCatalogKey *)&iterator->key, 0);
1317 result = cat_lookupmangled(hfsmp, descp, 0, &temp_desc, attrp, NULL);
1323 result = buildkey(hfsmp, &temp_desc, (HFSPlusCatalogKey *)&iterator->key, 0);
1343 printf ("hfs: cat_delete() failed to delete thread record on volume %s\n", hfsmp->vcbVN);
1344 hfs_mark_volume_inconsistent(hfsmp);
1361 cat_update(struct hfsmount *hfsmp, struct cat_desc *descp, struct cat_attr *attrp,
1370 fcb = hfsmp->hfs_catalog_cp->c_datafork;
1371 std_hfs = (hfsmp->hfs_flags & HFS_STANDARD);
1377 state.s_hfsmp = hfsmp;
1393 result = getkey(hfsmp, attrp->ca_fileid, (CatalogKey *)&iterator->key);
1395 result = buildkey(hfsmp, descp, (HFSPlusCatalogKey *)&iterator->key, 0);
1427 struct hfsmount *hfsmp;
1433 hfsmp = state->s_hfsmp;
1434 blksize = HFSTOVCB(hfsmp)->blockSize;
1514 if (ckp->hfsPlus.parentID != hfsmp->hfs_private_desc[DIR_HARDLINKS].cd_cnid) {
1542 (attrp->ca_uid != hfsmp->hfs_uid) ||
1543 (attrp->ca_gid != hfsmp->hfs_gid) ||
1545 (hfsmp->hfs_dir_mask & ACCESSPERMS))) {
1547 (((unsigned int)vfs_flags(HFSTOVFS(hfsmp))) & MNT_UNKNOWNPERMISSIONS) == 0) {
1579 if (ckp->hfsPlus.parentID == hfsmp->hfs_private_desc[FILE_HARDLINKS].cd_cnid) {
1608 (attrp->ca_uid != hfsmp->hfs_uid) ||
1609 (attrp->ca_gid != hfsmp->hfs_gid) ||
1611 (hfsmp->hfs_file_mask & ACCESSPERMS))) {
1613 (((unsigned int)vfs_flags(HFSTOVFS(hfsmp))) & MNT_UNKNOWNPERMISSIONS) == 0) {
1677 cat_set_childlinkbit(struct hfsmount *hfsmp, cnid_t cnid)
1685 (cnid != hfsmp->hfs_private_desc[DIR_HARDLINKS].cd_cnid)) {
1689 retval = hfs_chash_set_childlinkbit(hfsmp->hfs_raw_dev, cnid);
1698 retval = hfs_start_transaction(hfsmp);
1702 lockflags = hfs_systemfile_lock(hfsmp, SFL_CATALOG, HFS_EXCLUSIVE_LOCK);
1705 retval = cat_idlookup(hfsmp, cnid, 0, &desc, &attr, NULL);
1707 hfs_systemfile_unlock(hfsmp, lockflags);
1708 hfs_end_transaction(hfsmp);
1714 retval = cat_update(hfsmp, &desc, &attr, NULL, NULL);
1716 hfs_systemfile_unlock(hfsmp, lockflags);
1717 hfs_end_transaction(hfsmp);
1722 hfs_systemfile_unlock(hfsmp, lockflags);
1723 hfs_end_transaction(hfsmp);
1742 cat_check_link_ancestry(struct hfsmount *hfsmp, cnid_t cnid, cnid_t pointed_at_cnid)
1756 fcb = hfsmp->hfs_catalog_cp->c_datafork;
1764 if ((result = getkey(hfsmp, cnid, (CatalogKey *)keyp))) {
1825 cat_updatelink(struct hfsmount *hfsmp, cnid_t linkfileid, cnid_t prevlinkid, cnid_t nextlinkid)
1832 fcb = hfsmp->hfs_catalog_cp->c_datafork;
1841 result = getkey(hfsmp, linkfileid, (CatalogKey *)&iterator->key);
1856 cat_lookuplink(struct hfsmount *hfsmp, struct cat_desc *descp, cnid_t *linkfileid, cnid_t *prevlinkid, cnid_t *nextlinkid)
1864 fcb = hfsmp->hfs_catalog_cp->c_datafork;
1870 if ((result = buildkey(hfsmp, descp, (HFSPlusCatalogKey *)&iterator->key, 0))) {
1901 cat_lookuplinkbyid(struct hfsmount *hfsmp, cnid_t linkfileid, cnid_t *prevlinkid, cnid_t *nextlinkid)
1909 fcb = hfsmp->hfs_catalog_cp->c_datafork;
1915 if ((result = getkey(hfsmp, linkfileid, (CatalogKey *)&iterator->key))) {
1932 if (parent == hfsmp->hfs_private_desc[DIR_HARDLINKS].cd_cnid) {
1934 } else if (parent == hfsmp->hfs_private_desc[FILE_HARDLINKS].cd_cnid) {
1963 cat_createlink(struct hfsmount *hfsmp, struct cat_desc *descp, struct cat_attr *attrp,
1977 fcb = hfsmp->hfs_catalog_cp->c_datafork;
1982 nextCNID = hfsmp->vcbNxtCNID;
1984 HFS_MOUNT_LOCK(hfsmp, TRUE)
1985 hfsmp->vcbNxtCNID = kHFSFirstUserCatalogNodeID;
1986 hfsmp->vcbAtrb |= kHFSCatalogNodeIDsReusedMask;
1987 HFS_MOUNT_UNLOCK(hfsmp, TRUE);
1989 hfsmp->vcbNxtCNID++;
1991 MarkVCBDirty(hfsmp);
1998 result = buildkey(hfsmp, descp, &bto->key, 0);
2017 if ((result == btExists) && (hfsmp->vcbAtrb & kHFSCatalogNodeIDsReusedMask)) {
2038 if ((hfsmp->vcbAtrb & kHFSCatalogNodeIDsReusedMask)) {
2039 hfsmp->vcbNxtCNID = nextCNID + 1;
2040 if (hfsmp->vcbNxtCNID < kHFSFirstUserCatalogNodeID) {
2041 hfsmp->vcbNxtCNID = kHFSFirstUserCatalogNodeID;
2056 if ((result = cat_makealias(hfsmp, attrp->ca_linkref, &bto->data.hfsPlusFile))) {
2083 printf("hfs: cat_createlink() failed to delete thread record on volume %s\n", hfsmp->vcbVN);
2084 hfs_mark_volume_inconsistent(hfsmp);
2088 (void) BlockDeallocate(hfsmp, rsrcforkp->extents[0].startBlock,
2168 cat_makealias(struct hfsmount *hfsmp, u_int32_t inode_num, struct HFSPlusCatalogFile *crp)
2182 blksize = hfsmp->blockSize;
2184 sectorsize = hfsmp->hfs_logical_block_size;
2188 result = BlockAllocate(hfsmp, 0, blkcount, blkcount, 1, 1,
2198 blkno += hfsmp->hfsPlusIOPosOffset / sectorsize;
2200 bp = buf_getblk(hfsmp->hfs_devvp, blkno, roundup(kHFSAliasSize, hfsmp->hfs_logical_block_size), 0, 0, BLK_META);
2201 if (hfsmp->jnl) {
2202 journal_modify_block_start(hfsmp->jnl, bp);
2212 *valptr = OSSwapHostToBigInt32(hfsmp->localCreateDate);
2217 if (hfsmp->hfs_flags & HFS_VIRTUAL_DEVICE) {
2224 *valptr = OSSwapHostToBigInt32(hfsmp->hfs_private_desc[DIR_HARDLINKS].cd_cnid);
2231 if (hfsmp->jnl) {
2232 journal_modify_block_end(hfsmp->jnl, bp, NULL, NULL);
2243 (void) BlockDeallocate(hfsmp, rsrcforkp->extents[0].startBlock, rsrcforkp->extents[0].blockCount);
2257 cat_deletelink(struct hfsmount *hfsmp, struct cat_desc *descp)
2275 fcb = hfsmp->hfs_catalog_cp->c_datafork;
2281 if ((result = buildkey(hfsmp, descp, (HFSPlusCatalogKey *)&iterator->key, 0))) {
2291 result = cat_delete(hfsmp, descp, &cattr);
2305 (void) BlockDeallocate(hfsmp,
2324 struct hfsmount *hfsmp;
2336 struct hfsmount *hfsmp = state->hfsmp;
2363 if (rec->hfsPlusFolder.folderID == hfsmp->hfs_private_desc[FILE_HARDLINKS].cd_cnid ||
2364 rec->hfsPlusFolder.folderID == hfsmp->hfs_private_desc[DIR_HARDLINKS].cd_cnid) {
2369 if ((hfsmp->jnl || ((HFSTOVCB(hfsmp)->vcbAtrb & kHFSVolumeJournaledMask) && (hfsmp->hfs_flags & HFS_READ_ONLY))) &&
2371 ((rec->hfsPlusFile.fileID == hfsmp->hfs_jnlfileid) ||
2372 (rec->hfsPlusFile.fileID == hfsmp->hfs_jnlinfoblkid))) {
2385 promoteattr(hfsmp, rec, &cnoderec);
2386 getbsdattr(hfsmp, &cnoderec, &cep->ce_attr);
2389 promotekey(hfsmp, (const HFSCatalogKey *)key, pluskey, &encoding);
2394 int blksize = HFSTOVCB(hfsmp)->blockSize;
2402 getbsdattr(hfsmp, (const struct HFSPlusCatalogFile *)rec, &cep->ce_attr);
2434 cat_getentriesattr(struct hfsmount *hfsmp, directoryhint_t *dirhint, struct cat_entrylist *ce_list)
2449 fcb = GetFileControlBlock(HFSTOVCB(hfsmp)->catalogRefNum);
2450 std_hfs = (HFSTOVCB(hfsmp)->vcbSigWord == kHFSSigWord);
2453 state.hfsmp = hfsmp;
2470 if (buildkey(hfsmp, &dirhint->dh_desc, (HFSPlusCatalogKey *)key, 0) == 0) {
2483 buildthreadkey(dirhint->dh_desc.cd_parentcnid, (hfsmp->hfs_flags & HFS_STANDARD), key);
2501 ps.hfsmp = hfsmp;
2559 if (cat_resolvelink(hfsmp, cep->ce_attr.ca_linkref, isdirlink, &filerec) != 0)
2562 getbsdattr(hfsmp, &filerec, &cep->ce_attr);
2620 struct hfsmount *hfsmp;
2641 hfsmp = state->cbs_hfsmp;
2681 if (cnid == hfsmp->hfs_private_desc[FILE_HARDLINKS].cd_cnid ||
2682 cnid == hfsmp->hfs_private_desc[DIR_HARDLINKS].cd_cnid) {
2696 ((itime == (time_t)hfsmp->hfs_itime) ||
2697 (itime == (time_t)hfsmp->hfs_metadata_createdate))) {
2708 ((itime == (time_t)hfsmp->hfs_itime) ||
2709 (itime == (time_t)hfsmp->hfs_metadata_createdate))) {
2717 ((hfsmp->jnl || ((HFSTOVCB(hfsmp)->vcbAtrb & kHFSVolumeJournaledMask) && (hfsmp->hfs_flags & HFS_READ_ONLY)))) &&
2718 ((cnid == hfsmp->hfs_jnlfileid) ||
2719 (cnid == hfsmp->hfs_jnlinfoblkid))) {
2897 struct hfsmount *hfsmp;
2910 hfsmp = state->cbs_hfsmp;
2937 result = hfs_to_utf8(hfsmp, cnp->pstr, maxnamelen + 1, (ByteCount *)&namelen, nameptr);
2983 cat_getdirentries(struct hfsmount *hfsmp, int entrycnt, directoryhint_t *dirhint,
2997 if (extended && (hfsmp->hfs_flags & HFS_STANDARD)) {
3000 fcb = hfsmp->hfs_catalog_cp->c_datafork;
3033 if (buildkey(hfsmp, &dirhint->dh_desc, (HFSPlusCatalogKey *)key, 0) == 0) {
3044 buildthreadkey(dirhint->dh_desc.cd_parentcnid, (hfsmp->hfs_flags & HFS_STANDARD), key);
3058 buildthreadkey(dirhint->dh_desc.cd_parentcnid, (hfsmp->hfs_flags & HFS_STANDARD), key);
3078 ps.hfsmp = hfsmp;
3094 state.cbs_hfsmp = hfsmp;
3120 if (hfsmp->hfs_flags & HFS_STANDARD)
3176 if (resolvelinkid(hfsmp, state.cbs_linkinfo[i].link_ref, &fileid) != 0)
3226 if (state->hfsmp->hfs_flags & HFS_STANDARD)
3381 buildkey(struct hfsmount *hfsmp, struct cat_desc *descp,
3415 if (HFSTOVCB(hfsmp)->vcbSigWord == kHFSSigWord) {
3423 if (unicode_to_hfs(HFSTOVCB(hfsmp),
3442 cat_resolvelink(struct hfsmount *hfsmp, u_long linkref, int isdirlink, struct HFSPlusCatalogFile *recp)
3455 parentcnid = hfsmp->hfs_private_desc[DIR_HARDLINKS].cd_cnid;
3458 parentcnid = hfsmp->hfs_private_desc[FILE_HARDLINKS].cd_cnid;
3472 (void) buildkey(hfsmp, &idesc, (HFSPlusCatalogKey *)&iterator->key, 0);
3474 result = BTSearchRecord(VTOF(HFSTOVCB(hfsmp)->catalogRefNum), iterator,
3494 resolvelinkid(struct hfsmount *hfsmp, u_long linkref, ino_t *ino)
3505 error = cat_resolvelink(hfsmp, linkref, 0, &record);
3519 getkey(struct hfsmount *hfsmp, cnid_t cnid, CatalogKey * key)
3529 std_hfs = (HFSTOVCB(hfsmp)->vcbSigWord == kHFSSigWord);
3538 result = BTSearchRecord(VTOF(HFSTOVCB(hfsmp)->catalogRefNum), iterator,
3582 cat_getkeyplusattr(struct hfsmount *hfsmp, cnid_t cnid, CatalogKey * key, struct cat_attr *attrp)
3586 result = getkey(hfsmp, cnid, key);
3589 result = cat_lookupbykey(hfsmp, key, 0, 0, 0, NULL, attrp, NULL, NULL);
3597 (key->hfsPlus.parentID == hfsmp->hfs_private_desc[FILE_HARDLINKS].cd_cnid) &&
3607 if ((cat_lookuplinkbyid(hfsmp, cnid, &prevlinkid, &nextlinkid) == 0) &&
3609 if (cat_findname(hfsmp, nextlinkid, &linkdesc) == 0) {
3759 getbsdattr(struct hfsmount *hfsmp, const struct HFSPlusCatalogFile *crp, struct cat_attr * attrp)
3774 attrp->ca_uid = hfsmp->hfs_uid;
3775 attrp->ca_gid = hfsmp->hfs_gid;
3777 attrp->ca_mode = S_IFDIR | (hfsmp->hfs_dir_mask & ACCESSPERMS);
3779 attrp->ca_mode = S_IFREG | (hfsmp->hfs_file_mask & ACCESSPERMS);
3817 * if (((unsigned int)vfs_flags(HFSTOVFS(hfsmp))) & MNT_UNKNOWNPERMISSIONS) {
3818 * attrp->ca_uid = hfsmp->hfs_uid;
3819 * attrp->ca_gid = hfsmp->hfs_gid;
3830 attrp->ca_dircount = ((hfsmp->hfs_flags & HFS_FOLDERCOUNT) && (attrp->ca_recflags & kHFSHasFolderCountMask)) ?
3854 if ((hfsmp->hfs_flags & HFS_STANDARD) == 0)
3871 promotekey(struct hfsmount *hfsmp, const HFSCatalogKey *hfskey,
3874 hfs_to_unicode_func_t hfs_get_unicode = hfsmp->hfs_get_unicode;
3878 *encoding = hfsmp->hfs_encoding;
3886 if (error && hfsmp->hfs_encoding != kTextEncodingMacRoman) {
3903 promotefork(struct hfsmount *hfsmp, const struct HFSCatalogFile *filep,
3907 u_long blocksize = HFSTOVCB(hfsmp)->blockSize;
3941 promoteattr(struct hfsmount *hfsmp, const CatalogRecord *dataPtr, struct HFSPlusCatalogFile *crp)
3943 u_long blocksize = HFSTOVCB(hfsmp)->blockSize;