From e79226010a0641f701b6e12392e176cc2cf58d72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Ter=C3=A4s?= Date: Fri, 13 Dec 2019 15:22:33 +0200 Subject: adb: introduce apk-tools database format, and few applets This is a flat buffers inspired format that allows fast mmaped access to the data with low overhead, signature support and relatively good forward support. --- src/apk_io.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src/apk_io.h') diff --git a/src/apk_io.h b/src/apk_io.h index fb784c3cf3..d0c0d4ab45 100644 --- a/src/apk_io.h +++ b/src/apk_io.h @@ -142,6 +142,7 @@ struct apk_ostream_ops { struct apk_ostream { const struct apk_ostream_ops *ops; + int rc; }; struct apk_ostream *apk_ostream_gzip(struct apk_ostream *); @@ -150,13 +151,15 @@ struct apk_ostream *apk_ostream_to_fd(int fd); struct apk_ostream *apk_ostream_to_file(int atfd, const char *file, const char *tmpfile, mode_t mode); struct apk_ostream *apk_ostream_to_file_gz(int atfd, const char *file, const char *tmpfile, mode_t mode); size_t apk_ostream_write_string(struct apk_ostream *ostream, const char *string); +static inline void apk_ostream_cancel(struct apk_ostream *os, int rc) { if (!os->rc) os->rc = rc; } static inline ssize_t apk_ostream_write(struct apk_ostream *os, const void *buf, size_t size) { return os->ops->write(os, buf, size); } static inline int apk_ostream_close(struct apk_ostream *os) { - return os->ops->close(os); + int rc = os->rc; + return os->ops->close(os) ?: rc; } apk_blob_t apk_blob_from_istream(struct apk_istream *istream, size_t size); -- cgit v1.2.3