Add get_num_entries command to modify, and test using it.
diff --git a/regress/CMakeLists.txt b/regress/CMakeLists.txt
index f6df6aa..d52b4ec 100644
--- a/regress/CMakeLists.txt
+++ b/regress/CMakeLists.txt
@@ -43,6 +43,7 @@
 	add_from_zip_stored.test
 	add_stored.test
 	add_stored_in_memory.test
+	count_entries.test
 	decrypt-correct-password.test
 	decrypt-wrong-password.test
 	delete_add_same.test
diff --git a/regress/Makefile.am b/regress/Makefile.am
index 5bd1aa5..9362855 100644
--- a/regress/Makefile.am
+++ b/regress/Makefile.am
@@ -145,6 +145,7 @@
 	add_from_zip_stored.test \
 	add_stored.test \
 	add_stored_in_memory.test \
+	count_entries.test \
 	decrypt-aes-correct-password.test \
 	decrypt-aes-wrong-password.test \
 	decrypt-correct-password.test \
diff --git a/regress/count_entries.test b/regress/count_entries.test
new file mode 100644
index 0000000..0849a03
--- /dev/null
+++ b/regress/count_entries.test
@@ -0,0 +1,6 @@
+# zip_open: count entries for archive with >65k entries
+program modify
+args manyfiles.zip get_num_entries 0
+return 0
+file manyfiles.zip manyfiles.zip manyfiles.zip
+stdout 70000 entries in archive
diff --git a/regress/modify.c b/regress/modify.c
index 8751fb1..4b9d376 100644
--- a/regress/modify.c
+++ b/regress/modify.c
@@ -373,6 +373,17 @@
 }
 
 static int
+get_num_entries(int argc, char *argv[]) {
+    zip_uint64_t count;
+    zip_flags_t flags;
+    /* get number of entries in archive */
+    flags = get_flags(argv[0]);
+    count = zip_get_num_entries(za, flags);
+    printf("%" PRIu64 " entr%s in archive\n", count, count == 1 ? "y" : "ies");
+    return 0;
+}
+
+static int
 name_locate(int argc, char *argv[]) {
     zip_flags_t flags;
     zip_int64_t idx;
@@ -841,6 +852,7 @@
     { "get_extra", 3, "index extra_index flags", "show extra field", get_extra },
     { "get_extra_by_id", 4, "index extra_id extra_index flags", "show extra field of type extra_id", get_extra_by_id },
     { "get_file_comment", 1, "index", "get file comment", get_file_comment },
+    { "get_num_entries", 1, "flags", "get number of entries in archive", get_num_entries },
     { "name_locate", 2, "name flags", "find entry in archive", name_locate },
     { "rename", 2, "index name", "rename entry", zrename },
     { "replace_file_contents", 2, "index data", "replace entry with data", replace_file_contents },