libalpm: introduce get_sync_pkg_ops() helper
Currently default_pkg_ops is accessed in two different ways. There is get_file_pkg_ops (in be_package.c) creating a local once-off 'tweaked' copy. As well as load_pkg_for_entry (be_sync.c) which modifies in-place and uses default_pkg_ops. This seems rather misleading and fragile approach. Introduce a helper for the second use-case so that default_pkg_ops is handled consistently and essentially remains unchanged throughout. Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com> Signed-off-by: Allan McRae <allan@archlinux.org>
This commit is contained in:
parent
4472ce55d7
commit
027d76b9f5
1 changed files with 17 additions and 2 deletions
|
@ -281,6 +281,22 @@ static int _sync_get_validation(alpm_pkg_t *pkg)
|
|||
return pkg->validation;
|
||||
}
|
||||
|
||||
/** Package sync operations struct accessor. We implement this as a method
|
||||
* because we want to reuse the majority of the default_pkg_ops struct and
|
||||
* add only a few operations of our own on top.
|
||||
*/
|
||||
static struct pkg_operations *get_sync_pkg_ops(void)
|
||||
{
|
||||
static struct pkg_operations sync_pkg_ops;
|
||||
static int sync_pkg_ops_initalized = 0;
|
||||
if(!sync_pkg_ops_initalized) {
|
||||
sync_pkg_ops = default_pkg_ops;
|
||||
sync_pkg_ops.get_validation = _sync_get_validation;
|
||||
sync_pkg_ops_initalized = 1;
|
||||
}
|
||||
return &sync_pkg_ops;
|
||||
}
|
||||
|
||||
static alpm_pkg_t *load_pkg_for_entry(alpm_db_t *db, const char *entryname,
|
||||
const char **entry_filename, alpm_pkg_t *likely_pkg)
|
||||
{
|
||||
|
@ -321,8 +337,7 @@ static alpm_pkg_t *load_pkg_for_entry(alpm_db_t *db, const char *entryname,
|
|||
|
||||
pkg->origin = ALPM_PKG_FROM_SYNCDB;
|
||||
pkg->origin_data.db = db;
|
||||
pkg->ops = &default_pkg_ops;
|
||||
pkg->ops->get_validation = _sync_get_validation;
|
||||
pkg->ops = get_sync_pkg_ops();
|
||||
pkg->handle = db->handle;
|
||||
|
||||
/* add to the collection */
|
||||
|
|
Loading…
Add table
Reference in a new issue