summaryrefslogtreecommitdiff
path: root/src/archive.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/archive.c')
-rw-r--r--src/archive.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/archive.c b/src/archive.c
index e58f6d5..ecb276a 100644
--- a/src/archive.c
+++ b/src/archive.c
@@ -84,8 +84,19 @@ struct apk_tar_entry_istream {
size_t bytes_left;
EVP_MD_CTX mdctx;
struct apk_checksum *csum;
+ time_t mtime;
};
+static void tar_entry_get_meta(void *stream, struct apk_file_meta *meta)
+{
+ struct apk_tar_entry_istream *teis =
+ container_of(stream, struct apk_tar_entry_istream, is);
+ *meta = (struct apk_file_meta) {
+ .atime = teis->mtime,
+ .mtime = teis->mtime,
+ };
+}
+
static ssize_t tar_entry_read(void *stream, void *ptr, size_t size)
{
struct apk_tar_entry_istream *teis =
@@ -175,6 +186,7 @@ int apk_tar_parse(struct apk_istream *is, apk_archive_entry_parser parser,
{
struct apk_file_info entry;
struct apk_tar_entry_istream teis = {
+ .is.get_meta = tar_entry_get_meta,
.is.read = tar_entry_read,
.is.close = tar_entry_close,
.tar_is = is,
@@ -213,6 +225,7 @@ int apk_tar_parse(struct apk_istream *is, apk_archive_entry_parser parser,
buf.mode[0] = 0; /* to nul terminate 100-byte buf.name */
buf.magic[0] = 0; /* to nul terminate 100-byte buf.linkname */
teis.csum = NULL;
+ teis.mtime = entry.mtime;
apk_xattr_array_resize(&entry.xattrs, 0);
if (paxlen) {