commit:     0b8c98934c9c1c1baf07fb56aad6e5c4fc9f3168
Author:     Devan Franchini <twitch153 <AT> gentoo <DOT> org>
AuthorDate: Sun Aug 17 03:58:08 2014 +0000
Commit:     Devan Franchini <twitch153 <AT> gentoo <DOT> org>
CommitDate: Sun Aug 17 03:58:08 2014 +0000
URL:        
http://git.overlays.gentoo.org/gitweb/?p=proj/layman.git;a=commit;h=0b8c9893

svn.py: decodes stdout output if applicable

Fixes commit: f1db156a7d11e0bfb8d7b6a19f066c5d0b0fba5d
Thanks to Arfrever for his assistance in optimizing the code.

---
 layman/overlays/modules/svn/svn.py | 24 +++++++++++++++---------
 1 file changed, 15 insertions(+), 9 deletions(-)

diff --git a/layman/overlays/modules/svn/svn.py 
b/layman/overlays/modules/svn/svn.py
index 51bb487..586a9dc 100644
--- a/layman/overlays/modules/svn/svn.py
+++ b/layman/overlays/modules/svn/svn.py
@@ -22,6 +22,7 @@ __version__ = "$Id: svn.py 236 2006-09-05 20:39:37Z wrobel $"
 
 
 import os
+import sys
 from subprocess import PIPE, Popen
 
 #==============================================================================
@@ -166,13 +167,18 @@ class SvnOverlay(OverlaySource):
         '''
         file_to_run = resolve_command(self.command(), self.output.error)[1]
         args = " ".join([file_to_run, " upgrade", target])
-        stdout, stderr = Popen(args, shell=True, stdout=PIPE, 
stderr=PIPE).communicate()
-        if stdout:
-            self.output.debug("SVN: check_upgrade()... have a valid pipe, "
-                "running upgrade", 4)
-            upgrade_output = stdout.readline().split('\n')
-            if upgrade_output:
-                self.output.debug("  output: %s" % upgrade_output, 4)
-            self.output.debug("SVN: check_upgrade()... svn upgrade done", 4)
-            stdout.terminate()
+        pipe = Popen(args, shell=True, stdout=PIPE, stderr=PIPE)
+        stdout = pipe.stdout.read()
+        self.output.debug("SVN: check_upgrade()... running svn upgrade", 4)
+
+        if sys.hexversion >= 0x3000000:
+            stdout = stdout.decode('UTF-8')
+
+        upgrade_output = stdout.strip('\n')
+        if upgrade_output:
+            self.output.debug("  output: %r" % upgrade_output, 4)
+        self.output.debug("SVN: check_upgrade()... svn upgrade done", 4)
+        pipe.terminate()
+        pipe.stdout.close()
+        pipe.stderr.close()
         return

Reply via email to