From: Fredrik Tolf Date: Mon, 7 Jan 2013 06:28:45 +0000 (+0100) Subject: Merge branch 'master' into python3 X-Git-Url: http://dolda2000.com/gitweb/?p=pdm.git;a=commitdiff_plain;h=98ecc02e068d7108325210c9fd9f510ec7bae66c Merge branch 'master' into python3 Conflicts: pdm/sshsock.py --- 98ecc02e068d7108325210c9fd9f510ec7bae66c diff --cc pdm/sshsock.py index 3a64122,d96f4ff..6efaba9 --- a/pdm/sshsock.py +++ b/pdm/sshsock.py @@@ -9,9 -9,33 +9,33 @@@ class sshsocket(object) if port is not None: args += ["-p", str(int(port))] args += [host] - args += ["python", "-m", "pdm.sshsock", path] + args += ["python3", "-m", "pdm.sshsock", path] self.proc = subprocess.Popen(args, stdin=subprocess.PIPE, stdout=subprocess.PIPE, close_fds=True) fcntl.fcntl(self.proc.stdout, fcntl.F_SETFL, fcntl.fcntl(self.proc.stdout, fcntl.F_GETFL) | os.O_NONBLOCK) + head = self.recv(5) - if head != "SSOCK": ++ if head != b"SSOCK": + raise socket.error("unexpected reply from %s: %r" % (host, head)) + head = self.recv(1) - if head == "+": - buf = "" ++ if head == b"+": ++ buf = b"" + while True: + r = self.recv(1) - if r == "": ++ if r == b"": + raise socket.error("unexpected EOF in SSH socket stream") - elif r == "\n": ++ elif r == b"\n": + break + buf += r + return - elif head == "-": - buf = "" ++ elif head == b"-": ++ buf = b"" + while True: + r = self.recv(1) - if r in ("\n", ""): ++ if r in {b"\n", b""}: + break + buf += r - raise socket.error(buf) ++ raise socket.error(buf.decode("utf-8")) + else: + raise socket.error("unexpected reply from %s: %r" % (host, head)) def close(self): if self.proc is not None: @@@ -36,12 -60,17 +60,17 @@@ self.close() def cli(): - fcntl.fcntl(sys.stdin, fcntl.F_SETFL, fcntl.fcntl(sys.stdin, fcntl.F_GETFL) | os.O_NONBLOCK) + fcntl.fcntl(sys.stdin.buffer, fcntl.F_SETFL, fcntl.fcntl(sys.stdin.buffer, fcntl.F_GETFL) | os.O_NONBLOCK) sk = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) try: - sk.connect(sys.argv[1]) + try: + sk.connect(sys.argv[1]) + except socket.error as err: + sys.stdout.write("SSOCK-connect: %s\n" % err) + return + sys.stdout.write("SSOCK+\n") - buf1 = "" - buf2 = "" + buf1 = b"" + buf2 = b"" while True: wfd = [] if buf1: wfd.append(sk)