Fix unicode vs. bytes issue in glsa-check (#341293)
authorAndy Kittner <andkit@gmx.de>
Wed, 26 Jan 2011 23:21:21 +0000 (00:21 +0100)
committerZac Medico <zmedico@gentoo.org>
Sat, 19 Jan 2013 05:15:18 +0000 (21:15 -0800)
http://git.overlays.gentoo.org/gitweb/?p=proj/gentoolkit.git;a=commit;h=01d40ffed91033119bae05dac5c9cea86b94aa2e

bin/glsa-check
pym/portage/glsa.py

index 3d047b54d1188de65700574ef255304d5e06c2c2..b2da90ae00307b1e14ce448010ee754792d77516 100755 (executable)
@@ -283,7 +283,7 @@ if mode == "test":
 # mail mode as requested by solar
 if mode == "mail":
        import portage.mail, socket
-       from io import StringIO
+       from io import BytesIO
        from email.mime.text import MIMEText
 
        # color doesn't make any sense for mail
@@ -302,11 +302,13 @@ if mode == "mail":
        mysubject = "[glsa-check] Summary for %s" % socket.getfqdn()
 
        # need a file object for summarylist()
-       myfd = StringIO()
-       myfd.write("GLSA Summary report for host %s\n" % socket.getfqdn())
-       myfd.write("(Command was: %s)\n\n" % " ".join(sys.argv))
+       myfd = BytesIO()
+       line = "GLSA Summary report for host %s\n" % socket.getfqdn()
+       myfd.write(line.encode("utf-8"))
+       line = "(Command was: %s)\n\n" % " ".join(sys.argv)
+       myfd.write(line.encode("utf-8"))
        summarylist(glsalist, fd1=myfd, fd2=myfd)
-       summary = str(myfd.getvalue())
+       summary = myfd.getvalue().decode("utf-8")
        myfd.close()
 
        myattachments = []
@@ -317,9 +319,10 @@ if mode == "mail":
                        if verbose:
                                sys.stderr.write(("invalid GLSA: %s (error message was: %s)\n" % (myid, e)))
                        continue
-               myfd = StringIO()
+               myfd = BytesIO()
                myglsa.dump(outstream=myfd)
-               myattachments.append(MIMEText(str(myfd.getvalue()), _charset="utf8"))
+               attachment = myfd.getvalue().decode("utf-8")
+               myattachments.append(MIMEText(attachment, _charset="utf8"))
                myfd.close()
 
        mymessage = portage.mail.create_message(myfrom, myrecipient, mysubject, summary, myattachments)
index c0c69dd2d383bc59718ea45222fd5b95537a8e62..1dd8a98b9318785424df6627aff7dc24251743ec 100644 (file)
@@ -604,6 +604,7 @@ class Glsa:
                @param  outfile: Stream that should be used for writing
                                                 (defaults to sys.stdout)
                """
+               outstream = getattr(outstream, "buffer", outstream)
                outstream = codecs.getwriter(encoding)(outstream)
                width = 76
                outstream.write(("GLSA %s: \n%s" % (self.nr, self.title)).center(width)+"\n")