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

commit ae4f5e2dd1b53ba991ea1c77eb4e16758eee59e9
Author: Michel Hermier <herm...@frugalware.org>
Date:   Thu May 16 14:17:44 2013 +0200

libpacman: Add _pacman_trans_add_target which return a pmtranspkg_t *instead of 
an error code.

diff --git a/lib/libpacman/trans.c b/lib/libpacman/trans.c
index e18699b..f8c61b3 100644
--- a/lib/libpacman/trans.c
+++ b/lib/libpacman/trans.c
@@ -421,23 +421,24 @@ pmtranspkg_t *_pacman_trans_add_pkg (pmtrans_t *trans, 
pmpkg_t *pkg, pmtranstype
return _pacman_trans_add (trans, transpkg);
}

-int _pacman_trans_addtarget(pmtrans_t *trans, const char *target, 
pmtranstype_t type, unsigned int flags)
+pmtranspkg_t *_pacman_trans_add_target(pmtrans_t *trans, const char *target, 
pmtranstype_t type, unsigned int flags)
{
+       pmtranspkg_t *transpkg;
char *pkg_name;
pmpkg_t *pkg = NULL;
pmdb_t *db_local;

/* Sanity checks */
-       ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
-       ASSERT(target != NULL && strlen(target) != 0, 
RET_ERR(PM_ERR_WRONG_ARGS, -1));
+       ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, NULL));
+       ASSERT(target != NULL && strlen(target) != 0, 
RET_ERR(PM_ERR_WRONG_ARGS, NULL));

db_local = trans->handle->db_local;
pkg_name = target;

-       ASSERT(db_local != NULL, RET_ERR(PM_ERR_DB_NULL, -1));
+       ASSERT(db_local != NULL, RET_ERR(PM_ERR_DB_NULL, NULL));

if(f_stringlist_find (trans->targets, target)) {
-               RET_ERR(PM_ERR_TRANS_DUP_TARGET, -1);
+               RET_ERR(PM_ERR_TRANS_DUP_TARGET, NULL);
}

if (type & PM_TRANS_TYPE_ADD) {
@@ -447,7 +448,7 @@ int _pacman_trans_addtarget(pmtrans_t *trans, const char 
*target, pmtranstype_t
if(strchr(pkg_name, '|')) {
pkg = fakepkg_create(pkg_name);
if (pkg == NULL) {
-                               return -1;
+                               return NULL;
}
}

@@ -456,7 +457,7 @@ int _pacman_trans_addtarget(pmtrans_t *trans, const char 
*target, pmtranstype_t
pkg = _pacman_pkg_load(pkg_name);
if(pkg == NULL) {
/* pm_errno is already set by pkg_load() */
-                               return -1;
+                               return NULL;
}
}

@@ -476,39 +477,43 @@ int _pacman_trans_addtarget(pmtrans_t *trans, const char 
*target, pmtranstype_t
/* FIXME: the list is leaked in this case */
dbs_search = _pacman_list_add (dbs_search, dbs);
if(dbs_search == NULL) {
-                                               return -1;
+                                               return NULL;
}
}
} else {
targ = targline;
dbs_search = trans->handle->dbs_sync;
}
-                       pkg = _pacman_db_list_get_pkg (dbs_search, targ);
+                       pkg = _pacman_dblist_get_pkg (dbs_search, targ, flags);
}

if (pkg == NULL) {
-                       RET_ERR(PM_ERR_PKG_NOT_FOUND, -1);
+                       RET_ERR(PM_ERR_PKG_NOT_FOUND, NULL);
}
goto out;
}

if (type & PM_TRANS_TYPE_REMOVE) {
if (__pacman_trans_get_trans_pkg (trans, pkg_name) != NULL) {
-                       RET_ERR(PM_ERR_TRANS_DUP_TARGET, -1);
+                       RET_ERR(PM_ERR_TRANS_DUP_TARGET, NULL);
}

if((pkg = _pacman_db_scan(db_local, pkg_name, INFRQ_ALL)) == NULL) {
_pacman_log(PM_LOG_ERROR, _("could not find %s in database"), pkg_name);
-                       RET_ERR(PM_ERR_PKG_NOT_FOUND, -1);
+                       RET_ERR(PM_ERR_PKG_NOT_FOUND, NULL);
}
}

out:
-       if (_pacman_trans_add_pkg (trans, pkg, type, flags) != NULL) {
+       transpkg = _pacman_trans_add_pkg (trans, pkg, type, flags);
+       if (transpkg != NULL) {
trans->targets = _pacman_list_add(trans->targets, strdup(target));
-               return 0;
}
-       return -1;
+       return transpkg;
+}
+
+int _pacman_trans_addtarget (pmtrans_t *trans, const char *target, 
pmtranstype_t type, unsigned int flags) {
+       return _pacman_trans_add_target (trans, target, type, flags) != NULL ? 
0 : -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 ce8831c..9b7fd9e 100644
--- a/lib/libpacman/trans.h
+++ b/lib/libpacman/trans.h
@@ -99,7 +99,8 @@ 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);
+pmtranspkg_t *_pacman_trans_add_pkg (pmtrans_t *trans, pmpkg_t *pkg, 
pmtranstype_t type, unsigned int flags);
+pmtranspkg_t *_pacman_trans_add_target (pmtrans_t *trans, const char *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);
_______________________________________________
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to