mirror of
https://github.com/moparisthebest/pacman
synced 2025-01-08 12:28:00 -05:00
Introduce _alpm_pkg_free_trans()
The main purpose of this function to make our code more readable. It frees transaction specific fields of pmpkg_t. (It is used when a package is removed from the target list.) Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu> Signed-off-by: Dan McGee <dan@archlinux.org>
This commit is contained in:
parent
e61ab1536f
commit
19b8b63885
@ -857,6 +857,19 @@ void _alpm_pkg_free(pmpkg_t *pkg)
|
|||||||
FREE(pkg);
|
FREE(pkg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Free transaction specific fields */
|
||||||
|
void _alpm_pkg_free_trans(pmpkg_t *pkg)
|
||||||
|
{
|
||||||
|
ALPM_LOG_FUNC;
|
||||||
|
|
||||||
|
if(pkg == NULL) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
alpm_list_free(pkg->removes);
|
||||||
|
pkg->removes = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
/* Is spkg an upgrade for locapkg? */
|
/* Is spkg an upgrade for locapkg? */
|
||||||
int _alpm_pkg_compare_versions(pmpkg_t *spkg, pmpkg_t *localpkg)
|
int _alpm_pkg_compare_versions(pmpkg_t *spkg, pmpkg_t *localpkg)
|
||||||
{
|
{
|
||||||
|
@ -79,6 +79,7 @@ struct __pmpkg_t {
|
|||||||
pmpkg_t* _alpm_pkg_new(void);
|
pmpkg_t* _alpm_pkg_new(void);
|
||||||
pmpkg_t *_alpm_pkg_dup(pmpkg_t *pkg);
|
pmpkg_t *_alpm_pkg_dup(pmpkg_t *pkg);
|
||||||
void _alpm_pkg_free(pmpkg_t *pkg);
|
void _alpm_pkg_free(pmpkg_t *pkg);
|
||||||
|
void _alpm_pkg_free_trans(pmpkg_t *pkg);
|
||||||
int _alpm_pkg_cmp(const void *p1, const void *p2);
|
int _alpm_pkg_cmp(const void *p1, const void *p2);
|
||||||
int _alpm_pkg_compare_versions(pmpkg_t *local_pkg, pmpkg_t *pkg);
|
int _alpm_pkg_compare_versions(pmpkg_t *local_pkg, pmpkg_t *pkg);
|
||||||
pmpkg_t *_alpm_pkg_find(alpm_list_t *haystack, const char *needle);
|
pmpkg_t *_alpm_pkg_find(alpm_list_t *haystack, const char *needle);
|
||||||
|
@ -379,12 +379,8 @@ int _alpm_sync_prepare(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_sync
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Unresolvable packages will be removed from the target list, so
|
/* Unresolvable packages will be removed from the target list, so
|
||||||
we free the transaction specific field: pkg->removes */
|
we free the transaction specific fields */
|
||||||
for(i = unresolvable; i; i = i->next) {
|
alpm_list_free_inner(unresolvable, (alpm_list_fn_free)_alpm_pkg_free_trans);
|
||||||
pmpkg_t *pkg = i->data;
|
|
||||||
alpm_list_free(pkg->removes);
|
|
||||||
pkg->removes = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Set DEPEND reason for pulled packages */
|
/* Set DEPEND reason for pulled packages */
|
||||||
for(i = resolved; i; i = i->next) {
|
for(i = resolved; i; i = i->next) {
|
||||||
@ -458,8 +454,7 @@ int _alpm_sync_prepare(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_sync
|
|||||||
_alpm_log(PM_LOG_WARNING,
|
_alpm_log(PM_LOG_WARNING,
|
||||||
_("removing '%s' from target list because it conflicts with '%s'\n"),
|
_("removing '%s' from target list because it conflicts with '%s'\n"),
|
||||||
rsync->name, sync->name);
|
rsync->name, sync->name);
|
||||||
alpm_list_free(rsync->removes); /* rsync is not transaction target anymore */
|
_alpm_pkg_free_trans(rsync); /* rsync is not transaction target anymore */
|
||||||
rsync->removes = NULL;
|
|
||||||
trans->packages = alpm_list_remove(trans->packages, rsync, _alpm_pkg_cmp, NULL);
|
trans->packages = alpm_list_remove(trans->packages, rsync, _alpm_pkg_cmp, NULL);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -248,12 +248,7 @@ void _alpm_trans_free(pmtrans_t *trans)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(trans->type == PM_TRANS_TYPE_SYNC) {
|
if(trans->type == PM_TRANS_TYPE_SYNC) {
|
||||||
alpm_list_t *i;
|
alpm_list_free_inner(trans->packages, (alpm_list_fn_free)_alpm_pkg_free_trans);
|
||||||
for(i = trans->packages; i; i = i->next) {
|
|
||||||
pmpkg_t *pkg = i->data;
|
|
||||||
alpm_list_free(pkg->removes);
|
|
||||||
pkg->removes = NULL;
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
alpm_list_free_inner(trans->packages, (alpm_list_fn_free)_alpm_pkg_free);
|
alpm_list_free_inner(trans->packages, (alpm_list_fn_free)_alpm_pkg_free);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user