2004-01-18 Andrew Cagney <cagney@redhat.com>
[deliverable/binutils-gdb.git] / gdb / tui / tui-file.c
index ae3f842e96161269e63220fd809c7823f15a189a..36fc097029cffe6edb5bd6389905ed34a685928d 100644 (file)
@@ -1,5 +1,5 @@
-/* GDB_FILE - a generic STDIO like output stream.
-   Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+/* UI_FILE - a generic STDIO like output stream.
+   Copyright 1999, 2000, 2001 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
    Boston, MA 02111-1307, USA.  */
 
 #include "defs.h"
-#include "gdb-file.h"
+#include "ui-file.h"
 #include "tui/tui-file.h"
+#include "tui/tui-io.h"
 
-#include <string.h>
-
-/* Called instead of fputs for all TUI_FILE output.  */
+#include "tui.h"
 
-void (*fputs_unfiltered_hook) (const char *linebuffer, GDB_FILE * stream);
+#include <string.h>
 
-/* A ``struct gdb_file'' that is compatible with all the legacy
+/* A ``struct ui_file'' that is compatible with all the legacy
    code. */
 
 /* new */
@@ -48,51 +47,50 @@ struct tui_stream
   int ts_buflen;
 };
 
-static gdb_file_flush_ftype tui_file_flush;
-extern gdb_file_fputs_ftype tui_file_fputs;
-static gdb_file_isatty_ftype tui_file_isatty;
-static gdb_file_rewind_ftype tui_file_rewind;
-static gdb_file_put_ftype tui_file_put;
-static gdb_file_delete_ftype tui_file_delete;
-static struct gdb_file *tui_file_new PARAMS ((void));
+static ui_file_flush_ftype tui_file_flush;
+extern ui_file_fputs_ftype tui_file_fputs;
+static ui_file_isatty_ftype tui_file_isatty;
+static ui_file_rewind_ftype tui_file_rewind;
+static ui_file_put_ftype tui_file_put;
+static ui_file_delete_ftype tui_file_delete;
+static struct ui_file *tui_file_new (void);
 static int tui_file_magic;
 
-static struct gdb_file *
-tui_file_new ()
+static struct ui_file *
+tui_file_new (void)
 {
   struct tui_stream *tui = xmalloc (sizeof (struct tui_stream));
-  struct gdb_file *file = gdb_file_new ();
-  set_gdb_file_data (file, tui, tui_file_delete);
-  set_gdb_file_flush (file, tui_file_flush);
-  set_gdb_file_fputs (file, tui_file_fputs);
-  set_gdb_file_isatty (file, tui_file_isatty);
-  set_gdb_file_rewind (file, tui_file_rewind);
-  set_gdb_file_put (file, tui_file_put);
+  struct ui_file *file = ui_file_new ();
+  set_ui_file_data (file, tui, tui_file_delete);
+  set_ui_file_flush (file, tui_file_flush);
+  set_ui_file_fputs (file, tui_file_fputs);
+  set_ui_file_isatty (file, tui_file_isatty);
+  set_ui_file_rewind (file, tui_file_rewind);
+  set_ui_file_put (file, tui_file_put);
   tui->ts_magic = &tui_file_magic;
   return file;
 }
 
 static void
-tui_file_delete (file)
-     struct gdb_file *file;
+tui_file_delete (struct ui_file *file)
 {
-  struct tui_stream *tmpstream = gdb_file_data (file);
+  struct tui_stream *tmpstream = ui_file_data (file);
   if (tmpstream->ts_magic != &tui_file_magic)
-    internal_error ("tui_file_delete: bad magic number");
+    internal_error (__FILE__, __LINE__,
+                   "tui_file_delete: bad magic number");
   if ((tmpstream->ts_streamtype == astring) &&
       (tmpstream->ts_strbuf != NULL))
     {
-      free (tmpstream->ts_strbuf);
+      xfree (tmpstream->ts_strbuf);
     }
-  free (tmpstream);
+  xfree (tmpstream);
 }
 
