00001 /* -*- indent-tabs-mode: t; tab-width: 8; c-basic-offset: 8; -*- */ 00002 00007 #ifndef __ISO_TREE 00008 #define __ISO_TREE 00009 00010 #include <sys/types.h> 00011 #include <time.h> 00012 00013 #include "libisofs.h" 00014 00018 struct iso_names { 00019 char *full; 00020 char *iso1; 00021 char *iso2; 00022 char *rockridge; 00023 char *joliet; 00024 int jsize; 00025 }; 00026 00030 struct iso_posix_fields { 00031 off_t size; 00032 mode_t mode; 00033 uid_t user; 00034 gid_t group; 00035 time_t mtime; 00036 time_t atime; 00037 time_t ctime; 00038 }; 00039 00043 struct iso_tree_dir { 00044 struct iso_tree_dir *parent; 00045 struct iso_volume *volume; 00047 struct iso_names name; 00048 struct iso_posix_fields attrib; 00050 int nchildren; 00051 int nfiles; 00052 struct iso_tree_dir **children; 00053 struct iso_tree_file **files; 00054 }; 00055 00059 struct iso_tree_file { 00060 char *path; 00061 struct iso_tree_dir *parent; 00062 struct iso_volume *volume; 00064 struct iso_names name; 00065 struct iso_posix_fields attrib; 00066 }; 00067 00071 struct iso_tree_dir *iso_tree_new_root(const struct iso_volume *volume); 00072 00076 void iso_tree_free(struct iso_tree_dir *root); 00077 00082 void iso_tree_sort(struct iso_tree_dir *root); 00083 00084 #endif /* __ISO_TREE */