summaryrefslogtreecommitdiff
path: root/src/apk_io.h
diff options
context:
space:
mode:
authorTimo Teräs <timo.teras@iki.fi>2020-01-11 03:23:22 +0200
committerTimo Teräs <timo.teras@iki.fi>2020-01-11 11:20:45 +0200
commit6da3e8eb15c0456b9908bedfdeced2f3a550b58c (patch)
treebd6384ddf991a4ad9b33132691fc11ddb8498edb /src/apk_io.h
parent7ca0d146ecaf2f99781653d1203bd3db7afc85ba (diff)
downloadapk-tools-6da3e8eb15c0456b9908bedfdeced2f3a550b58c.tar.gz
apk-tools-6da3e8eb15c0456b9908bedfdeced2f3a550b58c.tar.bz2
apk-tools-6da3e8eb15c0456b9908bedfdeced2f3a550b58c.tar.xz
apk-tools-6da3e8eb15c0456b9908bedfdeced2f3a550b58c.zip
istream, archive, db: convert db and tar function to use istream
Diffstat (limited to 'src/apk_io.h')
-rw-r--r--src/apk_io.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/apk_io.h b/src/apk_io.h
index ea2eb42..db59890 100644
--- a/src/apk_io.h
+++ b/src/apk_io.h
@@ -81,6 +81,9 @@ struct apk_istream *apk_istream_from_fd(int fd);
struct apk_istream *apk_istream_from_fd_url_if_modified(int atfd, const char *url, time_t since);
struct apk_istream *apk_istream_from_url_gz(const char *url);
ssize_t apk_istream_read(struct apk_istream *is, void *ptr, size_t size);
+apk_blob_t apk_istream_get(struct apk_istream *is, size_t len);
+apk_blob_t apk_istream_get_all(struct apk_istream *is);
+apk_blob_t apk_istream_get_delim(struct apk_istream *is, apk_blob_t token);
#define APK_SPLICE_ALL 0xffffffff
ssize_t apk_istream_splice(struct apk_istream *is, int fd, size_t size,
@@ -107,6 +110,14 @@ static inline void apk_istream_close(struct apk_istream *is)
is->ops->close(is);
}
+struct apk_segment_istream {
+ struct apk_istream is;
+ struct apk_istream *pis;
+ size_t bytes_left;
+ time_t mtime;
+};
+void apk_istream_segment(struct apk_segment_istream *sis, struct apk_istream *is, size_t len, time_t mtime);
+
#define APK_BSTREAM_SINGLE_READ 0x0001
#define APK_BSTREAM_EOF 0x0002