Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=6a48394d017ce4f61ea1d749f72a6b7afa1f9c08
commit 6a48394d017ce4f61ea1d749f72a6b7afa1f9c08 Author: Michel Hermier <[email protected]> Date: Sat Nov 2 13:40:35 2013 +0100 libpacman: Add trigger support to transaction. Add _pacman_trans_compute_triggers. diff --git a/lib/libpacman/trans.c b/lib/libpacman/trans.c index 6b87a60..5667915 100644 --- a/lib/libpacman/trans.c +++ b/lib/libpacman/trans.c @@ -90,8 +90,9 @@ void _pacman_trans_free(pmtrans_t *trans) } else { FREELISTPKGS(trans->packages); } - FREELIST(trans->skiplist); + FREELIST(trans->pretriggers); + FREELIST(trans->posttriggers); _pacman_trans_fini(trans); free(trans); @@ -190,6 +191,27 @@ int _pacman_trans_set_state(pmtrans_t *trans, int new_state) return(0); } +int _pacman_trans_compute_triggers(pmtrans_t *trans) +{ + pmlist_t *lp; + + /* Sanity checks */ + ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1)); + + /* NOTE: Not the most efficient way, but will do until we add some string hash. */ + for(lp = trans->packages; lp; lp = lp->next) { + pmpkg_t *pkg = lp->data; + + trans->pretriggers = _pacman_stringlist_append_stringlist(trans->pretriggers, pkg->pretriggers); + trans->posttriggers = _pacman_stringlist_append_stringlist(trans->posttriggers, pkg->posttriggers); + } + trans->pretriggers = _pacman_list_remove_dupes(trans->pretriggers); + trans->posttriggers = _pacman_list_remove_dupes(trans->posttriggers); + /* FIXME: Sort the triggers to have a predictable execution order */ + + return 0; +} + int _pacman_trans_prepare(pmtrans_t *trans, pmlist_t **data) { /* Sanity checks */ diff --git a/lib/libpacman/trans.h b/lib/libpacman/trans.h index 7141ea5..be28a25 100644 --- a/lib/libpacman/trans.h +++ b/lib/libpacman/trans.h @@ -62,6 +62,8 @@ struct __pmtrans_t { pmlist_t *targets; /* pmlist_t of (char *) */ pmlist_t *packages; /* pmlist_t of (pmpkg_t *) or (pmsyncpkg_t *) */ pmlist_t *skiplist; /* pmlist_t of (char *) */ + pmlist_t *pretriggers; /* pmlist_t of (char *) */ + pmlist_t *posttriggers;/* pmlist_t of (char *) */ pmtrans_cbs_t cbs; }; @@ -106,6 +108,8 @@ int _pacman_trans_commit(pmtrans_t *trans, pmlist_t **data); int _pacman_trans_sysupgrade(pmtrans_t *trans); +int _pacman_trans_compute_triggers(pmtrans_t *trans); + #endif /* _PACMAN_TRANS_H */ /* vim: set ts=2 sw=2 noet: */ _______________________________________________ Frugalware-git mailing list [email protected] http://frugalware.org/mailman/listinfo/frugalware-git
