Lines Matching +full:t +full:- +full:head

3 /*-
4 * SPDX-License-Identifier: BSD-2-Clause
7 * Perez-Rathke and Ram Vedam. All rights reserved.
10 * Alan Perez-Rathke and Ram Vedam.
23 * GABRYS, ALAN PEREZ-RATHKE AND RAM VEDAM ``AS IS'' AND ANY EXPRESS OR
27 * GABRYS, ALAN PEREZ-RATHKE AND RAM VEDAM BE LIABLE FOR ANY DIRECT, INDIRECT,
65 if (!(node->type & CD9660_TYPE_DOT) && in cd9660_susp_initialize()
66 !(node->type & CD9660_TYPE_DOTDOT)) in cd9660_susp_initialize()
67 TAILQ_INIT(&(node->head)); in cd9660_susp_initialize()
68 if (node->dot_record != 0) in cd9660_susp_initialize()
69 TAILQ_INIT(&(node->dot_record->head)); in cd9660_susp_initialize()
70 if (node->dot_dot_record != 0) in cd9660_susp_initialize()
71 TAILQ_INIT(&(node->dot_dot_record->head)); in cd9660_susp_initialize()
93 TAILQ_FOREACH(cn, &node->cn_children, cn_next_child) { in cd9660_susp_initialize()
108 if (node == diskStructure->rootNode) in cd9660_susp_finalize()
109 diskStructure->susp_continuation_area_current_free = 0; in cd9660_susp_finalize()
116 TAILQ_FOREACH(temp, &node->cn_children, cn_next_child) { in cd9660_susp_finalize()
129 * For the sake of simplicity and clarity, we won't be doing that for now.
139 struct ISO_SUSP_ATTRIBUTES *t; in cd9660_susp_finalize_node() local
142 if (node->susp_entry_ce_length > 0) { in cd9660_susp_finalize_node()
143 node->susp_entry_ce_start = in cd9660_susp_finalize_node()
144 diskStructure->susp_continuation_area_current_free; in cd9660_susp_finalize_node()
145 diskStructure->susp_continuation_area_current_free += in cd9660_susp_finalize_node()
146 node->susp_entry_ce_length; in cd9660_susp_finalize_node()
149 TAILQ_FOREACH(t, &node->head, rr_ll) { in cd9660_susp_finalize_node()
150 if (t->susp_type != SUSP_TYPE_SUSP || in cd9660_susp_finalize_node()
151 t->entry_type != SUSP_ENTRY_SUSP_CE) in cd9660_susp_finalize_node()
154 diskStructure-> in cd9660_susp_finalize_node()
156 t->attr.su_entry.CE.ca_sector); in cd9660_susp_finalize_node()
159 diskStructure-> in cd9660_susp_finalize_node()
161 t->attr.su_entry.CE.ca_sector); in cd9660_susp_finalize_node()
162 cd9660_bothendian_dword(node->susp_entry_ce_start, in cd9660_susp_finalize_node()
163 t->attr.su_entry.CE.offset); in cd9660_susp_finalize_node()
164 cd9660_bothendian_dword(node->susp_entry_ce_length, in cd9660_susp_finalize_node()
165 t->attr.su_entry.CE.length); in cd9660_susp_finalize_node()
173 struct ISO_SUSP_ATTRIBUTES *t; in cd9660_rrip_finalize_node() local
175 TAILQ_FOREACH(t, &node->head, rr_ll) { in cd9660_rrip_finalize_node()
176 if (t->susp_type != SUSP_TYPE_RRIP) in cd9660_rrip_finalize_node()
178 switch (t->entry_type) { in cd9660_rrip_finalize_node()
181 if (node->rr_relocated == NULL) in cd9660_rrip_finalize_node()
182 return -1; in cd9660_rrip_finalize_node()
184 node->rr_relocated->fileDataSector, in cd9660_rrip_finalize_node()
186 t->attr.rr_entry.CL.dir_loc); in cd9660_rrip_finalize_node()
190 if (node->parent == NULL || in cd9660_rrip_finalize_node()
191 node->parent->rr_real_parent == NULL) in cd9660_rrip_finalize_node()
192 return -1; in cd9660_rrip_finalize_node()
194 node->parent->rr_real_parent->fileDataSector, in cd9660_rrip_finalize_node()
196 t->attr.rr_entry.PL.dir_loc); in cd9660_rrip_finalize_node()
211 working = 254 - space; in cd9660_susp_handle_continuation_common()
212 if (node->su_tail_size > 0) in cd9660_susp_handle_continuation_common()
214 working -= node->su_tail_size + 4; in cd9660_susp_handle_continuation_common()
219 TAILQ_FOREACH(temp, &node->head, rr_ll) { in cd9660_susp_handle_continuation_common()
226 working -= CD9660_SUSP_ENTRY_SIZE(temp); in cd9660_susp_handle_continuation_common()
248 TAILQ_INSERT_AFTER(&node->head, pre_ce, CE, rr_ll); in cd9660_susp_handle_continuation_common()
250 TAILQ_INSERT_HEAD(&node->head, CE, rr_ll); in cd9660_susp_handle_continuation_common()
261 if (node->su_tail_size > 0) { in cd9660_susp_handle_continuation_common()
266 TAILQ_INSERT_AFTER(&node->head, last, ST, rr_ll); in cd9660_susp_handle_continuation_common()
268 TAILQ_INSERT_HEAD(&node->head, ST, rr_ll); in cd9660_susp_handle_continuation_common()
273 last->last_in_suf = 1; in cd9660_susp_handle_continuation_common()
275 node->susp_entry_size = susp_used; in cd9660_susp_handle_continuation_common()
276 node->susp_entry_ce_length = ca_used; in cd9660_susp_handle_continuation_common()
278 diskStructure->susp_continuation_area_size += ca_used; in cd9660_susp_handle_continuation_common()
290 node,(int)(node->isoDirRecord->length[0])) < 0) in cd9660_susp_handle_continuation()
306 * PD: isn't needed (though might be added for testing) in cd9660_susp_initialize_node()
312 if (node->type & CD9660_TYPE_DOT) { in cd9660_susp_initialize_node()
313 if (node->parent == diskStructure->rootNode) { in cd9660_susp_initialize_node()
319 TAILQ_INSERT_HEAD(&node->head, temp, rr_ll); in cd9660_susp_initialize_node()
331 * Inode dependent values - this may change, in cd9660_rrip_initialize_inode()
336 if ((node->node != NULL) && (node->node->inode != NULL)) { in cd9660_rrip_initialize_inode()
337 /* PX - POSIX attributes */ in cd9660_rrip_initialize_inode()
340 cd9660node_rrip_px(attr, node->node); in cd9660_rrip_initialize_inode()
342 TAILQ_INSERT_TAIL(&node->head, attr, rr_ll); in cd9660_rrip_initialize_inode()
344 /* TF - timestamp */ in cd9660_rrip_initialize_inode()
347 cd9660node_rrip_tf(attr, node->node); in cd9660_rrip_initialize_inode()
348 TAILQ_INSERT_TAIL(&node->head, attr, rr_ll); in cd9660_rrip_initialize_inode()
350 /* SL - Symbolic link */ in cd9660_rrip_initialize_inode()
351 /* ?????????? Dan - why is this here? */ in cd9660_rrip_initialize_inode()
352 if (TAILQ_EMPTY(&node->cn_children) && in cd9660_rrip_initialize_inode()
353 node->node->inode != NULL && in cd9660_rrip_initialize_inode()
354 S_ISLNK(node->node->inode->st.st_mode)) in cd9660_rrip_initialize_inode()
357 /* PN - device number */ in cd9660_rrip_initialize_inode()
358 if (node->node->inode != NULL && in cd9660_rrip_initialize_inode()
359 ((S_ISCHR(node->node->inode->st.st_mode) || in cd9660_rrip_initialize_inode()
360 S_ISBLK(node->node->inode->st.st_mode)))) { in cd9660_rrip_initialize_inode()
365 cd9660node_rrip_pn(attr, node->node); in cd9660_rrip_initialize_inode()
366 TAILQ_INSERT_TAIL(&node->head, attr, rr_ll); in cd9660_rrip_initialize_inode()
379 if (node->type & CD9660_TYPE_DOT) { in cd9660_rrip_initialize_node()
381 * Handle ER - should be the only entry to appear on in cd9660_rrip_initialize_node()
384 if (node->parent == diskStructure->rootNode) { in cd9660_rrip_initialize_node()
388 if (parent != NULL && parent->node != NULL && in cd9660_rrip_initialize_node()
389 parent->node->inode != NULL) { in cd9660_rrip_initialize_node()
390 /* PX - POSIX attributes */ in cd9660_rrip_initialize_node()
393 cd9660node_rrip_px(current, parent->node); in cd9660_rrip_initialize_node()
394 TAILQ_INSERT_TAIL(&node->head, current, rr_ll); in cd9660_rrip_initialize_node()
396 /* TF - timestamp */ in cd9660_rrip_initialize_node()
399 cd9660node_rrip_tf(current, parent->node); in cd9660_rrip_initialize_node()
400 TAILQ_INSERT_TAIL(&node->head, current, rr_ll); in cd9660_rrip_initialize_node()
402 } else if (node->type & CD9660_TYPE_DOTDOT) { in cd9660_rrip_initialize_node()
403 if (grandparent != NULL && grandparent->node != NULL && in cd9660_rrip_initialize_node()
404 grandparent->node->inode != NULL) { in cd9660_rrip_initialize_node()
405 /* PX - POSIX attributes */ in cd9660_rrip_initialize_node()
408 cd9660node_rrip_px(current, grandparent->node); in cd9660_rrip_initialize_node()
409 TAILQ_INSERT_TAIL(&node->head, current, rr_ll); in cd9660_rrip_initialize_node()
411 /* TF - timestamp */ in cd9660_rrip_initialize_node()
414 cd9660node_rrip_tf(current, grandparent->node); in cd9660_rrip_initialize_node()
415 TAILQ_INSERT_TAIL(&node->head, current, rr_ll); in cd9660_rrip_initialize_node()
418 if (parent != NULL && parent->rr_real_parent != NULL) { in cd9660_rrip_initialize_node()
422 TAILQ_INSERT_TAIL(&node->head, current, rr_ll); in cd9660_rrip_initialize_node()
427 if (node == diskStructure->rr_moved_dir) { in cd9660_rrip_initialize_node()
429 } else if (node->node != NULL) { in cd9660_rrip_initialize_node()
436 if (node->rr_relocated != NULL) { in cd9660_rrip_initialize_node()
440 TAILQ_INSERT_TAIL(&node->head, current, rr_ll); in cd9660_rrip_initialize_node()
444 if (node->rr_real_parent != NULL) { in cd9660_rrip_initialize_node()
448 TAILQ_INSERT_TAIL(&node->head, current, rr_ll); in cd9660_rrip_initialize_node()
461 temp->susp_type = susp_type; in cd9660node_susp_create_node()
462 temp->entry_type = entry_type; in cd9660node_susp_create_node()
463 temp->last_in_suf = 0; in cd9660node_susp_create_node()
465 temp->type_of[0] = type_id[0]; in cd9660node_susp_create_node()
466 temp->type_of[1] = type_id[1]; in cd9660node_susp_create_node()
467 temp->write_location = write_loc; in cd9660node_susp_create_node()
474 temp->attr.su_entry.SP.h.type[0] = type_id[0]; in cd9660node_susp_create_node()
475 temp->attr.su_entry.SP.h.type[1] = type_id[1]; in cd9660node_susp_create_node()
482 p->attr.rr_entry.PL.h.length[0] = 12; in cd9660_rrip_PL()
483 p->attr.rr_entry.PL.h.version[0] = 1; in cd9660_rrip_PL()
490 p->attr.rr_entry.CL.h.length[0] = 12; in cd9660_rrip_CL()
491 p->attr.rr_entry.CL.h.version[0] = 1; in cd9660_rrip_CL()
498 p->attr.rr_entry.RE.h.length[0] = 4; in cd9660_rrip_RE()
499 p->attr.rr_entry.RE.h.version[0] = 1; in cd9660_rrip_RE()
512 sl_ptr = node->node->symlink; in cd9660_createSL()
521 current->attr.rr_entry.SL.h.version[0] = 1; in cd9660_createSL()
522 current->attr.rr_entry.SL.flags[0] = SL_FLAGS_NONE; in cd9660_createSL()
527 memcpy(current->attr.rr_entry.SL.component + path_count, in cd9660_createSL()
563 current->attr.rr_entry.SL.flags[0] |= SL_FLAGS_CONTINUE; in cd9660_createSL()
568 while(j != (249 - path_count)) { in cd9660_createSL()
573 temp_sl[1] = j - 2; in cd9660_createSL()
575 current->attr.rr_entry.SL.component + in cd9660_createSL()
581 current->attr.rr_entry.SL.h.length[0] = path_count + 5; in cd9660_createSL()
582 TAILQ_INSERT_TAIL(&node->head, current, rr_ll); in cd9660_createSL()
585 current->attr.rr_entry.SL.h.version[0] = 1; in cd9660_createSL()
586 current->attr.rr_entry.SL.flags[0] = SL_FLAGS_NONE; in cd9660_createSL()
592 current->attr.rr_entry.SL.component[ in cd9660_createSL()
597 current->attr.rr_entry.SL.component[1] in cd9660_createSL()
602 current->attr.rr_entry.SL.component[ in cd9660_createSL()
611 memcpy(current->attr.rr_entry.SL.component + in cd9660_createSL()
620 current->attr.rr_entry.SL.h.length[0] = path_count + 5; in cd9660_createSL()
621 TAILQ_INSERT_TAIL(&node->head, current, rr_ll); in cd9660_createSL()
636 v->attr.rr_entry.PX.h.length[0] = 44; in cd9660node_rrip_px()
637 v->attr.rr_entry.PX.h.version[0] = 1; in cd9660node_rrip_px()
638 cd9660_bothendian_dword(pxinfo->inode->st.st_mode, in cd9660node_rrip_px()
639 v->attr.rr_entry.PX.mode); in cd9660node_rrip_px()
640 cd9660_bothendian_dword(pxinfo->inode->st.st_nlink, in cd9660node_rrip_px()
641 v->attr.rr_entry.PX.links); in cd9660node_rrip_px()
642 cd9660_bothendian_dword(pxinfo->inode->st.st_uid, in cd9660node_rrip_px()
643 v->attr.rr_entry.PX.uid); in cd9660node_rrip_px()
644 cd9660_bothendian_dword(pxinfo->inode->st.st_gid, in cd9660node_rrip_px()
645 v->attr.rr_entry.PX.gid); in cd9660node_rrip_px()
646 cd9660_bothendian_dword(pxinfo->inode->st.st_ino, in cd9660node_rrip_px()
647 v->attr.rr_entry.PX.serial); in cd9660node_rrip_px()
655 pn_field->attr.rr_entry.PN.h.length[0] = 20; in cd9660node_rrip_pn()
656 pn_field->attr.rr_entry.PN.h.version[0] = 1; in cd9660node_rrip_pn()
658 if (sizeof (fnode->inode->st.st_rdev) > 4) in cd9660node_rrip_pn()
660 (uint64_t)fnode->inode->st.st_rdev >> 32, in cd9660node_rrip_pn()
661 pn_field->attr.rr_entry.PN.high); in cd9660node_rrip_pn()
663 cd9660_bothendian_dword(0, pn_field->attr.rr_entry.PN.high); in cd9660node_rrip_pn()
665 cd9660_bothendian_dword(fnode->inode->st.st_rdev & 0xffffffff, in cd9660node_rrip_pn()
666 pn_field->attr.rr_entry.PN.low); in cd9660node_rrip_pn()
674 int nm_length = strlen(file_node->isoDirRecord->name) + 5;
675 p->attr.rr_entry.NM.h.type[0] = 'N';
676 p->attr.rr_entry.NM.h.type[1] = 'M';
677 sprintf(p->attr.rr_entry.NM.altname, "%s", file_node->isoDirRecord->name);
678 p->attr.rr_entry.NM.h.length[0] = (unsigned char)nm_length;
679 p->attr.rr_entry.NM.h.version[0] = (unsigned char)1;
680 p->attr.rr_entry.NM.flags[0] = (unsigned char) NM_PARENT;
688 p->attr.rr_entry.TF.flags[0] = TF_MODIFY | TF_ACCESS | TF_ATTRIBUTES; in cd9660node_rrip_tf()
689 p->attr.rr_entry.TF.h.length[0] = 5; in cd9660node_rrip_tf()
690 p->attr.rr_entry.TF.h.version[0] = 1; in cd9660node_rrip_tf()
697 cd9660_time_915(p->attr.rr_entry.TF.timestamp, in cd9660node_rrip_tf()
698 _node->inode->st.st_mtime); in cd9660node_rrip_tf()
699 p->attr.rr_entry.TF.h.length[0] += 7; in cd9660node_rrip_tf()
701 cd9660_time_915(p->attr.rr_entry.TF.timestamp + 7, in cd9660node_rrip_tf()
702 _node->inode->st.st_atime); in cd9660node_rrip_tf()
703 p->attr.rr_entry.TF.h.length[0] += 7; in cd9660node_rrip_tf()
705 cd9660_time_915(p->attr.rr_entry.TF.timestamp + 14, in cd9660node_rrip_tf()
706 _node->inode->st.st_ctime); in cd9660node_rrip_tf()
707 p->attr.rr_entry.TF.h.length[0] += 7; in cd9660node_rrip_tf()
714 p->attr.su_entry.SP.h.length[0] = 7; in cd9660_susp_sp()
715 p->attr.su_entry.SP.h.version[0] = 1; in cd9660_susp_sp()
716 p->attr.su_entry.SP.check[0] = 0xBE; in cd9660_susp_sp()
717 p->attr.su_entry.SP.check[1] = 0xEF; in cd9660_susp_sp()
718 p->attr.su_entry.SP.len_skp[0] = 0; in cd9660_susp_sp()
725 p->attr.su_entry.ST.h.type[0] = 'S'; in cd9660_susp_st()
726 p->attr.su_entry.ST.h.type[1] = 'T'; in cd9660_susp_st()
727 p->attr.su_entry.ST.h.length[0] = 4; in cd9660_susp_st()
728 p->attr.su_entry.ST.h.version[0] = 1; in cd9660_susp_st()
735 p->attr.su_entry.CE.h.length[0] = 28; in cd9660_susp_ce()
736 p->attr.su_entry.CE.h.version[0] = 1; in cd9660_susp_ce()
764 r->attr.rr_entry.NM.h.version[0] = 1; in cd9660_rrip_add_NM()
765 r->attr.rr_entry.NM.flags[0] = RRIP_NM_FLAGS_NONE; in cd9660_rrip_add_NM()
770 r->attr.rr_entry.NM.flags[0] = RRIP_NM_FLAGS_CONTINUE; in cd9660_rrip_add_NM()
774 memcpy(r->attr.rr_entry.NM.altname, p, len); in cd9660_rrip_add_NM()
775 r->attr.rr_entry.NM.h.length[0] = 5 + len; in cd9660_rrip_add_NM()
777 TAILQ_INSERT_TAIL(&node->head, r, rr_ll); in cd9660_rrip_add_NM()
786 cd9660_rrip_add_NM(node, node->node->name); in cd9660_rrip_NM()
801 r->attr.su_entry.ER.h.length[0] = 8; in cd9660_susp_ER()
802 r->attr.su_entry.ER.h.version[0] = 1; in cd9660_susp_ER()
804 r->attr.su_entry.ER.len_id[0] = (u_char)strlen(ext_id); in cd9660_susp_ER()
805 r->attr.su_entry.ER.len_des[0] = (u_char)strlen(ext_des); in cd9660_susp_ER()
806 r->attr.su_entry.ER.len_src[0] = (u_char)strlen(ext_src); in cd9660_susp_ER()
808 l = r->attr.su_entry.ER.len_id[0] + in cd9660_susp_ER()
809 r->attr.su_entry.ER.len_src[0] + in cd9660_susp_ER()
810 r->attr.su_entry.ER.len_des[0]; in cd9660_susp_ER()
813 assert(l + r->attr.su_entry.ER.h.length[0] <= 254); in cd9660_susp_ER()
815 r->attr.su_entry.ER.h.length[0] += (u_char)l; in cd9660_susp_ER()
818 r->attr.su_entry.ER.ext_ver[0] = ext_version; in cd9660_susp_ER()
819 memcpy(r->attr.su_entry.ER.ext_data, ext_id, in cd9660_susp_ER()
820 (int)r->attr.su_entry.ER.len_id[0]); in cd9660_susp_ER()
821 l = (int) r->attr.su_entry.ER.len_id[0]; in cd9660_susp_ER()
822 memcpy(r->attr.su_entry.ER.ext_data + l,ext_des, in cd9660_susp_ER()
823 (int)r->attr.su_entry.ER.len_des[0]); in cd9660_susp_ER()
825 l += (int)r->attr.su_entry.ER.len_des[0]; in cd9660_susp_ER()
826 memcpy(r->attr.su_entry.ER.ext_data + l,ext_src, in cd9660_susp_ER()
827 (int)r->attr.su_entry.ER.len_src[0]); in cd9660_susp_ER()
829 TAILQ_INSERT_TAIL(&node->head, r, rr_ll); in cd9660_susp_ER()