From 48792a076a2483e65b5c41339659b2363a97c81f Mon Sep 17 00:00:00 2001
From: Per Cederqvist <ceder@lysator.liu.se>
Date: Tue, 7 Oct 2003 14:02:50 +0000
Subject: [PATCH] (expectable._read): New method, extracted from fill_buffer.
 (expectable.fill_buffer): Extract the reading to the _read method, 	so
 that it can be overridden. (telnet): New class. (telnet.__init__): New
 method. (telnet._read): New method. (telnet.send): New method.
 (telnet.fileno): New method.

---
 pcl_expect.py | 45 +++++++++++++++++++++++++++++++++++----------
 1 file changed, 35 insertions(+), 10 deletions(-)

diff --git a/pcl_expect.py b/pcl_expect.py
index d1f3b7c..8c8e90f 100644
--- a/pcl_expect.py
+++ b/pcl_expect.py
@@ -6,6 +6,7 @@ import re
 import select
 import sets
 import sys
+import telnetlib
 import types
 
 #
@@ -55,18 +56,25 @@ class expectable:
     def fileno(self):
         return self.__fileno
 
+    def _read(self):
+        try:
+            s = os.read(self.fileno(), 8192)
+        except OSError, e:
+            if e.errno == errno.EIO:
+                debug("got EIO from fd %d" % self.fileno())
+                s = ""
+            else:
+                raise
+        if s == "":
+            debug("got eof from fd %d" % self.fileno())
+            return "", True
+        else:
+            return s, False
+
     def fill_buffer(self):
         if not self.__eof_seen:
-            try:
-                s = os.read(self.fileno(), 8192)
-            except OSError, e:
-                if e.errno == errno.EIO:
-                    debug("got EIO from fd %d" % self.fileno())
-                    s = ""
-                else:
-                    raise
-            if s == "":
-                debug("got eof from fd %d" % self.fileno())
+            s, eof = self._read()
+            if eof:
                 self.__eof_seen = True
             else:
                 debug("got %d bytes from fd %d" % (len(s), self.fileno()))
@@ -143,6 +151,23 @@ class spawn(expectable):
         os.close(self.__pty)
         return os.waitpid(self.__child, 0)
 
+class telnet(expectable):
+    def __init__(self, host, port):
+        self.telnet = telnetlib.Telnet(host, port)
+
+    def _read(self):
+        try:
+            s = self.telnet.read_eager()
+        except EOFError:
+            return "", True
+        return s, False
+
+    def send(self, s):
+        self.telnet.write(s)
+
+    def fileno(self):
+        return self.telnet.fileno()
+
 class impl:
     def __init__(self, timeout = None):
         self.__first = True
-- 
GitLab