@@ -126,7 +126,6 @@ def detectBOM(self):
126126 encoding = bomDict .get (string [:2 ]) # UTF-16
127127 seek = 2
128128
129-
130129 self .seek (string , encoding and seek or 0 )
131130
132131 return encoding
@@ -137,33 +136,38 @@ def seek(self, buffer, n):
137136 self .rawStream .unget (buffer [n :])
138137 return
139138
140- try :
141- self .rawStream .seek (n )
142- except IOError :
143- class BufferedStream :
144- def __init__ (self , data , stream ):
145- self .data = data
146- self .stream = stream
147- def read (self , chars = - 1 ):
148- if chars == - 1 or chars > len (self .data ):
149- result = self .data
150- self .data = ''
151- if chars == - 1 :
152- return result + self .stream .read ()
153- else :
154- return result + self .stream .read (chars - len (result ))
155- elif not self .data :
156- return self .stream .read (chars )
157- else :
158- result = self .data [:chars ]
159- self .data = self .data [chars :]
160- return result
161- def unget (self , data ):
162- if self .data :
163- self .data += data
139+ if hasattr (self .rawStream , 'seek' ):
140+ try :
141+ self .rawStream .seek (n )
142+ return
143+ except IOError :
144+ pass
145+
146+ class BufferedStream :
147+ def __init__ (self , data , stream ):
148+ self .data = data
149+ self .stream = stream
150+ def read (self , chars = - 1 ):
151+ if chars == - 1 or chars > len (self .data ):
152+ result = self .data
153+ self .data = ''
154+ if chars == - 1 :
155+ return result + self .stream .read ()
164156 else :
165- self .data = data
166- self .rawStream = BufferedStream (buffer [n :], self .rawStream )
157+ return result + self .stream .read (chars - len (result ))
158+ elif not self .data :
159+ return self .stream .read (chars )
160+ else :
161+ result = self .data [:chars ]
162+ self .data = self .data [chars :]
163+ return result
164+ def unget (self , data ):
165+ if self .data :
166+ self .data += data
167+ else :
168+ self .data = data
169+
170+ self .rawStream = BufferedStream (buffer [n :], self .rawStream )
167171
168172 def detectEncodingMeta (self ):
169173 """Report the encoding declared by the meta element
0 commit comments