-struct gdb_file *
-tui_fileopen (stream)
-     FILE *stream;
+struct ui_file *
+tui_fileopen (FILE *stream)
 {
-  struct gdb_file *file = tui_file_new ();
-  struct tui_stream *tmpstream = gdb_file_data (file);
+  struct ui_file *file = tui_file_new ();
+  struct tui_stream *tmpstream = ui_file_data (file);
   tmpstream->ts_streamtype = afile;
   tmpstream->ts_filestream = stream;
   tmpstream->ts_strbuf = NULL;
@@ -100,12 +98,11 @@ tui_fileopen (stream)
   return file;
 }
 
-struct gdb_file *
-tui_sfileopen (n)
-     int n;
+struct ui_file *
+tui_sfileopen (int n)
 {
-  struct gdb_file *file = tui_file_new ();
-  struct tui_stream *tmpstream = gdb_file_data (file);
+  struct ui_file *file = tui_file_new ();
+  struct tui_stream *tmpstream = ui_file_data (file);
   tmpstream->ts_streamtype = astring;
   tmpstream->ts_filestream = NULL;
   if (n > 0)
@@ -122,12 +119,12 @@ tui_sfileopen (n)
 }
 
 static int
-tui_file_isatty (file)
-     struct gdb_file *file;
+tui_file_isatty (struct ui_file *file)
 {
-  struct tui_stream *stream = gdb_file_data (file);
+  struct tui_stream *stream = ui_file_data (file);
   if (stream->ts_magic != &tui_file_magic)
-    internal_error ("tui_file_isatty: bad magic number");
+    internal_error (__FILE__, __LINE__,
+                   "tui_file_isatty: bad magic number");
   if (stream->ts_streamtype == afile)
     return (isatty (fileno (stream->ts_filestream)));
   else
@@ -135,23 +132,24 @@ tui_file_isatty (file)
 }
 
 static void
-tui_file_rewind (file)
-     struct gdb_file *file;
+tui_file_rewind (struct ui_file *file)
 {
-  struct tui_stream *stream = gdb_file_data (file);
+  struct tui_stream *stream = ui_file_data (file);
   if (stream->ts_magic != &tui_file_magic)
-    internal_error ("tui_file_rewind: bad magic number");
+    internal_error (__FILE__, __LINE__,
+                   "tui_file_rewind: bad magic number");
   stream->ts_strbuf[0] = '\0';
 }
 
 static void
