subprocess.Popen returns byte data by default. Python2 was happy
to try to execute string operations on such data and hope for the
best, but python3 is more persnickety. Luckily, there's a simple
way to indicate to the Popen class that text data is wanted that
benefits the script. Just specifying universal_newlines will cause
the returned data to be text and also convert any system-specific
newlines to '\n' which the script relies on anyway.
Enabled on Mac as an incidental change after confirming that the
script works there just as well as it does on Linux.
It probably works on FreeBSD too, but I retired my BSD system years
ago. So I have no way to check.
Don't run it on Windows.
- It didn't work after all. It was just detecting non-posix and
returning success.