From 3b51163329d24df073610499af4f540c2f0766ed Mon Sep 17 00:00:00 2001 From: n0d3 Date: Wed, 6 Mar 2013 21:14:15 +0200 Subject: Add search function to libtar Function entryExists() can be called in order to check if an entry exists inside an archive. Change-Id: Id3d13d20dfb74a1779dbd8ba6f0ab08c3ca46319 --- libtar/wrapper.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'libtar/wrapper.c') diff --git a/libtar/wrapper.c b/libtar/wrapper.c index 116dc28cc..7f65375a0 100644 --- a/libtar/wrapper.c +++ b/libtar/wrapper.c @@ -153,3 +153,33 @@ tar_append_tree(TAR *t, char *realdir, char *savedir) 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; +} -- cgit v1.2.3