zip-reader: New function zip_reader_get_member_name().
authorBen Pfaff <blp@cs.stanford.edu>
Sun, 16 Jul 2017 03:41:08 +0000 (20:41 -0700)
committerBen Pfaff <blp@cs.stanford.edu>
Sun, 10 Feb 2019 00:00:47 +0000 (16:00 -0800)
This allows the caller to obtain a list of .zip members.

src/libpspp/zip-reader.c
src/libpspp/zip-reader.h

index f9a24cf717f3887e81621accabe089f99111949f..b84a411fe04710c19ff71c6798c20327ac807627 100644 (file)
@@ -372,6 +372,12 @@ zip_entry_find (struct zip_reader *zr, const char *member)
   return NULL;
 }
 
+const char *
+zip_reader_get_member_name(const struct zip_reader *zr, size_t idx)
+{
+  return idx < zr->n_entries ? zr->entries[idx].name : NULL;
+}
+
 /* Return the member called MEMBER from the reader ZR  */
 struct zip_member *
 zip_member_open (struct zip_reader *zr, const char *member)
index 842864143df3384ad14d92ad66cc73e1fef7c727..225c5fecc5ad257e3635f7bcfec5b8c82d0d3f10 100644 (file)
@@ -31,6 +31,11 @@ struct zip_reader *zip_reader_create (const char *filename, struct string *errs)
 /* Destroy the zip reader */
 void zip_reader_destroy (struct zip_reader *zr);
 
+/* Returns the name of ZR's member IDX, IDX >= 0.  Returns NULL if ZR has fewer
+   than (IDX + 1) members. */
+const char *zip_reader_get_member_name(const struct zip_reader *zr,
+                                       size_t idx);
+
 /* Return the zip member in the reader ZR, called MEMBER */
 struct zip_member *zip_member_open (struct zip_reader *zr, const char *member);
 
@@ -41,4 +46,5 @@ int zip_member_read (struct zip_member *zm, void *buf, size_t n);
 void zip_member_finish (struct zip_member *zm);
 
 
+
 #endif