Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00026 #ifndef UDF_H
00027 #define UDF_H
00028
00029 #include <cdio/cdio.h>
00030 #include <cdio/ecma_167.h>
00031 #include <cdio/posix.h>
00032
00033 typedef uint16_t partition_num_t;
00034
00036 typedef struct udf_s udf_t;
00037 typedef struct udf_file_s udf_file_t;
00038
00039 typedef struct udf_dirent_s {
00040 char *psz_name;
00041 bool b_dir;
00042 bool b_parent;
00043
00044
00045 udf_t *p_udf;
00046 uint32_t i_part_start;
00047 uint32_t i_loc, i_loc_end;
00048 uint64_t dir_left;
00049 uint8_t *sector;
00050 udf_fileid_desc_t *fid;
00051
00052
00053 udf_file_entry_t fe;
00054 } udf_dirent_t;;
00055
00056
00057
00062 typedef enum {
00063 UDF_BLOCKSIZE = 2048
00064 } udf_enum1_t;
00065
00070 extern udf_enum1_t debug_udf_enum1;
00071
00072 #ifdef __cplusplus
00073 extern "C" {
00074 #endif
00075
00079 bool udf_close (udf_t *p_udf);
00080
00087 driver_return_code_t udf_read_sectors (const udf_t *p_udf, void *ptr,
00088 lsn_t i_start, long int i_blocks);
00089
00096 udf_t *udf_open (const char *psz_path);
00097
00102 int16_t udf_get_part_number(const udf_t *p_udf);
00103
00112 udf_dirent_t *udf_get_root (udf_t *p_udf, bool b_any_partition,
00113 partition_num_t i_partition);
00114
00121 int udf_get_volume_id(udf_t *p_udf, char *psz_volid,
00122 unsigned int i_volid);
00123
00133 int udf_get_volumeset_id(udf_t *p_udf, uint8_t *volsetid,
00134 unsigned int i_volsetid);
00135
00139 udf_dirent_t *udf_fopen(udf_dirent_t *p_udf_root, const char *psz_name);
00140
00178 char *udf_mode_string (mode_t i_mode, char *psz_str);
00179
00180 bool udf_get_lba(const udf_file_entry_t *p_udf_fe,
00181 uint32_t *start, uint32_t *end);
00182
00183 #ifdef __cplusplus
00184 }
00185 #endif
00186
00187 #include <cdio/udf_time.h>
00188 #include <cdio/udf_file.h>
00189
00190 #endif