Add search function to libtar
Function entryExists() can be called in order
to check if an entry exists inside an archive.
Change-Id: Id3d13d20dfb74a1779dbd8ba6f0ab08c3ca46319
diff --git a/libtar/wrapper.c b/libtar/wrapper.c
index 116dc28..7f65375 100644
--- a/libtar/wrapper.c
+++ b/libtar/wrapper.c
@@ -153,3 +153,33 @@
return 0;
}
+
+
+int
+tar_find(TAR *t, char *searchstr)
+{
+ if (!searchstr)
+ return 0;
+
+ char *filename;
+ int i, entryfound = 0;
+#ifdef DEBUG
+ printf("==> tar_find(0x%lx, %s)\n", (long unsigned int)t, searchstr);
+#endif
+ while ((i = th_read(t)) == 0) {
+ filename = th_get_pathname(t);
+ if (fnmatch(searchstr, filename, FNM_FILE_NAME | FNM_PERIOD) == 0) {
+ entryfound++;
+#ifdef DEBUG
+ printf("Found matching entry: %s\n", filename);
+#endif
+ break;
+ }
+ }
+#ifdef DEBUG
+ if (!entryfound)
+ printf("No matching entry found.\n");
+#endif
+
+ return entryfound;
+}