diff options
-rw-r--r-- | src/gzip.h | 32 | ||||
-rw-r--r-- | src/ustar.h | 47 |
2 files changed, 79 insertions, 0 deletions
@@ -24,12 +24,44 @@ struct opkg_opk_gzip; typedef int (opkg_opk_gzip_read_func)(void *, char **, size_t *); +/* + * Allocates and initializes a decompression structure. + * Parameters: + * - read: Function to read compressed data. Parameter 1 is user_data, + * parameter 2 is an address in which the read function should + * store an address to compressed data, and parameter 3 is an + * address in which the read function should store the size of read + * compressed data. Should return OPKG_OPK_OK if data is read, + * OPKG_OPK_END if no more data is available (end of file or + * archive), or OPKG_OPK_ERROR on error. + * - user_data: Passed to read function. + * Returns: + * - Allocated decompression structure on success. Free with + * opkg_opk_gzip_free(). + * - NULL on memory exhaustion. + */ struct opkg_opk_gzip * opkg_opk_gzip_init(opkg_opk_gzip_read_func *read, void *user_data); +/* + * Reads and decompresses data to output the next record (512 octets). + * Parameters: + * - gzip: Decompression structure. + * - record: Address in which to store decompressed record. + * Returns: + * - OPKG_OPK_OK if a record is read and decompressed. + * - OPKG_OPK_END if the end of the gzip stream is reached. + * - OPKG_OPK_ERROR if the read function returned an error, the compressed input + * data or gzip stream end prematurely, or zlib returns an error. + */ int opkg_opk_gzip_read(struct opkg_opk_gzip *gzip, void *record); +/* + * Frees a decompression structure. + * Parameters: + * - gzip: Decompression structure. + */ void opkg_opk_gzip_free(struct opkg_opk_gzip *gzip); diff --git a/src/ustar.h b/src/ustar.h index 388011c..eeca53a 100644 --- a/src/ustar.h +++ b/src/ustar.h @@ -40,19 +40,66 @@ struct opkg_opk_ustar_member { struct opkg_opk_ustar_member *next; }; +/* + * Allocates and initializes an archive structure. + * Parameters: + * - gzip: Decompressor for archive's gzip stream. + * Returns: + * - Allocated archive structure on success. Free with opkg_opk_ustar_free(). + * - NULL on memory exhaustion. + */ struct opkg_opk_ustar * opkg_opk_ustar_init(struct opkg_opk_gzip *gzip); +/* + * Lists member files one at a time. + * Parameters: + * - ustar: Archive structure. + * - member: Address in which to store address of allocated member structure. + * Free with free(). + * Returns: + * - OPKG_OPK_OK if a member was listed. More members may exist. + * - OPKG_OPK_END if no more members exist. Parameter "member" is unchanged. + * - OPKG_OPK_ERROR on decompression error, memory exhaustion, mode or mtime + * integer conversion error, or unsupported file type. + */ int opkg_opk_ustar_list(struct opkg_opk_ustar *ustar, struct opkg_opk_ustar_member **member); +/* + * Advances to a named member file. + * Parameters: + * - ustar: Archive structure. + * - num_keys: Number of search keys to follow. + * - ...: Search keys of type (const char *). + * Returns: + * - OPKG_OPK_OK if a member matching one of the search keys is found. + * - OPKG_OPK_ERROR if no matching member is found or on decompression error, an + * invalid header, or unsupported file type. + */ int opkg_opk_ustar_seek(struct opkg_opk_ustar *ustar, int num_keys, ...); +/* + * Reads up to a record (512 octets) of member file data at a time. + * Parameters: + * - ustar: Archive structure. + * - buffer: Address in which to store address of data buffer. Do not free. + * - size: Address in which to store size of read data. + * Returns: + * - OPKG_OPK_OK if data was read. + * - OPKG_OPK_END if no more data exists. + * - OPKG_OPK_ERROR on decompression error or premature end of gzip stream. + */ int opkg_opk_ustar_read(struct opkg_opk_ustar *ustar, char **buffer, size_t *size); +/* + * Frees an archive structure. + * Parameters: + * - ustar: Archive structure. + */ void opkg_opk_ustar_free(struct opkg_opk_ustar *ustar); |