Index: /trunk/Ohana/src/opihi/cmd.basic/output.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.basic/output.c	(revision 9038)
+++ /trunk/Ohana/src/opihi/cmd.basic/output.c	(revision 9039)
@@ -1,5 +1,3 @@
 # include "basic.h"
-
-static FILE *outfile;
 
 int output (int argc, char **argv) {
@@ -8,5 +6,5 @@
   gpDest dest;
   IOBuffer *buffer;
-  char *output;
+  char *output, *current;
 
   dest = GP_LOG;
@@ -14,4 +12,12 @@
     dest = GP_ERR;
     remove_argument (N, &argc, argv);
+  }
+
+  if ((N = get_argument (argc, argv, "-current"))) {
+    current = gprintGetName (dest);
+    remove_argument (N, &argc, argv);
+    set_str_variable (argv[N], current);
+    remove_argument (N, &argc, argv);
+    return (TRUE);
   }
 
@@ -42,5 +48,5 @@
     
   if (argc != 2) {
-    gprint (GP_ERR, "USAGE: output <filename> [-err] [-buffer] [-dump filename]\n");
+    gprint (GP_ERR, "USAGE: output <filename> [-err] [-buffer] [-current var] [-dump filename]\n");
     return (FALSE);
   }
@@ -49,10 +55,2 @@
   return (TRUE);
 }
-
-FILE *GetOutfile () {
-  return (outfile);
-}
-
-void InitOutfile () {
-  outfile = stdout;
-}
Index: /trunk/Ohana/src/opihi/include/shell.h
===================================================================
--- /trunk/Ohana/src/opihi/include/shell.h	(revision 9038)
+++ /trunk/Ohana/src/opihi/include/shell.h	(revision 9039)
@@ -42,4 +42,5 @@
 typedef struct {
   FILE *file;
+  char *name;
   IOBuffer *buffer;
   gpMode mode;
@@ -105,6 +106,4 @@
 char         *VarConfig             	PROTO((char *keyword, char *mode, void *ptr));
 char         *VarConfigEntry           	PROTO((char *keyword, char *mode, int entry, void *ptr));
-FILE         *GetOutfile            	PROTO((void));
-void          InitOutfile           	PROTO((void));
 
 int           push_error                PROTO((char *line));
Index: /trunk/Ohana/src/opihi/lib.shell/gprint.c
===================================================================
--- /trunk/Ohana/src/opihi/lib.shell/gprint.c	(revision 9038)
+++ /trunk/Ohana/src/opihi/lib.shell/gprint.c	(revision 9039)
@@ -50,4 +50,6 @@
   streams[N].dest = GP_LOG;
   streams[N].file = stdout;
+  streams[N].name = strcreate ("stdout");
+
   ALLOCATE (streams[N].buffer, IOBuffer, 1);
   InitIOBuffer (streams[N].buffer, 64);
@@ -58,4 +60,6 @@
   streams[N].dest = GP_ERR;
   streams[N].file = stderr;
+  streams[N].name = strcreate ("stderr");
+
   ALLOCATE (streams[N].buffer, IOBuffer, 1);
   InitIOBuffer (streams[N].buffer, 64);
@@ -137,11 +141,15 @@
 skip_close:
   
+  free (stream[0].name);
+
   /* we allow the user to set stdout to ERR and stderr to LOG if they want */
   if (!strcmp (filename, "stdout")) {
     stream[0].file = stdout;
+    stream[0].name = strcreate (filename);
     goto skip_open;
   }
   if (!strcmp (filename, "stderr")) {
     stream[0].file = stderr;
+    stream[0].name = strcreate (filename);
     goto skip_open;
   }
@@ -152,4 +160,7 @@
     fprintf (stderr, "cannot open file %s\n", filename);
     stream[0].file = (dest == GP_LOG) ? stdout : stderr;
+    stream[0].name = (dest == GP_LOG) ? strcreate ("stdout") : strcreate("stderr");
+  } else {
+    stream[0].name = strcreate (filename);
   }
 
@@ -163,4 +174,11 @@
   stream = gprintGetStream (dest);
   return (stream[0].file);
+}
+
+char *gprintGetName (gpDest dest) {
+
+  gpStream *stream;
+  stream = gprintGetStream (dest);
+  return (stream[0].name);
 }
 
