This patch fixes the one sent to bug-cfengine by Jo Rhett, which tried to index
a enum type (you can't do that), and so it wasn't merged to trunk as it
wouldn't compile.
Index: cfengine-trunk/src/do.c
===================================================================
--- cfengine-trunk.orig/src/do.c
+++ cfengine-trunk/src/do.c
@@ -2765,8 +2765,9 @@ for (ptr = VPKG; ptr != NULL; ptr=ptr->n
Verbose("Match status for %s is %u\n", ptr->name, match );
/* Process any queued actions (install/remove). */
- if ((pending_pkgs) && ((ptr->action != prev_action) || (ptr->pkgmgr !=
prev_pkgmgr)))
+ if ((pending_pkgs != NULL) && ((ptr->action != prev_action) || (ptr->pkgmgr
!= prev_pkgmgr)))
{
+ Verbose("New action for package %s didn't match previous action\n",
ptr->name);
ProcessPendingPackages(prev_pkgmgr, prev_action, &pending_pkgs);
DeleteItemList( pending_pkgs );
}
@@ -2778,10 +2779,10 @@ for (ptr = VPKG; ptr != NULL; ptr=ptr->n
if (ptr->action == pkgaction_remove)
{
PackageList(ptr->name, ptr->pkgmgr, ptr->ver, ptr->cmp,
&pending_pkgs);
- AppendItem(&pending_pkgs, ptr->name, NULL);
+ AppendItem(&pending_pkgs, ptr->name, NULL);
/* Some package managers operate best doing things one at a time. */
- if ( (ptr->pkgmgr == pkgmgr_freebsd) || (ptr->pkgmgr ==
pkgmgr_sun) )
+ if ( (ptr->pkgmgr == pkgmgr_freebsd) || (ptr->pkgmgr == pkgmgr_sun) )
{
RemovePackage( ptr->pkgmgr, &pending_pkgs );
DeleteItemList( pending_pkgs );
@@ -2797,10 +2798,10 @@ for (ptr = VPKG; ptr != NULL; ptr=ptr->n
AddMultipleClasses(ptr->elsedef);
if (ptr->action == pkgaction_install)
{
- AppendItem(&pending_pkgs, ptr->name, NULL);
+ AppendItem(&pending_pkgs, ptr->name, NULL);
/* Some package managers operate best doing things one at a time. */
- if ( (ptr->pkgmgr == pkgmgr_freebsd) || (ptr->pkgmgr ==
pkgmgr_sun) )
+ if ( (ptr->pkgmgr == pkgmgr_freebsd) || (ptr->pkgmgr == pkgmgr_sun) )
{
InstallPackage( ptr->pkgmgr, &pending_pkgs );
DeleteItemList( pending_pkgs );
@@ -2809,19 +2810,19 @@ for (ptr = VPKG; ptr != NULL; ptr=ptr->n
}
ptr->done = 'y';
+ ReleaseCurrentLock();
if( ptr->action != pkgaction_none )
{
prev_action = ptr->action;
prev_pkgmgr = ptr->pkgmgr;
}
- ReleaseCurrentLock();
+ }
if(pending_pkgs != NULL)
{
ProcessPendingPackages(prev_pkgmgr, prev_action, &pending_pkgs);
DeleteItemList( pending_pkgs );
}
- }
}
void ProcessPendingPackages (enum pkgmgrs pkgmgr, enum pkgactions action,
struct Item **pending_pkgs)
--
Eric Searcy
OSU Open Source Lab
_______________________________________________
Bug-cfengine mailing list
[email protected]
https://cfengine.org/mailman/listinfo/bug-cfengine