static int isoent_add_child_head(struct isoent *, struct isoent *);
static int isoent_add_child_tail(struct isoent *, struct isoent *);
static void isoent_remove_child(struct isoent *, struct isoent *);
-static void isoent_trim_root_directory(struct iso9660 *);
static void isoent_setup_directory_location(struct iso9660 *,
int, struct vdd *);
static void isoent_setup_file_location(struct iso9660 *, int);
if (iso9660->birth_time == 0)
#endif
time(&(iso9660->birth_time));
- isoent_trim_root_directory(iso9660);
/*
* Prepare a bootable ISO image.
(struct archive_rb_node *)child);
}
-/*
- * Trim extra directories.
- * If the root directory is a virtual directory and has one sub-directory
- * only, the sub-direcotry become a new root directory.
- */
-static void
-isoent_trim_root_directory(struct iso9660 *iso9660)
-{
- struct isoent *rootent, *child;
-
- rootent = iso9660->primary.rootent;
- while (rootent->virtual) {
- if (rootent->children.cnt != 1)
- break;
- child = rootent->children.first;
- if (child->dir) {
- _isoent_free(rootent);
- iso9660->primary.rootent = rootent = child;
- rootent->parent = rootent;
- iso9660->dircnt_max--;
- } else
- break;
- }
-}
-
static int
isoent_clone_tree(struct archive_write *a, struct isoent **nroot,
struct isoent *root)