Message ID | 20200424044137.33995-1-anatol.pomozov@gmail.com |
---|---|
State | Superseded, archived |
Headers | show |
Series | [pacman-dev] Add a utility function to check whether a file exists in the cache | expand |
On 24/4/20 2:41 pm, Anatol Pomozov wrote: > 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> > --- > lib/libalpm/util.c | 14 ++++++++++++++ > lib/libalpm/util.h | 2 ++ > 2 files changed, 16 insertions(+) > > diff --git a/lib/libalpm/util.c b/lib/libalpm/util.c > index cb838e43..6307dc14 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; Please adjust: res = (fpath != NULL) This follows from our style guideline (although not explicitly stated) 6. When using strcmp() (or any function that returns 0 on success) in a conditional statement, use != 0 or == 0 and not the negation (!) operator. I'm also assuming that this function will not be used in such a way that _alpm_filecache_find will be called again if it exists... Allan
Hi On Sun, Apr 26, 2020 at 6:07 PM Allan McRae <allan@archlinux.org> wrote: > > On 24/4/20 2:41 pm, Anatol Pomozov wrote: > > 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> > > --- > > lib/libalpm/util.c | 14 ++++++++++++++ > > lib/libalpm/util.h | 2 ++ > > 2 files changed, 16 insertions(+) > > > > diff --git a/lib/libalpm/util.c b/lib/libalpm/util.c > > index cb838e43..6307dc14 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; > > Please adjust: > > res = (fpath != NULL) > > This follows from our style guideline (although not explicitly stated) > > 6. When using strcmp() (or any function that returns 0 on success) in a > conditional statement, use != 0 or == 0 and not the negation (!) > operator. Done. > I'm also assuming that this function will not be used in such a way that > _alpm_filecache_find will be called again if it exists... Correct. The added function should not be used in conjunction with _alpm_filecache_find() like you described.
diff --git a/lib/libalpm/util.c b/lib/libalpm/util.c index cb838e43..6307dc14 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; + 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. */
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> --- lib/libalpm/util.c | 14 ++++++++++++++ lib/libalpm/util.h | 2 ++ 2 files changed, 16 insertions(+)