Index: trunk/Ohana/src/opihi/pcontrol/host.c
===================================================================
--- trunk/Ohana/src/opihi/pcontrol/host.c	(revision 8181)
+++ trunk/Ohana/src/opihi/pcontrol/host.c	(revision 8296)
@@ -4,4 +4,5 @@
 
   int N, Ns;
+  int StackID;
   IDtype HostID;
   Host *host;
@@ -15,68 +16,61 @@
   }
   if (!strcasecmp (argv[1], "ON")) {
-    N = FindNamedHost (argv[2], PCONTROL_HOST_OFF);
-    if (N < 0) {
+    host = PullHostFromStackByName (PCONTROL_HOST_OFF, argv[2]);
+    if (!host) {
       gprint (GP_LOG, "host %s is not OFF\n", argv[2]);
       return (FALSE);
     }
-    host = GetHost (PCONTROL_HOST_OFF, N);
     DownHost (host);
     return (TRUE);
   }
   if (!strcasecmp (argv[1], "RETRY")) {
-    N = FindNamedHost (argv[2], PCONTROL_HOST_DOWN);
-    if (N < 0) {
+    host = PullHostFromStackByName (PCONTROL_HOST_DOWN, argv[2]);
+    if (!host) {
       gprint (GP_LOG, "host %s is not DOWN\n", argv[2]);
       return (FALSE);
     }
-    host = GetHost (PCONTROL_HOST_DOWN, N);
+    /* reset time, place back on DOWN stack */
     host[0].nexttry.tv_sec  = 0;
     host[0].nexttry.tv_usec = 0;
     host[0].lasttry.tv_sec  = 0;
     host[0].lasttry.tv_usec = 0;
-    StartHost (host);
+    PutHost (host, PCONTROL_HOST_DOWN, STACK_BOTTOM);
     return (TRUE);
   }
   if (!strcasecmp (argv[1], "CHECK")) {
-    Ns = FindNamedHostStack (argv[2]);
-    switch (Ns) {
+    host = PullHostByName (argv[2], &StackID);
+    switch (StackID) {
       case PCONTROL_HOST_IDLE:
+	gprint (GP_LOG, "host %s is IDLE\n", argv[2]);
       case PCONTROL_HOST_BUSY:
+	gprint (GP_LOG, "host %s is BUSY\n", argv[2]);
       case PCONTROL_HOST_DONE:
-	N = FindNamedHost (argv[2], Ns);
-	host = GetHost (Ns, N);
-	if (CheckHost (host)) {
-	  if (VerboseMode()) gprint (GP_ERR, "host %s is on\n", host[0].hostname);
-	} 
-	return (TRUE);
+	gprint (GP_LOG, "host %s is DONE\n", argv[2]);
       case PCONTROL_HOST_DOWN:
 	gprint (GP_LOG, "host %s is DOWN\n", argv[2]);
-	return (TRUE);
       case PCONTROL_HOST_OFF:
 	gprint (GP_LOG, "host %s is OFF\n", argv[2]);
-	return (TRUE);
       default:
 	gprint (GP_LOG, "host %s not found\n", argv[2]);
 	return (FALSE);
     }
+    PutHost (host, StackID, STACK_BOTTOM);
     return (FALSE);
   }
   if (!strcasecmp (argv[1], "OFF")) {
-    N = FindNamedHost (argv[2], PCONTROL_HOST_IDLE);
-    if (N >= 0) {
-      host = GetHost (PCONTROL_HOST_IDLE, N);
+    host = PullHostFromStackByName (PCONTROL_HOST_IDLE, argv[2]);
+    if (host) {
       StopHost (host);
       OffHost (host);
       return (TRUE);
     }
-    N = FindNamedHost (argv[2], PCONTROL_HOST_DOWN);
-    if (N >= 0) {
-      host = GetHost (PCONTROL_HOST_DOWN, N);
+    host = PullHostFromStackByName (PCONTROL_HOST_DOWN, argv[2]);
+    if (host) {
       OffHost (host);
       return (TRUE);
     }
-    N = FindNamedHost (argv[2], PCONTROL_HOST_BUSY);
-    if (N >= 0) {
-      host = GetHost (PCONTROL_HOST_BUSY, N);
+    /* XXX the 'markoff' flag is not being used */
+    host = PullHostFromStackByName (PCONTROL_HOST_BUSY, argv[2]);
+    if (host) {
       host[0].markoff  = TRUE;
       PutHost (host, PCONTROL_HOST_BUSY, STACK_BOTTOM);
@@ -87,10 +81,9 @@
   }
   if (!strcasecmp (argv[1], "DELETE")) {
-    N = FindNamedHost (argv[2], PCONTROL_HOST_OFF);
-    if (N < 0) {
+    host = PullHostFromStackByName (PCONTROL_HOST_OFF, argv[2]);
+    if (!host) {
       gprint (GP_LOG, "host %s is not OFF\n", argv[2]);
       return (FALSE);
     }
-    host = GetHost (PCONTROL_HOST_OFF, N);
     DelHost (host);
     return (TRUE);
