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

commit ca0ed72ce3fa7bddabe31bdad6579a823db2e091
Author: Michel Hermier <[email protected]>
Date:   Thu Aug 14 17:29:09 2014 +0200

libpacman: Change pacman_trans_addtarget API signature to allow mixed mode 
transactions in the future.

diff --git a/doc/libpacman-changes.txt b/doc/libpacman-changes.txt
index 40e1c88..01a6e83 100644
--- a/doc/libpacman-changes.txt
+++ b/doc/libpacman-changes.txt
@@ -38,6 +38,8 @@ pacman_trans_cb_download:

pacman_trans_cb_progress: Make 'pkgname' argument a constant.

+pacman_trans_addtarget: Change method signature to make the API more versatile 
in the future. This should allow mixed mode targets with addition, removal and 
upgrades in the the same transaction.
+
PM_PKG_SCRIPTLET: Remove typo to PM_PKG_SCRIPLET (compatibility symbol is 
provided).

==== Symbols added:
diff --git a/lib/libpacman/pacman.cpp b/lib/libpacman/pacman.cpp
index 31b27c9..ec2f134 100644
--- a/lib/libpacman/pacman.cpp
+++ b/lib/libpacman/pacman.cpp
@@ -1109,22 +1109,22 @@ int pacman_trans_sysupgrade()
}

/** Add a target to the transaction.
+ * @param trans the transaction
+ * @param transtype the current type of transaction to perform to the target
+ * @param flags the flags used to help to interpret the target
* @param target the name of the target to add
* @return 0 on success, -1 on error (pm_errno is set accordingly)
*/
-int pacman_trans_addtarget(const char *target)
+int pacman_trans_addtarget(pmtrans_t *trans, pmtranstype_t transtype, const 
char *target, int flags)
{
-       pmtrans_t *trans;
-
/* Sanity checks */
-       ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
-       ASSERT(!_pacman_strempty(target), RET_ERR(PM_ERR_WRONG_ARGS, -1));
-
-       trans = handle->trans;
ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
ASSERT(trans->state == STATE_INITIALIZED, RET_ERR(PM_ERR_TRANS_NOT_INITIALIZED, 
-1));
+       ASSERT(transtype == trans->m_type, RET_ERR(PM_ERR_WRONG_ARGS, -1)); // 
FIXME: Only identical transtype is supported for now
+       ASSERT(!_pacman_strempty(target), RET_ERR(PM_ERR_WRONG_ARGS, -1));
+       ASSERT(flags == trans->flags, RET_ERR(PM_ERR_WRONG_ARGS, -1)); // 
FIXME: Only identical flags are supported for now

-       return trans->add(target, trans->m_type, trans->flags);
+       return trans->add(target, transtype, flags);
}

/** Prepare a transaction.
diff --git a/lib/libpacman/pacman.h b/lib/libpacman/pacman.h
index 6f0722e..546e5ee 100644
--- a/lib/libpacman/pacman.h
+++ b/lib/libpacman/pacman.h
@@ -369,7 +369,7 @@ enum {
void *pacman_trans_getinfo(unsigned char parm);
int pacman_trans_init(unsigned char type, unsigned int flags, 
pacman_trans_cb_event cb_event, pacman_trans_cb_conv conv, 
pacman_trans_cb_progress cb_progress);
int pacman_trans_sysupgrade(void);
-int pacman_trans_addtarget(const char *target);
+int pacman_trans_addtarget(pmtrans_t *trans, pmtranstype_t transtype, const 
char *target, int flags);
int pacman_trans_prepare(pmlist_t **data);
int pacman_trans_commit(pmlist_t **data);
int pacman_trans_release(void);
diff --git a/src/pacman-g2/deptest.c b/src/pacman-g2/deptest.c
index 64678a7..e5a7e06 100644
--- a/src/pacman-g2/deptest.c
+++ b/src/pacman-g2/deptest.c
@@ -84,7 +84,7 @@ int deptestpkg(list_t *targets)
strcat(str, i->data);
}
vprint(_("add target %s\n"), str);
-       if(pacman_trans_addtarget(str) == -1) {
+       if(pacman_trans_addtarget(pacman_get_trans, PM_TRANS_TYPE_ADD, str, 0) 
== -1) {
FREE(str);
ERR(NL, _("could not add target (%s)\n"), pacman_strerror(pm_errno));
retval = 1;
diff --git a/src/pacman-g2/sync.c b/src/pacman-g2/sync.c
index 30ee2ba..9f2b39d 100644
--- a/src/pacman-g2/sync.c
+++ b/src/pacman-g2/sync.c
@@ -361,7 +361,7 @@ int syncpkg(list_t *targets)
}
return(1);
}
-                                       if(pacman_trans_addtarget("pacman-g2") 
== -1) {
+                                       
if(pacman_trans_addtarget(pacman_get_trans(), PM_TRANS_TYPE_SYNC, "pacman-g2", 
config->flags) == -1) {
ERR(NL, _("could not add target '%s': %s\n"), "pacman-g2", 
pacman_strerror(pm_errno));
retval = 1;
goto cleanup;
@@ -374,7 +374,7 @@ int syncpkg(list_t *targets)
/* process targets */
for(i = targets; i; i = i->next) {
char *targ = i->data;
-                       if(pacman_trans_addtarget(targ) == -1) {
+                       if(pacman_trans_addtarget(pacman_get_trans(), 
PM_TRANS_TYPE_SYNC, targ, config->flags) == -1) {
PM_GRP *grp = NULL;
list_t *j;
int found=0;
diff --git a/src/pacman-g2/trans.c b/src/pacman-g2/trans.c
index fcef7af..4b6698a 100644
--- a/src/pacman-g2/trans.c
+++ b/src/pacman-g2/trans.c
@@ -452,7 +452,7 @@ int trans_commit(pmtranstype_t transtype, list_t *targets)
/* and add targets to it */
MSG(NL, _("loading package data... "));
for(i = finaltargs; i; i = i->next) {
-               if(pacman_trans_addtarget(i->data) == -1) {
+               if(pacman_trans_addtarget(pacman_get_trans(), transtype, 
i->data, config->flags) == -1) {
int match = 0;

switch (transtype) {
@@ -466,8 +466,9 @@ int trans_commit(pmtranstype_t transtype, list_t *targets)
char *pkgname = pacman_pkg_getinfo(p, PM_PKG_NAME);

match = pacman_reg_match(pkgname, i->data);
-                                               if(match > 0) {
-                                                       
pacman_trans_addtarget(pkgname);
+                                               if(match > 0 &&
+                                                               
pacman_trans_addtarget(pacman_get_trans(), transtype, pkgname, config->flags) 
== -1) {
+                                                       match = 0;
}
}
}
_______________________________________________
Frugalware-git mailing list
[email protected]
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to