summaryrefslogtreecommitdiffstats
path: root/lib/libalpm
diff options
context:
space:
mode:
authorAnatol Pomozov <anatol.pomozov@gmail.com>2020-04-24 02:28:43 +0200
committerAllan McRae <allan@archlinux.org>2020-07-07 13:36:56 +0200
commit78d6dcec6c49bd2fa830237a46fd14337bc9fd4c (patch)
tree8c27584c0cbbab779151b76aab7831974d1af2c9 /lib/libalpm
parent34ba8d984d89393ab85ca67724b87af67ff004c3 (diff)
downloadpacman-78d6dcec6c49bd2fa830237a46fd14337bc9fd4c.tar.gz
pacman-78d6dcec6c49bd2fa830237a46fd14337bc9fd4c.tar.xz
Add a utility function to check whether a file exists in the cache
It is similar to _alpm_filecache_find() but does not return a dynamically allocated memory to user. Thus the user does not need to free this resource. Signed-off-by: Anatol Pomozov <anatol.pomozov@gmail.com> Signed-off-by: Allan McRae <allan@archlinux.org>
Diffstat (limited to 'lib/libalpm')
-rw-r--r--lib/libalpm/util.c14
-rw-r--r--lib/libalpm/util.h2
2 files changed, 16 insertions, 0 deletions
diff --git a/lib/libalpm/util.c b/lib/libalpm/util.c
index ead03004..76728eb4 100644
--- a/lib/libalpm/util.c
+++ b/lib/libalpm/util.c
@@ -834,6 +834,20 @@ char *_alpm_filecache_find(alpm_handle_t *handle, const char *filename)
return NULL;
}
+/** Check whether a filename exists in a registered alpm cachedir.
+ * @param handle the context handle
+ * @param filename name of file to find
+ * @return 0 if the filename was not found, 1 otherwise
+ */
+int _alpm_filecache_exists(alpm_handle_t *handle, const char *filename)
+{
+ int res;
+ char *fpath = _alpm_filecache_find(handle, filename);
+ res = (fpath != NULL);
+ FREE(fpath);
+ return res;
+}
+
/** Check the alpm cachedirs for existence and find a writable one.
* If no valid cache directory can be found, use /tmp.
* @param handle the context handle
diff --git a/lib/libalpm/util.h b/lib/libalpm/util.h
index 3306a022..4fc6e718 100644
--- a/lib/libalpm/util.h
+++ b/lib/libalpm/util.h
@@ -136,6 +136,8 @@ int _alpm_run_chroot(alpm_handle_t *handle, const char *cmd, char *const argv[],
int _alpm_ldconfig(alpm_handle_t *handle);
int _alpm_str_cmp(const void *s1, const void *s2);
char *_alpm_filecache_find(alpm_handle_t *handle, const char *filename);
+/* Checks whether a file exists in cache */
+int _alpm_filecache_exists(alpm_handle_t *handle, const char *filename);
const char *_alpm_filecache_setup(alpm_handle_t *handle);
/* Unlike many uses of alpm_pkgvalidation_t, _alpm_test_checksum expects
* an enum value rather than a bitfield. */