Files
ec3/src/read.h

57 lines
1.3 KiB
C
Raw Normal View History

#ifndef READ_H_
#define READ_H_
#include "status.h"
#include <stdint.h>
#include <stdio.h>
struct ec3_reader;
struct ec3_tag_reader;
struct ec3_container_info {
unsigned short c_version;
unsigned short c_cluster_size;
size_t c_tag_table_offset;
size_t c_extent_table_offset;
size_t c_cluster_table_offset;
unsigned int c_nr_tags;
unsigned int c_nr_extents;
unsigned int c_nr_cluster_groups;
uint64_t c_id;
};
struct ec3_tag_info {
unsigned long tag_type;
unsigned long tag_flags;
unsigned long tag_checksum;
unsigned long long tag_ident;
};
struct ec3_extent_info {
unsigned long long ex_owner;
unsigned long ex_logical_cluster;
unsigned long ex_physical_cluster;
unsigned long ex_count;
};
extern enum ec3_status ec3_reader_create(FILE *inp, struct ec3_reader **out);
extern void ec3_reader_finish(struct ec3_reader *reader);
extern const struct ec3_container_info *ec3_reader_get_container_info(
const struct ec3_reader *reader);
extern const struct ec3_tag_info *ec3_reader_get_tags(
const struct ec3_reader *reader);
extern const struct ec3_extent_info *ec3_reader_get_extents(
const struct ec3_reader *reader);
extern enum ec3_status ec3_reader_open_tag(
struct ec3_reader *reader,
uint64_t tag_ident,
struct ec3_tag_reader **out);
extern enum ec3_status ec3_tag_reader_close(struct ec3_tag_reader *tag);
#endif