11 #ifndef LIBISO_UTIL_H_
12 #define LIBISO_UTIL_H_
17 #ifdef HAVE_INTTYPES_H
31 # define MAX(a, b) (((a) > (b)) ? (a) : (b))
35 # define MIN(a, b) (((a) < (b)) ? (a) : (b))
38 #define DIV_UP(n,div) ((n + div - 1) / div)
39 #define ROUND_UP(n,mul) (DIV_UP(n, mul) * mul)
41 int int_pow(
int base,
int power);
62 int strconv(
const char *input,
const char *icharset,
const char *ocharset,
67 int strnconv(
const char *str,
const char *icharset,
const char *ocharset,
68 size_t len,
char **output);
72 int strnconvl(
const char *str,
const char *icharset,
const char *ocharset,
73 size_t len,
char **output,
size_t *out_len);
87 int str2ascii(
const char *icharset,
const char *input,
char **output);
102 int str2ucs(
const char *icharset,
const char *input, uint16_t **output);
118 int str2utf16be(
const char *icharset,
const char *input, uint16_t **output);
150 char *
iso_r_dirid(
const char *src,
int size,
int relaxed);
165 char *
iso_1_fileid(
const char *src,
int relaxed,
int force_dots);
189 char *
iso_r_fileid(
const char *src,
size_t len,
int relaxed,
int forcedot);
223 size_t ucslen(
const uint16_t *str);
228 uint16_t *
ucsrchr(
const uint16_t *str,
char c);
233 uint16_t *
ucsdup(
const uint16_t *str);
238 int ucscmp(
const uint16_t *s1,
const uint16_t *s2);
243 uint16_t *
ucscpy(uint16_t *dest,
const uint16_t *src);
250 uint16_t *
ucsncpy(uint16_t *dest,
const uint16_t *src,
size_t n);
263 int str2d_char(
const char *icharset,
const char *input,
char **output);
264 int str2a_char(
const char *icharset,
const char *input,
char **output);
266 void iso_lsb(uint8_t *buf, uint32_t num,
int bytes);
267 void iso_lsb64(uint8_t *buf, uint64_t num);
268 void iso_msb(uint8_t *buf, uint32_t num,
int bytes);
269 void iso_bb(uint8_t *buf, uint32_t num,
int bytes);
273 int iso_lsb_to_buf(
char **wpt, uint32_t value,
int bytes,
int flag);
281 uint32_t
iso_read_bb(
const uint8_t *buf,
int bytes,
int *error);
331 void strncpy_pad(
char *dest,
const char *src,
size_t max);
414 int (*include_item)(
void *));
526 int *result_len,
int flag);
537 int buffer_len,
int flag);
556 void *ctx, uint32_t ctx_start_lba,
557 int *tag_type, uint32_t *next_tag,
int flag);
569 char *name,
int flag);
615 #define LIBISO_ALLOC_MEM(pt, typ, count) { \
616 pt= (typ *) iso_alloc_mem(sizeof(typ), (size_t) (count), 0); \
618 ret= ISO_OUT_OF_MEM; goto ex; \
621 #define LIBISO_ALLOC_MEM_VOID(pt, typ, count) { \
622 pt= (typ *) iso_alloc_mem(sizeof(typ), (size_t) (count), 0); \
627 #define LIBISO_FREE_MEM(pt) { \
int iso_util_tag_magic(int tag_type, char **tag_magic, int *len, int flag)
int iso_util_bin_to_hex(char *target, uint8_t *bytes, int num_bytes, int flag)
uint32_t iso_read_msb(const uint8_t *buf, int bytes)
size_t iso_rbtree_count_array(IsoRBTree *tree, size_t initial_count, int(*include_item)(void *))
char * iso_r_dirid(const char *src, int size, int relaxed)
int iso_htable_remove_ptr(IsoHTable *table, void *key, hfree_data_t free_data)
int iso_util_eval_md5_tag(char *block, int desired, uint32_t lba, void *ctx, uint32_t ctx_start_lba, int *tag_type, uint32_t *next_tag, int flag)
char * iso_1_dirid(const char *src, int relaxed)
int str2ucs(const char *icharset, const char *input, uint16_t **output)
int iso_lsb_to_buf(char **wpt, uint32_t value, int bytes, int flag)
int strnconvl(const char *str, const char *icharset, const char *ocharset, size_t len, char **output, size_t *out_len)
int checksum_md5_xinfo_cloner(void *old_data, void **new_data, int flag)
int iso_util_decode_len_bytes(uint32_t *data, char *buffer, int *data_len, int buffer_len, int flag)
int str2d_char(const char *icharset, const char *input, char **output)
void iso_datetime_17(uint8_t *buf, time_t t, int always_gmt)
int iso_htable_add(IsoHTable *table, void *key, void *data)
int iso_clone_mgtd_mem(char *in, char **out, size_t size)
int(* compare_function_t)(const void *a, const void *b)
int checksum_cx_xinfo_func(void *data, int flag)
uint16_t * iso_j_dir_id(const uint16_t *src, int flag)
int iso_util_hex_to_bin(char *hex, char *bin, int bin_size, int *bin_count, int flag)
int iso_htable_create(size_t size, hash_funtion_t hash, compare_function_t compare, IsoHTable **table)
int iso_htable_remove(IsoHTable *table, void *key, hfree_data_t free_data)
void iso_bb(uint8_t *buf, uint32_t num, int bytes)
size_t iso_rbtree_get_size(IsoRBTree *tree)
char * iso_2_fileid(const char *src)
int iso_htable_put(IsoHTable *table, void *key, void *data)
int checksum_cx_xinfo_cloner(void *old_data, void **new_data, int flag)
int checksum_md5_xinfo_func(void *data, int flag)
uint64_t iso_read_msb64(const uint8_t *buf)
char * iso_r_fileid(const char *src, size_t len, int relaxed, int forcedot)
void iso_msb(uint8_t *buf, uint32_t num, int bytes)
int iso_util_encode_len_bytes(uint32_t data, char *buffer, int data_len, int *result_len, int flag)
int ucscmp(const uint16_t *s1, const uint16_t *s2)
char * iso_1_fileid(const char *src, int relaxed, int force_dots)
void(* hfree_data_t)(void *key, void *data)
char * iso_util_strcopy(const char *buf, size_t len)
unsigned int(* hash_funtion_t)(const void *key)
void iso_rbtree_destroy(IsoRBTree *tree, void(*free_data)(void *))
int str2utf16be(const char *icharset, const char *input, uint16_t **output)
void iso_datetime_7(uint8_t *buf, time_t t, int always_gmt)
char * iso_2_dirid(const char *src)
int iso_rbtree_new(int(*compare)(const void *, const void *), IsoRBTree **tree)
uint16_t * ucsdup(const uint16_t *str)
int str2ascii(const char *icharset, const char *input, char **output)
uint16_t * ucscpy(uint16_t *dest, const uint16_t *src)
uint16_t iso_htons(uint16_t v)
int iso_eaccess(const char *path)
void iso_handle_split_utf16(uint16_t *utf_word)
uint32_t iso_read_lsb(const uint8_t *buf, int bytes)
off_t iso_scanf_io_size(char *text, int flag)
void * iso_alloc_mem(size_t size, size_t count, int flag)
void strncpy_pad(char *dest, const char *src, size_t max)
int int_pow(int base, int power)
uint64_t iso_read_lsb64(const uint8_t *buf)
char * iso_util_strcopy_untail(const char *buf, size_t len)
uint16_t * ucsrchr(const uint16_t *str, char c)
int iso_truncate_rr_name(int truncate_mode, int truncate_length, char *name, int flag)
void iso_htable_destroy(IsoHTable *table, hfree_data_t free_data)
time_t iso_datetime_read_17(const uint8_t *buf)
size_t ucslen(const uint16_t *str)
time_t iso_datetime_read_7(const uint8_t *buf)
uint16_t * iso_j_file_id(const uint16_t *src, int flag)
int iso_clone_mem(char *in, char **out, size_t size)
void iso_lsb64(uint8_t *buf, uint64_t num)
char * ucs2str(const char *buf, size_t len)
unsigned int iso_str_hash(const void *key)
void iso_lsb(uint8_t *buf, uint32_t num, int bytes)
int iso_hfsplus_xinfo_cloner(void *old_data, void **new_data, int flag)
int str2a_char(const char *icharset, const char *input, char **output)
uint16_t * ucsncpy(uint16_t *dest, const uint16_t *src, size_t n)
int iso_rbtree_insert(IsoRBTree *tree, void *data, void **item)
uint32_t iso_read_bb(const uint8_t *buf, int bytes, int *error)
int iso_htable_get(IsoHTable *table, void *key, void **data)
uint16_t iso_ntohs(uint16_t v)
int strconv(const char *input, const char *icharset, const char *ocharset, char **output)
void ** iso_rbtree_to_array(IsoRBTree *tree, int(*include_item)(void *), size_t *size)
int strnconv(const char *str, const char *icharset, const char *ocharset, size_t len, char **output)
int iso_init_locale(int flag)
struct iso_hnode ** table
compare_function_t compare