Lines Matching defs:diskStructure
188 cd9660_set_defaults(iso9660_disk *diskStructure)
191 diskStructure->sectorSize = 2048;
194 diskStructure->verbose_level = 0;
195 diskStructure->keep_bad_images = 0;
196 diskStructure->isoLevel = 2;
198 diskStructure->rock_ridge_enabled = 0;
199 diskStructure->rock_ridge_renamed_dir_name = 0;
200 diskStructure->rock_ridge_move_count = 0;
201 diskStructure->rr_moved_dir = 0;
203 diskStructure->chrp_boot = 0;
205 diskStructure->include_padding_areas = 1;
208 diskStructure->allow_deep_trees =
209 diskStructure->allow_start_dot =
210 diskStructure->allow_max_name =
211 diskStructure->allow_illegal_chars =
212 diskStructure->allow_lowercase =
213 diskStructure->allow_multidot =
214 diskStructure->omit_trailing_period = 0;
217 memset(&diskStructure->primaryDescriptor, 0, 2048);
219 memset(diskStructure->primaryDescriptor.publisher_id, 0x20,128);
220 memset(diskStructure->primaryDescriptor.preparer_id, 0x20,128);
221 memset(diskStructure->primaryDescriptor.application_id, 0x20,128);
222 memset(diskStructure->primaryDescriptor.copyright_file_id, 0x20,37);
223 memset(diskStructure->primaryDescriptor.abstract_file_id, 0x20,37);
224 memset(diskStructure->primaryDescriptor.bibliographic_file_id, 0x20,37);
226 strlcpy(diskStructure->primaryDescriptor.system_id, "FreeBSD",
227 sizeof(diskStructure->primaryDescriptor.system_id));
230 diskStructure->has_generic_bootimage = 0;
231 diskStructure->generic_bootimage = NULL;
233 diskStructure->boot_image_directory = 0;
234 /*memset(diskStructure->boot_descriptor, 0, 2048);*/
236 diskStructure->is_bootable = 0;
237 TAILQ_INIT(&diskStructure->boot_images);
238 LIST_INIT(&diskStructure->boot_entries);
244 iso9660_disk *diskStructure = ecalloc(1, sizeof(*diskStructure));
250 { letter, name, &diskStructure->field, \
251 sizeof(diskStructure->field) == 8 ? OPT_INT64 : \
252 (sizeof(diskStructure->field) == 4 ? OPT_INT32 : \
253 (sizeof(diskStructure->field) == 2 ? OPT_INT16 : OPT_INT8)), \
303 fsopts->fs_specific = diskStructure;
306 cd9660_set_defaults(diskStructure);
352 iso9660_disk *diskStructure = fsopts->fs_specific;
378 diskStructure->primaryDescriptor.volume_id);
382 diskStructure->primaryDescriptor.application_id);
386 diskStructure->primaryDescriptor.publisher_id);
390 diskStructure->primaryDescriptor.preparer_id);
394 diskStructure->primaryDescriptor.volume_set_id);
403 rv = cd9660_add_boot_disk(diskStructure, buf);
411 rv = cd9660_add_generic_bootimage(diskStructure, buf);
423 diskStructure->boot_image_directory =
427 'd', diskStructure->boot_image_directory);
433 cd9660_eltorito_add_boot_option(diskStructure, name, 0);
442 cd9660_eltorito_add_boot_option(diskStructure,
471 iso9660_disk *diskStructure = fsopts->fs_specific;
473 if (diskStructure->verbose_level > 0)
475 diskStructure->isoLevel);
476 if (diskStructure->isoLevel < 2 &&
477 diskStructure->allow_multidot)
484 if (diskStructure->verbose_level > 0)
503 diskStructure->rootNode = real_root;
507 cd9660_convert_structure(diskStructure, root, real_root, 1,
516 if (diskStructure->verbose_level > 0)
521 cd9660_add_dot_records(diskStructure, real_root);
523 cd9660_setup_root_node(diskStructure);
525 if (diskStructure->verbose_level > 0)
529 if (diskStructure->rock_ridge_enabled) {
530 cd9660_susp_initialize(diskStructure, diskStructure->rootNode,
531 diskStructure->rootNode, NULL);
535 diskStructure->pathTableLength = cd9660_generate_path_table(
536 diskStructure);
538 pathTableSectors = CD9660_BLOCKS(diskStructure->sectorSize,
539 diskStructure->pathTableLength);
541 firstAvailableSector = cd9660_setup_volume_descriptors(diskStructure);
542 if (diskStructure->is_bootable) {
543 firstAvailableSector = cd9660_setup_boot(diskStructure,
549 diskStructure->primaryLittleEndianTableSector = firstAvailableSector;
550 diskStructure->primaryBigEndianTableSector =
551 diskStructure->primaryLittleEndianTableSector + pathTableSectors;
554 diskStructure->secondaryBigEndianTableSector = -1;
555 diskStructure->secondaryLittleEndianTableSector = -1;
557 diskStructure->dataFirstSector =
558 diskStructure->primaryBigEndianTableSector + pathTableSectors;
559 if (diskStructure->verbose_level > 0)
563 diskStructure->pathTableLength, pathTableSectors);
565 startoffset = diskStructure->sectorSize*diskStructure->dataFirstSector;
567 totalSpace = cd9660_compute_offsets(diskStructure, real_root, startoffset);
569 diskStructure->totalSectors = diskStructure->dataFirstSector +
570 CD9660_BLOCKS(diskStructure->sectorSize, totalSpace);
573 if (diskStructure->rock_ridge_enabled) {
574 diskStructure->susp_continuation_area_start_sector =
575 diskStructure->totalSectors;
576 diskStructure->totalSectors +=
577 CD9660_BLOCKS(diskStructure->sectorSize,
578 diskStructure->susp_continuation_area_size);
579 cd9660_susp_finalize(diskStructure, diskStructure->rootNode);
583 cd9660_finalize_PVD(diskStructure);
586 /* diskStructure->totalSectors+=150; */
589 if (diskStructure->verbose_level > 0) {
593 diskStructure->primaryLittleEndianTableSector);
595 PRId64 "\n", __func__, diskStructure->dataFirstSector);
597 PRId64 "\n", __func__, diskStructure->totalSectors);
604 if (diskStructure->include_padding_areas)
605 diskStructure->totalSectors += 150;
607 ret = cd9660_write_image(diskStructure, image);
609 if (diskStructure->verbose_level > 1) {
610 debug_print_volume_descriptor_information(diskStructure);
611 debug_print_tree(diskStructure, real_root, 0);
618 if (diskStructure->verbose_level > 0)
629 cd9660_finalize_PVD(iso9660_disk *diskStructure)
634 memcpy(diskStructure->primaryDescriptor.root_directory_record,
635 diskStructure->rootNode->dot_record->isoDirRecord, 34);
638 diskStructure->primaryDescriptor.root_directory_record[0] = 34;
641 cd9660_bothendian_dword(diskStructure->totalSectors,
642 (unsigned char *)diskStructure->primaryDescriptor.volume_space_size);
644 (unsigned char *)diskStructure->primaryDescriptor.volume_set_size);
647 diskStructure->primaryDescriptor.volume_sequence_number);
648 cd9660_bothendian_word(diskStructure->sectorSize,
650 diskStructure->primaryDescriptor.logical_block_size);
651 cd9660_bothendian_dword(diskStructure->pathTableLength,
652 (unsigned char *)diskStructure->primaryDescriptor.path_table_size);
654 cd9660_731(diskStructure->primaryLittleEndianTableSector,
655 (u_char *)diskStructure->primaryDescriptor.type_l_path_table);
656 cd9660_732(diskStructure->primaryBigEndianTableSector,
657 (u_char *)diskStructure->primaryDescriptor.type_m_path_table);
659 diskStructure->primaryDescriptor.file_structure_version[0] = 1;
662 cd9660_pad_string_spaces(diskStructure->primaryDescriptor.volume_id, 32);
663 cd9660_pad_string_spaces(diskStructure->primaryDescriptor.system_id, 32);
664 cd9660_pad_string_spaces(diskStructure->primaryDescriptor.volume_set_id,
666 cd9660_pad_string_spaces(diskStructure->primaryDescriptor.publisher_id,
668 cd9660_pad_string_spaces(diskStructure->primaryDescriptor.preparer_id,
670 cd9660_pad_string_spaces(diskStructure->primaryDescriptor.application_id,
673 diskStructure->primaryDescriptor.copyright_file_id, 37);
675 diskStructure->primaryDescriptor.abstract_file_id, 37);
677 diskStructure->primaryDescriptor.bibliographic_file_id, 37);
681 (unsigned char *)diskStructure->primaryDescriptor.creation_date,
684 (unsigned char *)diskStructure->primaryDescriptor.modification_date,
688 cd9660_set_date(diskStructure->primaryDescriptor.expiration_date,
692 memset(diskStructure->primaryDescriptor.expiration_date, '0', 16);
693 diskStructure->primaryDescriptor.expiration_date[16] = 0;
696 (unsigned char *)diskStructure->primaryDescriptor.effective_date,
699 cd9660_time_915(diskStructure->rootNode->dot_record->isoDirRecord->date,
726 cd9660_setup_root_node(iso9660_disk *diskStructure)
728 cd9660_populate_iso_dir_record(diskStructure->rootNode->isoDirRecord,
735 cd9660_setup_volume_descriptors(iso9660_disk *diskStructure)
745 (unsigned char *)&diskStructure->primaryDescriptor;
751 diskStructure->firstVolumeDescriptor = temp;
755 if (diskStructure->is_bootable) {
761 if (diskStructure->verbose_level > 0)
763 cd9660_setup_boot_volume_descriptor(diskStructure, t);
796 cd9660_translate_node_common(iso9660_disk *diskStructure, cd9660node *newnode)
804 (void)cd9660_convert_filename(diskStructure, newnode->node->name,
832 cd9660_translate_node(iso9660_disk *diskStructure, fsnode *node,
836 if (diskStructure->verbose_level > 0)
848 if (cd9660_translate_node_common(diskStructure, newnode) == 0)
982 cd9660_handle_collisions(iso9660_disk *diskStructure, cd9660node *colliding,
1018 iter = cd9660_rename_filename(diskStructure, iter, skip,
1026 cd9660_rename_filename(iso9660_disk *diskStructure, cd9660node *iter, int num,
1035 if (diskStructure->verbose_level > 0)
1038 assert(1 <= diskStructure->isoLevel && diskStructure->isoLevel <= 2);
1040 if (diskStructure->isoLevel == 1)
1042 else if (diskStructure->isoLevel == 2)
1088 if (diskStructure->isoLevel == 1) {
1141 cd9660_copy_filenames(iso9660_disk *diskStructure, cd9660node *node)
1149 debug_print_tree(diskStructure, diskStructure->rootNode, 0);
1154 cd9660_copy_filenames(diskStructure, cn);
1220 cd9660_rrip_move_directory(iso9660_disk *diskStructure, cd9660node *dir)
1231 * and rename it to "diskStructure->rock_ridge_move_count" (as a string)
1235 if (diskStructure->rr_moved_dir == NULL) {
1236 diskStructure->rr_moved_dir = cd9660_create_directory(
1237 diskStructure, ISO_RRIP_DEFAULT_MOVE_DIR_NAME,
1238 diskStructure->rootNode, dir);
1239 if (diskStructure->rr_moved_dir == NULL)
1241 cd9660_time_915(diskStructure->rr_moved_dir->isoDirRecord->date,
1246 tfile = cd9660_create_file(diskStructure, dir->node->name, dir->parent,
1251 diskStructure->rock_ridge_move_count++;
1253 diskStructure->rock_ridge_move_count);
1267 dir->parent = diskStructure->rr_moved_dir;
1273 cd9660_sorted_child_insert(diskStructure->rr_moved_dir, dir);
1287 cd9660_add_dot_records(iso9660_disk *diskStructure, cd9660node *root)
1296 cd9660_add_dot_records(diskStructure, cn);
1298 cd9660_create_special_directory(diskStructure, CD9660_TYPE_DOT, root);
1299 cd9660_create_special_directory(diskStructure, CD9660_TYPE_DOTDOT,
1315 cd9660_convert_structure(iso9660_disk *diskStructure, fsnode *root,
1359 cd9660_translate_node(diskStructure, iterator,
1374 if ((!diskStructure->allow_deep_trees) &&
1375 (!diskStructure->rock_ridge_enabled)) {
1381 } else if (diskStructure->
1391 diskStructure,
1406 cd9660_convert_structure(diskStructure,
1446 cd9660_copy_filenames(diskStructure, parent_node);
1449 flag = cd9660_handle_collisions(diskStructure, parent_node,
1499 cd9660_generate_path_table(iso9660_disk *diskStructure)
1501 cd9660node *cn, *dirNode = diskStructure->rootNode;
1509 PTQUEUE_NEW(n, ptq_entry, -1, diskStructure->rootNode);
1573 cd9660_level1_convert_filename(iso9660_disk *diskStructure, const char *oldname,
1619 if (!found_ext && !diskStructure->omit_trailing_period)
1629 cd9660_level2_convert_filename(iso9660_disk *diskStructure, const char *oldname,
1651 if (diskStructure->allow_multidot) {
1679 if (!found_ext && !diskStructure->omit_trailing_period)
1696 cd9660_convert_filename(iso9660_disk *diskStructure, const char *oldname,
1699 assert(1 <= diskStructure->isoLevel && diskStructure->isoLevel <= 2);
1700 if (diskStructure->isoLevel == 1)
1701 return(cd9660_level1_convert_filename(diskStructure,
1703 else if (diskStructure->isoLevel == 2)
1704 return (cd9660_level2_convert_filename(diskStructure,
1710 cd9660_compute_record_size(iso9660_disk *diskStructure, cd9660node *node)
1714 if (diskStructure->rock_ridge_enabled)
1723 cd9660_populate_dot_records(iso9660_disk *diskStructure, cd9660node *node)
1732 cd9660_compute_record_size(diskStructure, node->dot_record);
1734 if (node == diskStructure->rootNode) {
1749 cd9660_compute_record_size(diskStructure, node->dot_dot_record);
1759 cd9660_compute_offsets(iso9660_disk *diskStructure, cd9660node *node,
1785 diskStructure, node);
1788 CD9660_BLOCKS(diskStructure->sectorSize,startOffset);
1800 cd9660_compute_record_size(diskStructure, child);
1801 if ((cd9660_compute_record_size(diskStructure, child) +
1803 diskStructure->sectorSize) {
1809 cd9660_compute_record_size(diskStructure, child);
1813 diskStructure->sectorSize,node->isoDirRecord->size);
1819 used_bytes += node->fileSectorsUsed * diskStructure->sectorSize;
1825 r = cd9660_compute_offsets(diskStructure, child,
1836 cd9660_populate_dot_records(diskStructure, node);
1846 cd9660_compute_record_size(diskStructure, child);
1849 CD9660_BLOCKS(diskStructure->sectorSize,
1855 CD9660_BLOCKS(diskStructure->sectorSize,
1859 diskStructure->sectorSize;
1900 cd9660_create_virtual_entry(iso9660_disk *diskStructure, const char *name,
1916 cd9660_convert_filename(diskStructure, tfsnode->name,
1953 cd9660_create_file(iso9660_disk *diskStructure, const char *name,
1958 temp = cd9660_create_virtual_entry(diskStructure, name, parent, 1, 1);
1969 if (cd9660_translate_node_common(diskStructure, temp) == 0)
1981 cd9660_create_directory(iso9660_disk *diskStructure, const char *name,
1986 temp = cd9660_create_virtual_entry(diskStructure, name, parent, 0, 1);
1996 if (cd9660_translate_node_common(diskStructure, temp) == 0)
2002 cd9660_create_special_directory(iso9660_disk *diskStructure, u_char type,
2018 if ((temp = cd9660_create_virtual_entry(diskStructure, na, parent,
2050 cd9660_add_generic_bootimage(iso9660_disk *diskStructure, const char *bootimage)
2061 diskStructure->generic_bootimage = estrdup(bootimage);
2064 if (lstat(diskStructure->generic_bootimage, &stbuf) == -1)
2066 diskStructure->generic_bootimage);
2073 if (diskStructure->verbose_level > 0) {
2078 diskStructure->has_generic_bootimage = 1;