Index: trunk/Ohana/src/opihi/cmd.basic/output.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.basic/output.c	(revision 2598)
+++ trunk/Ohana/src/opihi/cmd.basic/output.c	(revision 7917)
@@ -5,22 +5,35 @@
 int output (int argc, char **argv) {
   
+  int N;
+  gpDest dest;
+  IOBuffer *buffer;
+
+  dest = GP_LOG;
+  if ((N = get_argument (argc, argv, "-err"))) {
+    dest = GP_ERR;
+    remove_argument (N, &argc, argv);
+  }
+
+  if ((N = get_argument (argc, argv, "-buffer"))) {
+    remove_argument (N, &argc, argv);
+    gprintSetBuffer (dest);
+    return (TRUE);
+  }
+    
+  if ((N = get_argument (argc, argv, "-dump"))) {
+    remove_argument (N, &argc, argv);
+    buffer = gprintGetBuffer (dest);
+    fprintf (STDERR, "buffer contents: \n");
+    fwrite (buffer[0].buffer, 1, buffer[0].Nbuffer, stderr);
+    fprintf (STDERR, "\n");
+    return (TRUE);
+  }
+    
   if (argc != 2) {
-    fprintf (stderr, "USAGE: output <filename>\n");
+    gprint (GP_ERR, "USAGE: output <filename>\n");
     return (FALSE);
   }
 
-  fflush (outfile);
-  if (outfile != stdout) fclose (outfile);
-  
-  /* we only use stdout, but let stderr be a synonym */
-  outfile = stdout;
-  if (strcmp (argv[1], "stdout") && strcmp (argv[1], "stderr")) {
-    outfile = fopen (argv[1], "a");
-  }
-
-  if (outfile == NULL) {
-    fprintf (stderr, "cannot open file %s\n", argv[1]);
-    outfile = stdout;
-  }
+  gprintSetFile (dest, argv[1]);
   return (TRUE);
 }
@@ -33,2 +46,6 @@
   outfile = stdout;
 }
+
+/* we could add the concept of saving the output to a buffer
+   then dumping to the target of the output stream.  not sure
+   what the command should look like... */
