Lines Matching refs:crp

103 static int cat_findposition(const CatalogKey *ckp, const CatalogRecord *crp,
115 static void buildrecord(struct cat_attr *attrp, cnid_t cnid, int std_hfs, u_int32_t encoding, CatalogRecord *crp, u_int32_t *recordSize);
117 static int catrec_update(const CatalogKey *ckp, CatalogRecord *crp, struct update_state *state);
122 static void getbsdattr(struct hfsmount *hfsmp, const struct HFSPlusCatalogFile *crp, struct cat_attr * attrp);
126 static void promoteattr(struct hfsmount *hfsmp, const CatalogRecord *dataPtr, struct HFSPlusCatalogFile *crp);
128 static cnid_t getcnid(const CatalogRecord *crp);
129 static u_int32_t getencoding(const CatalogRecord *crp);
132 static int isadir(const CatalogRecord *crp);
136 static int cat_makealias(struct hfsmount *hfsmp, u_int32_t inode_num, struct HFSPlusCatalogFile *crp);
1550 catrec_update(const CatalogKey *ckp, CatalogRecord *crp, struct update_state *state)
1564 switch (crp->recordType) {
1568 dir = (struct HFSCatalogFolder *)crp;
1584 file = (struct HFSCatalogFile *)crp;
1627 dir = (struct HFSPlusCatalogFolder *)crp;
1693 file = (struct HFSPlusCatalogFile *)crp;
1945 update_siblinglinks_callback(__unused const CatalogKey *ckp, CatalogRecord *crp, struct linkupdate_state *state)
1949 if (crp->recordType != kHFSPlusFileRecord) {
1950 printf("hfs: update_siblinglinks_callback: unexpected rec type %d\n", crp->recordType);
1954 file = (struct HFSPlusCatalogFile *)crp;
2333 cat_makealias(struct hfsmount *hfsmp, u_int32_t inode_num, struct HFSPlusCatalogFile *crp)
2345 rsrcforkp = &(crp->resourceFork);
2781 getdirentries_callback(const CatalogKey *ckp, const CatalogRecord *crp,
2873 switch(crp->recordType) {
2876 cnid = crp->hfsPlusFolder.folderID;
2886 itime = to_bsd_time(crp->hfsPlusFile.createDate);
2887 type = MODE_TO_DT(crp->hfsPlusFile.bsdInfo.fileMode);
2888 cnid = crp->hfsPlusFile.fileID;
2892 if ((SWAP_BE32(crp->hfsPlusFile.userInfo.fdType) == kHardLinkFileType) &&
2893 (SWAP_BE32(crp->hfsPlusFile.userInfo.fdCreator) == kHFSPlusCreator) &&
2897 if (crp->hfsPlusFile.flags & kHFSHasLinkChainMask) {
2898 cnid = crp->hfsPlusFile.hl_linkReference;
2900 ilinkref = crp->hfsPlusFile.hl_linkReference;
2903 } else if ((SWAP_BE32(crp->hfsPlusFile.userInfo.fdType) == kHFSAliasType) &&
2904 (SWAP_BE32(crp->hfsPlusFile.userInfo.fdCreator) == kHFSAliasCreator) &&
2905 (crp->hfsPlusFile.flags & kHFSHasLinkChainMask) &&
2906 (crp->hfsPlusFile.hl_linkReference >= kHFSFirstUserCatalogNodeID) &&
2912 cnid = crp->hfsPlusFile.hl_linkReference;
2935 if ((namelen < maxnamelen) && (crp->hfsPlusFile.textEncoding == 0)) {
2969 linkid = crp->hfsPlusFile.fileID;
3107 getdirentries_std_callback(const CatalogKey *ckp, const CatalogRecord *crp,
3136 switch(crp->recordType) {
3139 cnid = crp->hfsFolder.folderID;
3143 cnid = crp->hfsFile.fileID;
3356 CatalogRecord crp;
3359 bzero(&crp, sizeof(crp));
3361 result = getdirentries_callback(&ckp, &crp, &state);
3448 cat_findposition(const CatalogKey *ckp, const CatalogRecord *crp,
3465 switch(crp->recordType) {
3474 crp->recordType, curID);
3852 CatalogRecord *crp, u_int32_t *recordSize)
3860 bzero(crp, sizeof(HFSCatalogFolder));
3861 crp->recordType = kHFSFolderRecord;
3862 crp->hfsFolder.folderID = cnid;
3863 crp->hfsFolder.createDate = createtime;
3864 crp->hfsFolder.modifyDate = createtime;
3865 bcopy(attrp->ca_finderinfo, &crp->hfsFolder.userInfo, 32);
3868 bzero(crp, sizeof(HFSCatalogFile));
3869 crp->recordType = kHFSFileRecord;
3870 crp->hfsFile.fileID = cnid;
3871 crp->hfsFile.createDate = createtime;
3872 crp->hfsFile.modifyDate = createtime;
3873 bcopy(attrp->ca_finderinfo, &crp->hfsFile.userInfo, 16);
3874 bcopy(&attrp->ca_finderinfo[16], &crp->hfsFile.finderInfo, 16);
3881 crp->recordType = kHFSPlusFolderRecord;
3882 crp->hfsPlusFolder.flags = attrp->ca_recflags;
3883 crp->hfsPlusFolder.valence = 0;
3884 crp->hfsPlusFolder.folderID = cnid;
3885 crp->hfsPlusFolder.createDate = createtime;
3886 crp->hfsPlusFolder.contentModDate = createtime;
3887 crp->hfsPlusFolder.attributeModDate = createtime;
3888 crp->hfsPlusFolder.accessDate = createtime;
3889 crp->hfsPlusFolder.backupDate = 0;
3890 crp->hfsPlusFolder.textEncoding = encoding;
3891 crp->hfsPlusFolder.folderCount = 0;
3892 bcopy(attrp->ca_finderinfo, &crp->hfsPlusFolder.userInfo, 32);
3893 bsdp = &crp->hfsPlusFolder.bsdInfo;
3897 crp->recordType = kHFSPlusFileRecord;
3898 crp->hfsPlusFile.flags = attrp->ca_recflags;
3899 crp->hfsPlusFile.reserved1 = 0;
3900 crp->hfsPlusFile.fileID = cnid;
3901 crp->hfsPlusFile.createDate = createtime;
3902 crp->hfsPlusFile.contentModDate = createtime;
3903 crp->hfsPlusFile.accessDate = createtime;
3904 crp->hfsPlusFile.attributeModDate = createtime;
3905 crp->hfsPlusFile.backupDate = 0;
3906 crp->hfsPlusFile.textEncoding = encoding;
3907 crp->hfsPlusFile.reserved2 = 0;
3908 bcopy(attrp->ca_finderinfo, &crp->hfsPlusFile.userInfo, 32);
3909 bsdp = &crp->hfsPlusFile.bsdInfo;
3916 bzero(&crp->hfsPlusFile.dataFork, 2*sizeof(HFSPlusForkData));
3987 getbsdattr(struct hfsmount *hfsmp, const struct HFSPlusCatalogFile *crp, struct cat_attr * attrp)
3989 int isDirectory = (crp->recordType == kHFSPlusFolderRecord);
3990 const struct HFSPlusBSDInfo *bsd = &crp->bsdInfo;
3992 attrp->ca_recflags = crp->flags;
3993 attrp->ca_atime = to_bsd_time(crp->accessDate);
3995 attrp->ca_mtime = to_bsd_time(crp->contentModDate);
3996 attrp->ca_ctime = to_bsd_time(crp->attributeModDate);
3997 attrp->ca_itime = to_bsd_time(crp->createDate);
3998 attrp->ca_btime = to_bsd_time(crp->backupDate);
4057 attrp->ca_entries = ((const HFSPlusCatalogFolder *)crp)->valence;
4059 ((const HFSPlusCatalogFolder *)crp)->folderCount : 0;
4062 if (((const HFSPlusCatalogFolder *)crp)->userInfo.frFlags & OSSwapHostToBigConstInt16(kFinderInvisibleMask))
4066 if (crp->flags & kHFSFileLockedMask) {
4076 if (crp->userInfo.fdFlags & OSSwapHostToBigConstInt16(kFinderInvisibleMask))
4079 attrp->ca_blocks = crp->dataFork.totalBlocks + crp->resourceFork.totalBlocks;
4086 attrp->ca_firstlink = (attrp->ca_recflags & kHFSHasLinkChainMask) ? crp->hl_firstLinkID : 0;
4089 attrp->ca_fileid = crp->fileID;
4091 bcopy(&crp->userInfo, attrp->ca_finderinfo, 32);
4169 promoteattr(struct hfsmount *hfsmp, const CatalogRecord *dataPtr, struct HFSPlusCatalogFile *crp)
4177 crp->recordType = kHFSPlusFolderRecord;
4178 crp->flags = folder->flags;
4179 crp->fileID = folder->folderID;
4180 crp->createDate = LocalToUTC(folder->createDate);
4181 crp->contentModDate = LocalToUTC(folder->modifyDate);
4182 crp->backupDate = LocalToUTC(folder->backupDate);
4183 crp->reserved1 = folder->valence;
4184 crp->reserved2 = 0;
4185 bcopy(&folder->userInfo, &crp->userInfo, 32);
4190 crp->recordType = kHFSPlusFileRecord;
4191 crp->flags = file->flags;
4192 crp->fileID = file->fileID;
4193 crp->createDate = LocalToUTC(file->createDate);
4194 crp->contentModDate = LocalToUTC(file->modifyDate);
4195 crp->backupDate = LocalToUTC(file->backupDate);
4196 crp->reserved1 = 0;
4197 crp->reserved2 = 0;
4198 bcopy(&file->userInfo, &crp->userInfo, 16);
4199 bcopy(&file->finderInfo, &crp->finderInfo, 16);
4200 crp->dataFork.totalBlocks = file->dataPhysicalSize / blocksize;
4201 crp->resourceFork.totalBlocks = file->rsrcPhysicalSize / blocksize;
4203 crp->textEncoding = 0;
4204 crp->attributeModDate = crp->contentModDate;
4205 crp->accessDate = crp->contentModDate;
4206 bzero(&crp->bsdInfo, sizeof(HFSPlusBSDInfo));
4275 getencoding(const CatalogRecord *crp)
4279 if (crp->recordType == kHFSPlusFolderRecord)
4280 encoding = crp->hfsPlusFolder.textEncoding;
4281 else if (crp->recordType == kHFSPlusFileRecord)
4282 encoding = crp->hfsPlusFile.textEncoding;
4293 getcnid(const CatalogRecord *crp)
4297 switch (crp->recordType) {
4299 cnid = crp->hfsFolder.folderID;
4302 cnid = crp->hfsFile.fileID;
4305 cnid = crp->hfsPlusFolder.folderID;
4308 cnid = crp->hfsPlusFile.fileID;
4311 panic("hfs: getcnid: unknown recordType (crp @ %p)\n", crp);
4337 panic("hfs: getparentcnid: unknown recordType (crp @ %p)\n", recp);
4348 isadir(const CatalogRecord *crp)
4350 return (crp->recordType == kHFSFolderRecord ||
4351 crp->recordType == kHFSPlusFolderRecord);