Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=654fd5105b1236846da764960915c53c60e85cb2
commit 654fd5105b1236846da764960915c53c60e85cb2 Author: Michel Hermier <[email protected]> Date: Tue May 6 16:52:44 2014 +0200 libpacman: Make __pmtrans_t a class. diff --git a/lib/libpacman/pacman.cpp b/lib/libpacman/pacman.cpp index fe5c31d..f49a32b 100644 --- a/lib/libpacman/pacman.cpp +++ b/lib/libpacman/pacman.cpp @@ -1115,7 +1115,7 @@ int pacman_trans_init(unsigned char type, unsigned int flags, pacman_trans_cb_ev return -1; } - handle->trans = _pacman_trans_new(); + handle->trans = new __pmtrans_t(); if(handle->trans == NULL) { RET_ERR(PM_ERR_MEMORY, -1); } @@ -1211,8 +1211,9 @@ int pacman_trans_release() { /* Sanity checks */ ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1)); - ASSERT(_pacman_trans_delete(handle->trans) == 0, return -1); + ASSERT(handle->trans != NULL, return -1); + delete handle->trans; handle->trans = 0; handle->db_local->settimestamp(NULL); diff --git a/lib/libpacman/sync.cpp b/lib/libpacman/sync.cpp index bfff686..45df037 100644 --- a/lib/libpacman/sync.cpp +++ b/lib/libpacman/sync.cpp @@ -628,7 +628,7 @@ int _pacman_sync_commit(pmtrans_t *trans, pmlist_t **data) _pacman_runhook("pre_sysupgrade", trans); } /* remove conflicting and to-be-replaced packages */ - tr = _pacman_trans_new(); + tr = new __pmtrans_t(); if(tr == NULL) { _pacman_log(PM_LOG_ERROR, _("could not create removal transaction")); pm_errno = PM_ERR_MEMORY; @@ -671,7 +671,7 @@ int _pacman_sync_commit(pmtrans_t *trans, pmlist_t **data) /* install targets */ _pacman_log(PM_LOG_FLOW1, _("installing packages")); - tr = _pacman_trans_new(); + tr = new __pmtrans_t(); if(tr == NULL) { _pacman_log(PM_LOG_ERROR, _("could not create transaction")); pm_errno = PM_ERR_MEMORY; diff --git a/lib/libpacman/trans.cpp b/lib/libpacman/trans.cpp index 55fa377..d7fcd47 100644 --- a/lib/libpacman/trans.cpp +++ b/lib/libpacman/trans.cpp @@ -77,23 +77,9 @@ static int check_oldcache(void) return(0); } -pmtrans_t *_pacman_trans_new() +__pmtrans_t::__pmtrans_t() + : state(STATE_IDLE) { - pmtrans_t *trans = _pacman_zalloc(sizeof(pmtrans_t)); - - if(trans) { - trans->state = STATE_IDLE; - } - - return(trans); -} - -int _pacman_trans_delete(pmtrans_t *trans) -{ - ASSERT(_pacman_trans_fini(trans) == 0, return -1); - - free(trans); - return 0; } int _pacman_trans_init(pmtrans_t *trans, pmtranstype_t type, unsigned int flags, pmtrans_cbs_t cbs) @@ -134,13 +120,12 @@ int _pacman_trans_init(pmtrans_t *trans, pmtranstype_t type, unsigned int flags, return(0); } -int _pacman_trans_fini(pmtrans_t *trans) +__pmtrans_t::~__pmtrans_t() { /* Sanity checks */ - ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1)); - ASSERT(trans->state != STATE_COMMITING, RET_ERR(PM_ERR_TRANS_COMMITING, -1)); +// ASSERT(state != STATE_COMMITING, RET_ERR(PM_ERR_TRANS_COMMITING, -1)); - FREELISTPKGS(trans->packages); + FREELISTPKGS(packages); #if 0 { FVisitor visitor = { @@ -148,16 +133,14 @@ int _pacman_trans_fini(pmtrans_t *trans) .data = NULL, }; - f_ptrlist_delete(trans->syncpkgs, &visitor); + f_ptrlist_delete(syncpkgs, &visitor); } #endif - f_stringlist_delete(trans->targets); - f_stringlist_delete(trans->skiplist); - f_stringlist_delete(trans->triggers); + f_stringlist_delete(targets); + f_stringlist_delete(skiplist); + f_stringlist_delete(triggers); - memset(trans, 0, sizeof(*trans)); - trans->state = STATE_IDLE; - return 0; + state = STATE_IDLE; } static @@ -1113,7 +1096,7 @@ int _pacman_add_commit(pmtrans_t *trans, pmlist_t **data) if(oldpkg) { pmtrans_t *tr; _pacman_log(PM_LOG_FLOW1, _("removing old package first (%s-%s)"), oldpkg->name(), oldpkg->version()); - tr = _pacman_trans_new(); + tr = new __pmtrans_t(); if(tr == NULL) { RET_ERR(PM_ERR_TRANS_ABORT, -1); } diff --git a/lib/libpacman/trans.h b/lib/libpacman/trans.h index f6e0ae1..560c597 100644 --- a/lib/libpacman/trans.h +++ b/lib/libpacman/trans.h @@ -59,7 +59,12 @@ typedef struct __pmtrans_cbs_t { pacman_trans_cb_progress progress; } pmtrans_cbs_t; -struct __pmtrans_t { +struct __pmtrans_t + : public libpacman::Object +{ + __pmtrans_t(); + ~__pmtrans_t(); + const pmtrans_ops_t *ops; int (*set_state)(pmtrans_t *trans, int new_state); libpacman::Handle *handle; @@ -76,9 +81,8 @@ struct __pmtrans_t { #define FREETRANS(p) \ do { \ - if((p) && _pacman_trans_delete(p) == 0) { \ - p = NULL; \ - } \ + delete (p); \ + (p) = NULL; \ } while (0) #define EVENT(t, e, d1, d2) \ _pacman_trans_event((t), (e), (d1), (d2)) @@ -97,11 +101,7 @@ do { \ } \ } while(0) -pmtrans_t *_pacman_trans_new(void); -int _pacman_trans_delete(pmtrans_t *trans); - int _pacman_trans_init(pmtrans_t *trans, pmtranstype_t type, unsigned int flags, pmtrans_cbs_t cbs); -int _pacman_trans_fini(pmtrans_t *trans); int _pacman_trans_event(pmtrans_t *trans, unsigned char, void *, void *); pmsyncpkg_t *_pacman_trans_find(const pmtrans_t *trans, const char *pkgname); _______________________________________________ Frugalware-git mailing list [email protected] http://frugalware.org/mailman/listinfo/frugalware-git
