Add valid member to struct zip_stat to specify which members are valid.
--HG--
branch : HEAD
diff --git a/lib/zip_source_filep.c b/lib/zip_source_filep.c
index a3ac7e3..5b7e0c0 100644
--- a/lib/zip_source_filep.c
+++ b/lib/zip_source_filep.c
@@ -190,7 +190,7 @@
if (len < sizeof(z->st))
return -1;
- if (z->st.size != -1)
+ if (z->st.valid != 0)
memcpy(data, &z->st, sizeof(z->st));
else {
struct zip_stat *st;
@@ -212,10 +212,15 @@
zip_stat_init(st);
st->mtime = fst.st_mtime;
- if (z->len != -1)
+ st->valid |= ZIP_STAT_MTIME;
+ if (z->len != -1) {
st->size = z->len;
- else if ((fst.st_mode&S_IFMT) == S_IFREG)
+ st->valid |= ZIP_STAT_SIZE;
+ }
+ else if ((fst.st_mode&S_IFMT) == S_IFREG) {
st->size = fst.st_size;
+ st->valid |= ZIP_STAT_SIZE;
+ }
}
return sizeof(z->st);
}