Index: trunk/Ohana/src/opihi/pcontrol/host.c
===================================================================
--- trunk/Ohana/src/opihi/pcontrol/host.c	(revision 4689)
+++ trunk/Ohana/src/opihi/pcontrol/host.c	(revision 4705)
@@ -3,67 +3,92 @@
 int host (int argc, char **argv) {
 
+  int N, Ns;
   IDtype HostID;
-  int N, Delete, Off, On, Start, Stop, Check;
   Host *host;
 
-  /* this section needs some help: find the specified host in the stacks */
-  Delete = FALSE;
-  if ((N = get_argument (argc, argv, "-delete"))) {
-    remove_argument (N, &argc, argv);
-    Delete = TRUE;
+  if (argc != 3) {
+    fprintf (stdout, "USAGE: host (command) (hostname)\n");
+    return (FALSE);
   }
- 
-  /* this section needs some help: find the specified host in the stacks */
-  Off = FALSE;
-  if ((N = get_argument (argc, argv, "-off"))) {
-    if (Delete) {
-      fprintf (stdout, "-delete and -off incompatible\n");
+
+  if (!strcasecmp (argv[1], "ADD")) {
+    HostID = AddHost (argv[2]);
+    fprintf (stdout, "HostID: %d\n", (int) HostID);
+    return (TRUE);
+  }
+  if (!strcasecmp (argv[1], "ON")) {
+    N = FindNamedHost (argv[2], PCONTROL_HOST_OFF);
+    if (N < 0) {
+      fprintf (stdout, "host %s is not OFF\n", argv[2]);
       return (FALSE);
     }
-    remove_argument (N, &argc, argv);
-    Off = TRUE;
+    host = GetHost (PCONTROL_HOST_OFF, N);
+    DownHost (host);
+    return (TRUE);
   }
- 
-  /* this section needs some help: find the specified host in the stacks */
-  On = FALSE;
-  if ((N = get_argument (argc, argv, "-on"))) {
-    if (Delete || Off) {
-      fprintf (stdout, "only one of -delete, -off, -on\n");
+  if (!strcasecmp (argv[1], "RETRY")) {
+    N = FindNamedHost (argv[2], PCONTROL_HOST_DOWN);
+    if (N < 0) {
+      fprintf (stdout, "host %s is not DOWN\n", argv[2]);
       return (FALSE);
     }
-    remove_argument (N, &argc, argv);
-    On = TRUE;
+    host = GetHost (PCONTROL_HOST_DOWN, N);
+    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);
+    return (TRUE);
   }
- 
-  /* this section needs some help: find the specified host in the stacks */
-  Start = FALSE;
-  if ((N = get_argument (argc, argv, "-start"))) {
-    remove_argument (N, &argc, argv);
-    Start = TRUE;
-  }
- 
-  /* this section needs some help: find the specified host in the stacks */
-  Check = FALSE;
-  if ((N = get_argument (argc, argv, "-check"))) {
-    remove_argument (N, &argc, argv);
-    Check = TRUE;
-  }
- 
-  /* this section needs some help: find the specified host in the stacks */
-  Stop = FALSE;
-  if ((N = get_argument (argc, argv, "-stop"))) {
-    remove_argument (N, &argc, argv);
-    Stop = TRUE;
-  }
- 
-  if (argc != 2) {
-    fprintf (stdout, "USAGE: host (hostname) [-delete]\n");
+  if (!strcasecmp (argv[1], "CHECK")) {
+    Ns = FindNamedHostStack (argv[2]);
+    switch (Ns) {
+      case PCONTROL_HOST_IDLE:
+      case PCONTROL_HOST_BUSY:
+      case PCONTROL_HOST_DONE:
+	N = FindNamedHost (argv[2], Ns);
+	host = GetHost (Ns, N);
+	CheckHost (host);
+	return (TRUE);
+      case PCONTROL_HOST_DOWN:
+	fprintf (stdout, "host %s is DOWN\n", argv[2]);
+	return (TRUE);
+      case PCONTROL_HOST_OFF:
+	fprintf (stdout, "host %s is OFF\n", argv[2]);
+	return (TRUE);
+      default:
+	fprintf (stdout, "host %s not found\n", argv[2]);
+	return (FALSE);
+    }
     return (FALSE);
   }
-  
-  if (Delete) {
-    N = FindNamedHost (argv[1], PCONTROL_HOST_OFF);
+  if (!strcasecmp (argv[1], "OFF")) {
+    N = FindNamedHost (argv[2], PCONTROL_HOST_IDLE);
+    if (N >= 0) {
+      host = GetHost (PCONTROL_HOST_IDLE, N);
+      StopHost (host);
+      OffHost (host);
+      return (TRUE);
+    }
+    N = FindNamedHost (argv[2], PCONTROL_HOST_DOWN);
+    if (N >= 0) {
+      host = GetHost (PCONTROL_HOST_DOWN, N);
+      OffHost (host);
+      return (TRUE);
+    }
+    N = FindNamedHost (argv[2], PCONTROL_HOST_BUSY);
+    if (N >= 0) {
+      host = GetHost (PCONTROL_HOST_BUSY, N);
+      host[0].markoff  = TRUE;
+      PutHost (host, PCONTROL_HOST_BUSY, STACK_BOTTOM);
+      return (TRUE);
+    }
+    fprintf (stdout, "host %s is not BUSY, IDLE, or DOWN\n", argv[2]);
+    return (FALSE);
+  }
+  if (!strcasecmp (argv[1], "DELETE")) {
+    N = FindNamedHost (argv[2], PCONTROL_HOST_OFF);
     if (N < 0) {
-      fprintf (stdout, "host %s is not OFF\n", argv[1]);
+      fprintf (stdout, "host %s is not OFF\n", argv[2]);
       return (FALSE);
     }
@@ -72,82 +97,7 @@
     return (TRUE);
   }
-
-  if (On) {
-    N = FindNamedHost (argv[1], PCONTROL_HOST_OFF);
-    if (N < 0) {
-      fprintf (stdout, "host %s is not OFF\n", argv[1]);
-      return (FALSE);
-    }
-    host = GetHost (PCONTROL_HOST_OFF, N);
-    DownHost (host);
-    return (TRUE);
-  }
-
-  if (Check) {
-    N = FindNamedHost (argv[1], PCONTROL_HOST_IDLE);
-    if (N >= 0) {
-      host = GetHost (PCONTROL_HOST_IDLE, N);
-      CheckHost (host);
-      return (TRUE);
-    }
-    N = FindNamedHost (argv[1], PCONTROL_HOST_BUSY);
-    if (N >= 0) {
-      host = GetHost (PCONTROL_HOST_BUSY, N);
-      CheckHost (host);
-      return (TRUE);
-    }
-    fprintf (stdout, "host %s is not BUSY or IDLE\n", argv[1]);
-    return (FALSE);
-  }
-
-  if (Start) {
-    N = FindNamedHost (argv[1], PCONTROL_HOST_DOWN);
-    if (N < 0) {
-      fprintf (stdout, "host %s is not DOWN\n", argv[1]);
-      return (FALSE);
-    }
-    host = GetHost (PCONTROL_HOST_DOWN, N);
-    StartHost (host);
-    return (TRUE);
-  }
-  if (Stop) {
-    N = FindNamedHost (argv[1], PCONTROL_HOST_IDLE);
-    if (N < 0) {
-      fprintf (stdout, "host %s is not IDLE\n", argv[1]);
-      return (FALSE);
-    }
-    host = GetHost (PCONTROL_HOST_IDLE, N);
-    StopHost (host);
-    DownHost (host);
-    return (TRUE);
-  }
-
-  if (Off) {
-    N = FindNamedHost (argv[1], PCONTROL_HOST_IDLE);
-    if (N >= 0) {
-      host = GetHost (PCONTROL_HOST_IDLE, N);
-      StopHost (host);
-      OffHost (host);
-      return (TRUE);
-    }
-    N = FindNamedHost (argv[1], PCONTROL_HOST_DOWN);
-    if (N >= 0) {
-      host = GetHost (PCONTROL_HOST_DOWN, N);
-      OffHost (host);
-      return (TRUE);
-    }
-    N = FindNamedHost (argv[1], PCONTROL_HOST_BUSY);
-    if (N >= 0) {
-      host = GetHost (PCONTROL_HOST_BUSY, N);
-      host[0].markoff  = TRUE;
-      PutHost (host, PCONTROL_HOST_BUSY, STACK_BOTTOM);
-      return (TRUE);
-    }
-    fprintf (stdout, "host %s is not BUSY, IDLE, or DOWN\n", argv[1]);
-    return (FALSE);
-  }
-
-  HostID = AddHost (argv[1]);
-  fprintf (stdout, "HostID: %d\n", (int) HostID);
-  return (TRUE);
+  
+  fprintf (stderr, "unknown host command %s\n", argv[1]);
+  fprintf (stderr, "valid options: xxx\n");
+  return (FALSE);
 }
