From: John Runyon Date: Sat, 23 Mar 2024 06:34:53 +0000 (-0600) Subject: eval - make !SYSTEM report stderr too X-Git-Url: https://jfr.im/git/erebus.git/commitdiff_plain/aad4b93412e5cdea8030e58526a0e1e20455f7d3 eval - make !SYSTEM report stderr too --- diff --git a/modules/eval.py b/modules/eval.py index 698b226..3930b6d 100644 --- a/modules/eval.py +++ b/modules/eval.py @@ -19,9 +19,12 @@ modstart = lib.modstart modstop = lib.modstop # module code -import os +import subprocess import sys +# import these to make life easier using this module +import os +import ctlmod def module(name): return lib.mod(name) @@ -56,11 +59,13 @@ def system(bot, user, chan, realtarget, *args): if chan is not None: replyto = chan else: replyto = user - try: prochandle = os.popen(' '.join(args)) - except Exception: bot.msg(replyto, "Error: %s %s" % (sys.exc_info()[0], sys.exc_info()[1])) + try: + proc = subprocess.Popen(' '.join(args), shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, close_fds=True) + except Exception: + bot.msg(replyto, "Error: %s %s" % (sys.exc_info()[0], sys.exc_info()[1])) else: - for line in prochandle: - bot.msg(replyto, line) + for line in proc.stdout: + bot.msg(replyto, line.decode('utf-8', 'surrogateescape')) @lib.hook('exception', needchan=False, glevel=lib.OWNER) @lib.help(None, "cause an exception")