Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=a65c90cf03a85921715b8a6189b0b06eb3191855

commit a65c90cf03a85921715b8a6189b0b06eb3191855
Author: Michel Hermier <[email protected]>
Date:   Mon May 6 08:09:43 2013 +0200

libpacman: Make _pacman_trans_add and _pacman_trans_add_pkg return the added 
pmtranspkg_t.

diff --git a/lib/libpacman/trans.c b/lib/libpacman/trans.c
index 9ff9571..adb6226 100644
--- a/lib/libpacman/trans.c
+++ b/lib/libpacman/trans.c
@@ -279,7 +279,7 @@ error:
}

static
-int _pacman_trans_add (pmtrans_t *trans, pmtranspkg_t *transpkg) {
+pmtranspkg_t *_pacman_trans_add (pmtrans_t *trans, pmtranspkg_t *transpkg) {
const char *transpkg_name = __pacman_transpkg_name (transpkg);
pmtranspkg_t *transpkg_in;

@@ -300,7 +300,7 @@ int _pacman_trans_add (pmtrans_t *trans, pmtranspkg_t 
*transpkg) {
transpkg_in->pkg_new->name, transpkg_in->pkg_new->version, 
transpkg->pkg_new->version);
}
__pacman_trans_pkg_delete (transpkg);
-                       return 0;
+                       return transpkg_in;
}

/* If both transpkg tries to remove (and not upgrade), let's compress the 
transpkg. */
@@ -308,9 +308,9 @@ int _pacman_trans_add (pmtrans_t *trans, pmtranspkg_t 
*transpkg) {
transpkg->type == PM_TRANS_TYPE_REMOVE) {
_pacman_log(PM_LOG_DEBUG, _("%s transpkg removal compressed"), transpkg_name);
__pacman_trans_pkg_delete (transpkg);
-                       return 0;
+                       return transpkg_in;
}
-               RET_ERR(PM_ERR_TRANS_DUP_TARGET, -1);
+               RET_ERR(PM_ERR_TRANS_DUP_TARGET, NULL);
}

if (transpkg->type & PM_TRANS_TYPE_ADD) {
@@ -323,7 +323,7 @@ int _pacman_trans_add (pmtrans_t *trans, pmtranspkg_t 
*transpkg) {
if (transpkg->pkg_local != NULL) {
/* Only install this package if it is not already installed */
if (transpkg->type == PM_TRANS_TYPE_ADD) {
-                               RET_ERR(PM_ERR_PKG_INSTALLED, -1);
+                               RET_ERR(PM_ERR_PKG_INSTALLED, NULL);
}

/* Copy over the install reason */
@@ -354,7 +354,7 @@ int _pacman_trans_add (pmtrans_t *trans, pmtranspkg_t 
*transpkg) {
if (trans->flags & PM_TRANS_FLAG_FRESHEN &&
cmp >= 0) {
/* only upgrade/install this package if it is at a lesser version */
-                       RET_ERR(PM_ERR_PKG_CANT_FRESH, -1);
+                       RET_ERR(PM_ERR_PKG_CANT_FRESH, NULL);
}
if(cmp > 0) {
/* local version is newer -- get confirmation before adding */
@@ -381,7 +381,7 @@ int _pacman_trans_add (pmtrans_t *trans, pmtranspkg_t 
*transpkg) {
int resp = 0;
QUESTION(trans, PM_TRANS_CONV_REMOVE_HOLDPKG, transpkg->pkg_local, NULL, NULL, 
&resp);
if(!resp) {
-                       RET_ERR(PM_ERR_PKG_HOLD, -1);
+                       RET_ERR(PM_ERR_PKG_HOLD, NULL);
}
}

@@ -389,12 +389,15 @@ int _pacman_trans_add (pmtrans_t *trans, pmtranspkg_t 
*transpkg) {
trans->packages = _pacman_list_add(trans->packages, transpkg);
trans->_packages = _pacman_list_add(trans->_packages, transpkg->pkg_new != NULL 
? transpkg->pkg_new : transpkg->pkg_local);

-       return 0;
+       return transpkg;
+
+error:
+       __pacman_trans_pkg_delete (transpkg);
+       return NULL;
}

-int _pacman_trans_add_pkg (pmtrans_t *trans, pmpkg_t *pkg, pmtranstype_t type, 
unsigned int flags) {
+pmtranspkg_t *_pacman_trans_add_pkg (pmtrans_t *trans, pmpkg_t *pkg, 
pmtranstype_t type, unsigned int flags) {
pmtranspkg_t *transpkg = __pacman_trans_pkg_new(type, NULL);
-       int ret;

/* Sanity checks */
ASSERT(transpkg != NULL, return -1); /* pm_errno is allready set by 
__pacman_trans_pkg_new */
@@ -411,11 +414,7 @@ int _pacman_trans_add_pkg (pmtrans_t *trans, pmpkg_t *pkg, 
pmtranstype_t type, u
}
transpkg->flags = flags;

-       ret = _pacman_trans_add (trans, transpkg);
-       if (ret != 0) {
-               __pacman_trans_pkg_delete (transpkg);
-       }
-       return ret;
+       return _pacman_trans_add (trans, transpkg);
}

int _pacman_trans_addtarget(pmtrans_t *trans, const char *target, pmtranstype_t 
type, unsigned int flags)
@@ -423,7 +422,6 @@ int _pacman_trans_addtarget(pmtrans_t *trans, const char 
*target, pmtranstype_t
char *pkg_name;
pmpkg_t *pkg = NULL;
pmdb_t *db_local;
-       int ret;

/* Sanity checks */
ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
@@ -500,13 +498,13 @@ int _pacman_trans_addtarget(pmtrans_t *trans, const char 
*target, pmtranstype_t
RET_ERR(PM_ERR_PKG_NOT_FOUND, -1);
}
}
-out:
-       ret = _pacman_trans_add_pkg (trans, pkg, type, flags);

-       if (ret == 0) {
+out:
+       if (_pacman_trans_add_pkg (trans, pkg, type, flags) != NULL) {
trans->targets = _pacman_list_add(trans->targets, strdup(target));
+               return 0;
}
-       return ret;
+       return -1;
}

int _pacman_trans_set_state(pmtrans_t *trans, int new_state)
diff --git a/lib/libpacman/trans.h b/lib/libpacman/trans.h
index 27d700f..0083784 100644
--- a/lib/libpacman/trans.h
+++ b/lib/libpacman/trans.h
@@ -99,13 +99,13 @@ pmtrans_t *_pacman_trans_new(void);
void _pacman_trans_free(pmtrans_t *trans);

int _pacman_trans_set_state(pmtrans_t *trans, int new_state);
+pmtranspkg_t *_pacman_trans_add_pkg (pmtrans_t *trans, pmpkg_t *target, 
pmtranstype_t type, unsigned int flags);
int _pacman_trans_addtarget(pmtrans_t *trans, const char *target, pmtranstype_t 
type, unsigned int flags);
int _pacman_trans_prepare(pmtrans_t *trans, pmlist_t **data);
int _pacman_trans_commit(pmtrans_t *trans, pmlist_t **data);

int _pacman_trans_sysupgrade(pmtrans_t *trans);

-/* FIXME: Make private when unification is done */
/* RENAMEME: struct __pmtrans_pkg  */
typedef struct __pmsyncpkg_t {
pmtranstype_t type;
_______________________________________________
Frugalware-git mailing list
[email protected]
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to