scripts icon indicating copy to clipboard operation
scripts copied to clipboard

lnotify 0.34 + Python 3.7: malformed ps call

Open randrej opened this issue 5 years ago • 1 comments

subprocess.check_output() returns bytes. The result of the call on line 103 (bytes) is then used to form the command passed to another call of subprocess.check_output() on the following line.

This fails on Python 3.

When lnotify is run on Python 2, the shell command on line 104 is obtained by using % string formatting (a Python 2 default), with a bytes object used as the value of the singular %s. This provides a clean output in Python 2 (say, since it's a PID, 1102) and a mangled one in Python 3 : b'1102', since there is no implicit bytes -> str conversion (apart from bytes' __str__).

window_pid, the bytes instance, must be converted to str (unicode string) in Python 3, before using it as an argument to %.

I'll submit a PR fixing this using from __future__ import unicode_literals.

randrej avatar May 03 '19 21:05 randrej

I was just looking at another issue related to this chunk of code. I'm curious if you have an opinion on my comments in #339.

larsks avatar May 22 '19 18:05 larsks