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

Reply via email to