Home | History | Annotate | Download | only in udf

Lines Matching defs:fid

738 		size = UDF_FID_SIZE + dscr->fid.l_fi + udf_rw16(dscr->fid.l_iu);
784 udf_fidsize(struct fileid_desc *fid)
788 if (udf_rw16(fid->tag.id) != TAGID_FID)
789 panic("got udf_fidsize on non FID\n");
791 size = UDF_FID_SIZE + fid->l_fi + udf_rw16(fid->l_iu);
2292 udf_create_parentfid(struct udf_mount *ump, struct fileid_desc *fid,
2295 /* the size of an empty FID is 38 but needs to be a multiple of 4 */
2298 udf_inittag(ump, &fid->tag, TAGID_FID, udf_rw32(parent->loc.lb_num));
2299 fid->file_version_num = udf_rw16(1); /* UDF 2.3.4.1 */
2300 fid->file_char = UDF_FILE_CHAR_DIR | UDF_FILE_CHAR_PAR;
2301 fid->icb = *parent;
2302 fid->icb.longad_uniqueid = udf_rw32((uint32_t) unique_id);
2303 fid->tag.desc_crc_len = udf_rw16(fidsize - UDF_DESC_TAG_LENGTH);
2304 (void) udf_validate_tag_and_crc_sums((union dscrptr *) fid);
4054 /* fid's (directories) can't fail */
4513 struct fileid_desc *fid;
4540 /* allocate temporary space for fid */
4542 fid = malloc(lb_size, M_UDFTEMP, M_WAITOK);
4550 /* transfer a new fid/dirent */
4552 error = udf_read_fid_stream(dvp, &diroffset, fid, dirent);
4560 if ((fid->file_char & UDF_FILE_CHAR_DEL)) {
4563 udf_fidsize(fid));
4567 udf_fidsize(fid), 0);
4572 free(fid, M_UDFTEMP);
4593 struct fileid_desc *fid;
4612 /* allocate temporary space for fid */
4614 fid = malloc(lb_size, M_UDFTEMP, M_WAITOK);
4623 unix_to_udf_name((char *) fid->data, &fid->l_fi,
4626 (char *) fid->data, fid->l_fi,
4642 /* transfer a new fid/dirent */
4643 error = udf_read_fid_stream(vp, &diroffset, fid, dirent);
4653 *icb_loc = fid->icb;
4657 free(fid, M_UDFTEMP);
4828 struct fileid_desc *fid;
4850 /* allocate temporary space for fid and dirents */
4852 fid = malloc(lb_size, M_UDFTEMP, M_WAITOK);
4858 unix_to_udf_name((char *) fid->data, &fid->l_fi,
4861 (char *) fid->data, fid->l_fi,
4877 /* transfer a new fid/dirent */
4878 error = udf_read_fid_stream(dvp, &diroffset, fid, dirent);
4896 fid->file_char |= UDF_FILE_CHAR_DEL;
4898 memset(&fid->icb, 0, sizeof(fid->icb));
4900 (void) udf_validate_tag_and_crc_sums((union dscrptr *) fid);
4902 /* get size of fid and compensate for the read_fid_stream advance */
4903 fidsize = udf_fidsize(fid);
4908 fid, fidsize, diroffset,
4934 if (fid->file_char & UDF_FILE_CHAR_DIR) {
4960 udf_fidsize(fid));
4963 free(fid, M_UDFTEMP);
4983 struct fileid_desc *fid;
5019 /* allocate temporary space for fid */
5021 fid = malloc(lb_size, M_UDFTEMP, M_WAITOK);
5025 * NOTE the standard does not dictate the FID entry '..' should be
5041 /* transfer a new fid/dirent */
5042 error = udf_read_fid_stream(dvp, &diroffset, fid, dirent);
5060 fid->icb = new_parent_node->write_loc;
5061 fid->icb.longad_uniqueid = udf_rw32(new_parent_unique_id);
5063 (void) udf_validate_tag_and_crc_sums((union dscrptr *) fid);
5065 /* get size of fid and compensate for the read_fid_stream advance */
5066 fidsize = udf_fidsize(fid);
5071 fid, fidsize, diroffset,
5078 free(fid, M_UDFTEMP);
5089 * We are not allowed to split the fid tag itself over an logical block so
5103 struct fileid_desc *fid;
5156 fid = malloc(lb_size, M_TEMP, M_WAITOK|M_ZERO);
5158 /* calculate _minimum_ fid size */
5159 unix_to_udf_name((char *) fid->data, &fid->l_fi,
5161 fidsize = UDF_FID_SIZE + fid->l_fi;
5164 /* find position that will fit the FID */
5191 /* transfer a new fid/dirent */
5192 error = udf_read_fid_stream(vp, &fid_pos, fid, dirent);
5198 if (udf_rw32(fid->icb.len) != 0)
5200 if (udf_rw32(fid->icb.loc.lb_num) != 0)
5202 if (udf_rw16(fid->icb.loc.part_num) != 0)
5227 /* special case UDF 2.00+ 2.3.4.4, no splitting up fid tag */
5236 /* make sure the next fid desc_tag won't be split */
5248 /* populate the FID */
5249 memset(fid, 0, lb_size);
5250 udf_inittag(ump, &fid->tag, TAGID_FID, 0);
5251 fid->file_version_num = udf_rw16(1); /* UDF 2.3.4.1 */
5252 fid->file_char = file_char;
5253 fid->icb = udf_node->loc;
5254 fid->icb.longad_uniqueid = udf_rw32((uint32_t) unique_id);
5255 fid->l_iu = udf_rw16(0);
5259 fid->l_iu = udf_rw16(chosen_size_diff);
5262 udf_set_regid((struct regid *) fid->data, IMPL_NAME);
5263 udf_add_impl_regid(ump, (struct regid *) fid->data);
5267 unix_to_udf_name((char *) fid->data + udf_rw16(fid->l_iu),
5268 &fid->l_fi, cnp->cn_nameptr, cnp->cn_namelen, &osta_charspec);
5270 fid->tag.desc_crc_len = udf_rw16(chosen_size - UDF_DESC_TAG_LENGTH);
5271 (void) udf_validate_tag_and_crc_sums((union dscrptr *) fid);
5273 /* writeout FID/update parent directory */
5275 fid, chosen_size, chosen_fid_pos,
5315 (char *) fid->data + udf_rw16(fid->l_iu), fid->l_fi, &osta_charspec);
5318 udf_fidsize(fid), 1);
5326 free(fid, M_TEMP);
6282 * Read one fid and process it into a dirent and advance to the next (*fid)
6288 struct fileid_desc *fid, struct dirent *dirent)
6299 assert(fid);
6316 /* get maximum length of FID descriptor */
6322 memset(fid, 0, lb_size);
6331 fid, MIN(file_size - (*offset), lb_size), *offset,
6343 /* check if our FID header is OK */
6344 error = udf_check_tag(fid);
6350 if (udf_rw16(fid->tag.id) != TAGID_FID) {
6357 fid_size = udf_fidsize(fid);
6363 DPRINTF(FIDS, ("\tthe complete fid is read in\n"));
6365 /* check FID contents */
6366 error = udf_check_tag_payload((union dscrptr *) fid, lb_size);
6378 DPRINTF(FIDS, ("\tinterpret FID\n"));
6381 fid_name = (char *) fid->data + udf_rw16(fid->l_iu);
6383 fid_name, fid->l_fi, &ump->logical_vol->desc_charset);
6386 if (fid->file_char & UDF_FILE_CHAR_PAR)
6389 dirent->d_fileno = udf_get_node_id(&fid->icb); /* inode hash XXX */
6400 if (fid->file_char & UDF_FILE_CHAR_DIR)