*/
struct hreader {
const char *path; /* file to read */
+ off_t size; /* file size */
off_t read_offset; /* for next hreader_read() */
off_t buf_offset; /* offset of start of buffer */
char *buffer; /* input buffer */
/** @brief Initialize a hands-off reader
* @param path File to read
* @param h Reader to initialize
+ * @return 0 on success, -1 on error
*/
-void hreader_init(const char *path, struct hreader *h);
+int hreader_init(const char *path, struct hreader *h);
/** @brief Read some bytes
* @param h Reader to read from
*/
int hreader_pread(struct hreader *h, void *buffer, size_t n, off_t offset);
+/** @brief Seek within a file
+ * @param h Reader to seek
+ * @param offset Offset
+ * @param whence SEEK_*
+ * @return Result offset
+ */
+off_t hreader_seek(struct hreader *h, off_t offset, int whence);
+
#endif /* HREADER_H */
/*