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);
 	}