* [PATCH 0/2] Fix two small Python flush problems
@ 2022-08-15 18:50 Tom Tromey
2022-08-15 18:50 ` [PATCH 1/2] Fix gdb.flush documentation Tom Tromey
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: Tom Tromey @ 2022-08-15 18:50 UTC (permalink / raw)
To: gdb-patches
This short series fixes a couple of small problems with the 'flush'
function in Python.
First, I noticed that the documentation is missing a part of the
description. Then, I noticed that the stdout/stderr 'flush' method
was incorrectly implemented.
Tom
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 1/2] Fix gdb.flush documentation
2022-08-15 18:50 [PATCH 0/2] Fix two small Python flush problems Tom Tromey
@ 2022-08-15 18:50 ` Tom Tromey
2022-08-15 19:00 ` Eli Zaretskii
2022-08-15 18:50 ` [PATCH 2/2] Fix flush for sys.stderr Tom Tromey
2022-08-30 17:49 ` [PATCH 0/2] Fix two small Python flush problems Tom Tromey
2 siblings, 1 reply; 5+ messages in thread
From: Tom Tromey @ 2022-08-15 18:50 UTC (permalink / raw)
To: gdb-patches; +Cc: Tom Tromey
The gdb.flush documentation does not mention the 'stream' argument in
the function signature, only in the description. This patch fixes the
oversight.
---
gdb/doc/python.texi | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gdb/doc/python.texi b/gdb/doc/python.texi
index 9a823409854..7aa9e853d85 100644
--- a/gdb/doc/python.texi
+++ b/gdb/doc/python.texi
@@ -511,7 +511,7 @@ relevant stream.
@end defun
@findex gdb.flush
-@defun gdb.flush ()
+@defun gdb.flush (@r{[}, stream@r{]})
Flush the buffer of a @value{GDBN} paginated stream so that the
contents are displayed immediately. @value{GDBN} will flush the
contents of a stream automatically when it encounters a newline in the
--
2.34.1
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 2/2] Fix flush for sys.stderr
2022-08-15 18:50 [PATCH 0/2] Fix two small Python flush problems Tom Tromey
2022-08-15 18:50 ` [PATCH 1/2] Fix gdb.flush documentation Tom Tromey
@ 2022-08-15 18:50 ` Tom Tromey
2022-08-30 17:49 ` [PATCH 0/2] Fix two small Python flush problems Tom Tromey
2 siblings, 0 replies; 5+ messages in thread
From: Tom Tromey @ 2022-08-15 18:50 UTC (permalink / raw)
To: gdb-patches; +Cc: Tom Tromey
GDB overwrites Python's sys.stdout and sys.stderr, but does not
properly implement the 'flush' method -- it only ever will flush
stdout. This patch fixes the bug. I couldn't find a straightforward
way to write a test for this.
---
gdb/python/lib/gdb/__init__.py | 19 +++++++------------
gdb/testsuite/gdb.python/python.exp | 4 ++--
2 files changed, 9 insertions(+), 14 deletions(-)
diff --git a/gdb/python/lib/gdb/__init__.py b/gdb/python/lib/gdb/__init__.py
index 5b10e3e2381..191915e4f3b 100644
--- a/gdb/python/lib/gdb/__init__.py
+++ b/gdb/python/lib/gdb/__init__.py
@@ -39,6 +39,9 @@ class _GdbFile(object):
encoding = "UTF-8"
errors = "strict"
+ def __init__(self, stream):
+ self.stream = stream
+
def close(self):
# Do nothing.
return None
@@ -51,23 +54,15 @@ class _GdbFile(object):
self.write(line)
def flush(self):
- flush()
-
+ flush(stream=self.stream)
-class _GdbOutputFile(_GdbFile):
def write(self, s):
- write(s, stream=STDOUT)
-
+ write(s, stream=self.stream)
-sys.stdout = _GdbOutputFile()
-
-
-class _GdbOutputErrorFile(_GdbFile):
- def write(self, s):
- write(s, stream=STDERR)
+sys.stdout = _GdbFile(STDOUT)
-sys.stderr = _GdbOutputErrorFile()
+sys.stderr = _GdbFile(STDERR)
# Default prompt hook does nothing.
prompt_hook = None
diff --git a/gdb/testsuite/gdb.python/python.exp b/gdb/testsuite/gdb.python/python.exp
index 8c0da6daa26..48ff07e91e5 100644
--- a/gdb/testsuite/gdb.python/python.exp
+++ b/gdb/testsuite/gdb.python/python.exp
@@ -297,8 +297,8 @@ with_test_prefix "test decode_line" {
}
# gdb.write
-gdb_test "python print (sys.stderr)" ".*gdb._GdbOutputErrorFile (instance|object) at.*" "test stderr location"
-gdb_test "python print (sys.stdout)" ".*gdb._GdbOutputFile (instance|object) at.*" "test stdout location"
+gdb_test "python print (sys.stderr)" ".*gdb._GdbFile (instance|object) at.*" "test stderr location"
+gdb_test "python print (sys.stdout)" ".*gdb._GdbFile (instance|object) at.*" "test stdout location"
gdb_test "python gdb.write(\"Foo\\n\")" "Foo" "test default write"
gdb_test "python gdb.write(\"Error stream\\n\", stream=gdb.STDERR)" "Error stream" "test stderr write"
gdb_test "python gdb.write(\"Normal stream\\n\", stream=gdb.STDOUT)" "Normal stream" "test stdout write"
--
2.34.1
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] Fix gdb.flush documentation
2022-08-15 18:50 ` [PATCH 1/2] Fix gdb.flush documentation Tom Tromey
@ 2022-08-15 19:00 ` Eli Zaretskii
0 siblings, 0 replies; 5+ messages in thread
From: Eli Zaretskii @ 2022-08-15 19:00 UTC (permalink / raw)
To: Tom Tromey; +Cc: gdb-patches
> Date: Mon, 15 Aug 2022 12:50:08 -0600
> From: Tom Tromey via Gdb-patches <gdb-patches@sourceware.org>
> Cc: Tom Tromey <tromey@adacore.com>
>
> The gdb.flush documentation does not mention the 'stream' argument in
> the function signature, only in the description. This patch fixes the
> oversight.
Thanks, this falls under the "obvious fix" category, I think. It's
fine in any case.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 0/2] Fix two small Python flush problems
2022-08-15 18:50 [PATCH 0/2] Fix two small Python flush problems Tom Tromey
2022-08-15 18:50 ` [PATCH 1/2] Fix gdb.flush documentation Tom Tromey
2022-08-15 18:50 ` [PATCH 2/2] Fix flush for sys.stderr Tom Tromey
@ 2022-08-30 17:49 ` Tom Tromey
2 siblings, 0 replies; 5+ messages in thread
From: Tom Tromey @ 2022-08-30 17:49 UTC (permalink / raw)
To: Tom Tromey via Gdb-patches; +Cc: Tom Tromey
>>>>> "Tom" == Tom Tromey via Gdb-patches <gdb-patches@sourceware.org> writes:
Tom> This short series fixes a couple of small problems with the 'flush'
Tom> function in Python.
Tom> First, I noticed that the documentation is missing a part of the
Tom> description. Then, I noticed that the stdout/stderr 'flush' method
Tom> was incorrectly implemented.
I'm checking these in now.
Tom
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2022-08-30 17:49 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-08-15 18:50 [PATCH 0/2] Fix two small Python flush problems Tom Tromey
2022-08-15 18:50 ` [PATCH 1/2] Fix gdb.flush documentation Tom Tromey
2022-08-15 19:00 ` Eli Zaretskii
2022-08-15 18:50 ` [PATCH 2/2] Fix flush for sys.stderr Tom Tromey
2022-08-30 17:49 ` [PATCH 0/2] Fix two small Python flush problems Tom Tromey
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).