tools: don't mix print(end="") with printb()
While mixing print(end="") with printb(), some messages may miss due to
the underlying buffer handling in python 3.
For example:
# python3 opensnoop.py
PID COMM FD ERR PATH
/proc/18849/cmdline
4109 tmux: server 67 0 /proc/18849/cmdline
4109 tmux: server 67 0 /proc/18849/cmdline
4109 tmux: server 67 0 /proc/18849/cmdline
The PID, COMM, FD, and ERR are printed with print(end=""), and those of
the first instance was eaten by printb() which outputs PATH.
The following scripts mix print(end="") and printb() for the same line:
tools/execsnoop.py
tools/opensnoop.py
tools/tcpaccept.py
tools/tcpconnect.py
Those scripts work fine with python 2 but some messages may miss while
using python 3.
This commit converts print(end="") to printb(nl="") to avoid the
inconsistent outputs.
Signed-off-by: Gary Lin <glin@suse.com>
diff --git a/tools/tcpconnect.py b/tools/tcpconnect.py
index e31ff77..cb3e83b 100755
--- a/tools/tcpconnect.py
+++ b/tools/tcpconnect.py
@@ -197,9 +197,9 @@
if args.timestamp:
if start_ts == 0:
start_ts = event.ts_us
- print("%-9.3f" % ((float(event.ts_us) - start_ts) / 1000000), end="")
+ printb(b"%-9.3f" % ((float(event.ts_us) - start_ts) / 1000000), nl="")
if args.print_uid:
- print("%-6d" % event.uid, end="")
+ printb(b"%-6d" % event.uid, nl="")
printb(b"%-6d %-12.12s %-2d %-16s %-16s %-4d" % (event.pid,
event.task, event.ip,
inet_ntop(AF_INET, pack("I", event.saddr)).encode(),
@@ -211,9 +211,9 @@
if args.timestamp:
if start_ts == 0:
start_ts = event.ts_us
- print("%-9.3f" % ((float(event.ts_us) - start_ts) / 1000000), end="")
+ printb(b"%-9.3f" % ((float(event.ts_us) - start_ts) / 1000000), nl="")
if args.print_uid:
- print("%-6d" % event.uid, end="")
+ printb(b"%-6d" % event.uid, nl="")
printb(b"%-6d %-12.12s %-2d %-16s %-16s %-4d" % (event.pid,
event.task, event.ip,
inet_ntop(AF_INET6, event.saddr).encode(), inet_ntop(AF_INET6, event.daddr).encode(),