Re: RFA: Make cli-out follow gdb_stdout

Daniel Jacobowitz
2002-07-22T18:21:49Z

On Mon, Jul 22, 2002 at 02:12:15PM -0400, Andrew Cagney wrote:
> FYI,
>
> This:
>
> > struct ui_out_data
> > {
> >- struct ui_file *stream;
> >+ struct ui_file **stream;
> > int suppress_output;
> > };
>
> and this:
>
> >- uiout = cli_out_new (gdb_stdout);
> >+ uiout = cli_out_new (&gdb_stdout);
>
> worry me.
>
> The intent is to eventually have everything using a parameterized output
> object - if you want to change where output goes, change the parameter.
> Given that, having stuff depend on an indirect global pointer looks to
> be going in the wrong direction.
>
> I'll need to look over the problems that Pierre was trying to solve.

I'm not thrilled with it myself. Let me explain what I'm trying to do,
and let's see if we can come up with a better model.

I have a function which temporarily redirects GDB's output. How does
it do this? Well, the best way seems to be to modify
gdb_std{out,err,log}. But the old value of gdb_stdout is cached in the
cli_out object.

The two minimal solutions were the one above (using a ui_file**) or
hardcoding gdb_stdout (since that's the only thing it's ever used for
at present). They're both a bit of a step backwards. I could provide
methods to query and set the underlying stream of a ui_out object, but
the differences between the different ui_out objects make that a little
awkward. Would that be better?

--
Daniel Jacobowitz Carnegie Mellon University
MontaVista Software Debian GNU/Linux Developer