Re: [PATCH] Move "tee" building down to interpreter::set_logging_proc

Pedro Alves
2017-02-02T18:04:28Z

On 02/02/2017 05:44 PM, Simon Marchi wrote:

> Yeah sounds good.
>
> Though the pre-existing sentence "...if the output streams are to be
> tees" is not that clear to me, I'm not sure I would understand if I
> didn't already know what the function does. Why does it talk about
> multiple output streams that have to be tees, isn't there only one tee?
> Or is it meant to be a past tense verb, in which case it should be
> something like "...are to be tee-ed"? I just find the formulation awkward.

I think it's saying that all of "gdb_stdout, gdb_stderr, gdb_stdlog", etc.
should all end up as tees. They happens to end up as the same tee
object, but it's true that they're all tees.

How about this?

diff --git i/gdb/cli/cli-interp.h w/gdb/cli/cli-interp.h
index abae3d6..accecfa 100644
--- i/gdb/cli/cli-interp.h
+++ w/gdb/cli/cli-interp.h
@@ -21,12 +21,14 @@
struct interp;

/* Make the output ui_file to use when logging is enabled.
- CURR_OUTPUT is the current stream where output is currently being
- sent to. LOGFILE is the already-open log file. LOGGING_REDIRECT
- is true if the output is to be the logfile, and false if the output
- stream is to be a tee, with the log file as one of the outputs.
- Ownership of the log file is transferred to the returned output
- file. The returned output file is an owning pointer. */
+ CURR_OUTPUT is the stream where output is currently being sent to
+ (e.g., gdb_stdout for the CLI, raw output stream for the MI).
+ LOGFILE is log file already opened by the caller. LOGGING_REDIRECT
+ is the value of the "set logging redirect" setting. If true, the
+ resulting output is the logfile. If false, the output stream is a
+ tee, with the log file as one of the outputs. Ownership of LOGFILE
+ is transferred to the returned output file, which is an owning
+ pointer. */
extern ui_file *make_logging_output (ui_file *curr_output,
ui_file_up logfile,
bool logging_redirect);
diff --git i/gdb/interps.h w/gdb/interps.h
index 7672393..ef2ceeb 100644
--- i/gdb/interps.h
+++ w/gdb/interps.h
@@ -111,9 +111,11 @@ extern int current_interp_named_p (const char *name);
to do any special handling of streams when logging is enabled or
disabled. LOGFILE is the stream for the log file when logging is
starting and is NULL when logging is ending. LOGGING_REDIRECT is
- false if the output streams are to be tees, with the log file as
- one of the outputs. */
-
+ the value of the "set logging redirect" setting. If true, the
+ interpreter should configure the output streams to send output only
+ to the logfile. If false, the interpreter should configure the
+ output streams to send output to both the current output stream
+ (i.e., the terminal) and the log file. */
extern void current_interp_set_logging (ui_file_up logfile,
bool logging_redirect);