diff options
author | Timo Teräs <timo.teras@iki.fi> | 2018-01-04 09:46:03 +0200 |
---|---|---|
committer | Timo Teräs <timo.teras@iki.fi> | 2018-01-04 10:56:09 +0200 |
commit | 8a28c6d0d4f81406c67e76b2bcdbe491aa734717 (patch) | |
tree | 148555889d66a69cdcd979ad77f1ba728b747f53 /src/io.c | |
parent | 2da67940d50865d206f6a79165ce7b3de5a90de3 (diff) | |
download | apk-tools-8a28c6d0d4f81406c67e76b2bcdbe491aa734717.tar.gz apk-tools-8a28c6d0d4f81406c67e76b2bcdbe491aa734717.tar.bz2 apk-tools-8a28c6d0d4f81406c67e76b2bcdbe491aa734717.tar.xz apk-tools-8a28c6d0d4f81406c67e76b2bcdbe491aa734717.zip |
enable automatic update of indexes controlled by --cache-max-age
This modifies apk cache for indexes to be automatically refreshed
periodically without explicit 'update' or '--update-cache' usage.
The default is to do if-modified-since request if the local copy
is older than 4 hours. This age can be changed with --cache-max-age.
Using --update-cache will change this age to 60 seconds to make
sure the cached copy is relatively new. The small age is in order
to try to avoid downloading indexes second time when apk-tools is
upgraded and apk re-execs after self-upgrade.
Accordingly using explicitly 'apk update' will now enforce
--force-refresh and request the very latest index by requesting
any potential http proxy to do refresh too.
Diffstat (limited to 'src/io.c')
-rw-r--r-- | src/io.c | 12 |
1 files changed, 7 insertions, 5 deletions
@@ -441,7 +441,7 @@ struct apk_bstream *apk_bstream_from_file(int atfd, const char *file) struct apk_tee_bstream { struct apk_bstream bs; struct apk_bstream *inner_bs; - int fd; + int fd, copy_meta; size_t size; apk_progress_cb cb; void *cb_ctx; @@ -475,9 +475,10 @@ static void tee_close(void *stream, size_t *size) struct apk_tee_bstream *tbs = container_of(stream, struct apk_tee_bstream, bs); - /* copy info */ - apk_bstream_get_meta(tbs->inner_bs, &meta); - apk_file_meta_to_fd(tbs->fd, &meta); + if (tbs->copy_meta) { + apk_bstream_get_meta(tbs->inner_bs, &meta); + apk_file_meta_to_fd(tbs->fd, &meta); + } apk_bstream_close(tbs->inner_bs, NULL); if (size != NULL) *size = tbs->size; @@ -491,7 +492,7 @@ static const struct apk_bstream_ops tee_bstream_ops = { .close = tee_close, }; -struct apk_bstream *apk_bstream_tee(struct apk_bstream *from, int atfd, const char *to, apk_progress_cb cb, void *cb_ctx) +struct apk_bstream *apk_bstream_tee(struct apk_bstream *from, int atfd, const char *to, int copy_meta, apk_progress_cb cb, void *cb_ctx) { struct apk_tee_bstream *tbs; int fd, r; @@ -519,6 +520,7 @@ struct apk_bstream *apk_bstream_tee(struct apk_bstream *from, int atfd, const ch }; tbs->inner_bs = from; tbs->fd = fd; + tbs->copy_meta = copy_meta; tbs->size = 0; tbs->cb = cb; tbs->cb_ctx = cb_ctx; |