#ifndef BTPD_METAINFO_H #define BTPD_METAINFO_H struct mi_file { char *path; off_t length; }; struct mi_tier { int nurls; char **urls; }; struct mi_announce { int ntiers; struct mi_tier *tiers; }; char *mi_name(const char *p); uint8_t *mi_info_hash(const char *p, uint8_t *hash); uint8_t *mi_hashes(const char *p); int mi_simple(const char *p); size_t mi_npieces(const char *p); off_t mi_total_length(const char *p); off_t mi_piece_length(const char *p); struct mi_announce *mi_announce(const char *p); void mi_free_announce(struct mi_announce *ann); size_t mi_nfiles(const char *p); struct mi_file *mi_files(const char *p); void mi_free_files(unsigned nfiles, struct mi_file *files); int mi_test(const char *p, size_t size); char *mi_load(const char *path, size_t *size); #endif