-tui_file_put (struct gdb_file *file,
-             gdb_file_put_method_ftype *write,
+tui_file_put (struct ui_file *file,
+             ui_file_put_method_ftype *write,
              void *dest)
 {
-  struct tui_stream *stream = gdb_file_data (file);
+  struct tui_stream *stream = ui_file_data (file);
   if (stream->ts_magic != &tui_file_magic)
-    internal_error ("tui_file_put: bad magic number");
+    internal_error (__FILE__, __LINE__,
+                   "tui_file_put: bad magic number");
   if (stream->ts_streamtype == astring)
     write (dest, stream->ts_strbuf, strlen (stream->ts_strbuf));
 }
@@ -166,92 +164,41 @@ tui_file_put (struct gdb_file *file,
 /* FIXME: Should be broken up and moved to a TUI specific file. */
 
 void
-tui_file_fputs (linebuffer, file)
-     const char *linebuffer;
-     GDB_FILE *file;
+tui_file_fputs (const char *linebuffer, struct ui_file *file)
 {
-  struct tui_stream *stream = gdb_file_data (file);
-#if defined(TUI)
-  extern int tui_owns_terminal;
-#endif
-  /* NOTE: cagney/1999-10-13: The use of fputs_unfiltered_hook is
-     seriously discouraged.  Those wanting to hook output should
-     instead implement their own gdb_file object and install that. See
-     also tui_file_flush(). */
-  if (fputs_unfiltered_hook
-      && (file == gdb_stdout
-         || file == gdb_stderr))
-    fputs_unfiltered_hook (linebuffer, file);
+  struct tui_stream *stream = ui_file_data (file);
+
+  if (stream->ts_streamtype == astring)
+    {
+      tui_file_adjust_strbuf (strlen (linebuffer), file);
+      strcat (stream->ts_strbuf, linebuffer);
+    }
   else
     {
-#if defined(TUI)
-      if (tui_version && tui_owns_terminal)
-       {
-         /* If we get here somehow while updating the TUI (from
-          * within a tuiDo(), then we need to temporarily 
-          * set up the terminal for GDB output. This probably just
-          * happens on error output.
-          */
-
-         if (stream->ts_streamtype == astring)
-           {
-             tui_file_adjust_strbuf (strlen (linebuffer), stream);
-             strcat (stream->ts_strbuf, linebuffer);
-           }
-         else
-           {
-             tuiTermUnsetup (0, (tui_version) ? cmdWin->detail.commandInfo.curch : 0);
-             fputs (linebuffer, stream->ts_filestream);
-             tuiTermSetup (0);
-             if (linebuffer[strlen (linebuffer) - 1] == '\n')
-               tuiClearCommandCharCount ();
-             else
-               tuiIncrCommandCharCountBy (strlen (linebuffer));
-           }
-       }
-      else
-       {
-         /* The normal case - just do a fputs() */
-         if (stream->ts_streamtype == astring)
-           {
-             tui_file_adjust_strbuf (strlen (linebuffer), stream);
-             strcat (stream->ts_strbuf, linebuffer);
-           }
-         else
-           fputs (linebuffer, stream->ts_filestream);
-       }
-
-
-#else
-      if (stream->ts_streamtype == astring)
-       {
-         tui_file_adjust_strbuf (strlen (linebuffer), file);
-         strcat (stream->ts_strbuf, linebuffer);
-       }
-      else
-       fputs (linebuffer, stream->ts_filestream);
-#endif
+      tui_puts (linebuffer);
     }
 }
 
 char *
-tui_file_get_strbuf (struct gdb_file *file)
+tui_file_get_strbuf (struct ui_file *file)
 {
-  struct tui_stream *stream = gdb_file_data (file);
+  struct tui_stream *stream = ui_file_data (file);
   if (stream->ts_magic != &tui_file_magic)
-    internal_error ("tui_file_get_strbuf: bad magic number");
+    internal_error (__FILE__, __LINE__,
+                   "tui_file_get_strbuf: bad magic number");
   return (stream->ts_strbuf);
 }
 
 /* adjust the length of the buffer by the amount necessary
    to accomodate appending a string of length N to the buffer contents */
 void
-tui_file_adjust_strbuf (int n, struct gdb_file *file)
+tui_file_adjust_strbuf (int n, struct ui_file *file)
 {
-  struct tui_stream *stream = gdb_file_data (file);
+  struct tui_stream *stream = ui_file_data (file);
   int non_null_chars;
   if (stream->ts_magic != &tui_file_magic)
-    internal_error ("tui_file_adjust_strbuf: bad magic number");
+    internal_error (__FILE__, __LINE__,
+                   "tui_file_adjust_strbuf: bad magic number");
 
   if (stream->ts_streamtype != astring)
     return;
@@ -273,19 +220,12 @@ tui_file_adjust_strbuf (int n, struct gdb_file *file)
 }
 
 static void
-tui_file_flush (file)
-     GDB_FILE *file;
+tui_file_flush (struct ui_file *file)
 {
-  struct tui_stream *stream = gdb_file_data (file);
+  struct tui_stream *stream = ui_file_data (file);
   if (stream->ts_magic != &tui_file_magic)
-    internal_error ("tui_file_flush: bad magic number");
-
-  /* NOTE: cagney/1999-10-12: If we've been linked with code that uses
-     fputs_unfiltered_hook then we assume that it doesn't need to know
-     about flushes.  Code that does need to know about flushes can
-     implement a proper gdb_file object. */
-  if (fputs_unfiltered_hook)
-    return;
+    internal_error (__FILE__, __LINE__,
+                   "tui_file_flush: bad magic number");
 
   switch (stream->ts_streamtype)
     {
This page took 0.035583 seconds and 4 git commands to generate.