88 |
88 |
89 def _noopseek(self): |
89 def _noopseek(self): |
90 self._fp.seek(0, os.SEEK_CUR) |
90 self._fp.seek(0, os.SEEK_CUR) |
91 |
91 |
92 def seek(self, *args, **kwargs): |
92 def seek(self, *args, **kwargs): |
93 object.__setattr__(self, r'_lastop', self.OPNONE) |
93 object.__setattr__(self, '_lastop', self.OPNONE) |
94 return self._fp.seek(*args, **kwargs) |
94 return self._fp.seek(*args, **kwargs) |
95 |
95 |
96 def write(self, d): |
96 def write(self, d): |
97 if self._lastop == self.OPREAD: |
97 if self._lastop == self.OPREAD: |
98 self._noopseek() |
98 self._noopseek() |
99 |
99 |
100 object.__setattr__(self, r'_lastop', self.OPWRITE) |
100 object.__setattr__(self, '_lastop', self.OPWRITE) |
101 return self._fp.write(d) |
101 return self._fp.write(d) |
102 |
102 |
103 def writelines(self, *args, **kwargs): |
103 def writelines(self, *args, **kwargs): |
104 if self._lastop == self.OPREAD: |
104 if self._lastop == self.OPREAD: |
105 self._noopeseek() |
105 self._noopeseek() |
106 |
106 |
107 object.__setattr__(self, r'_lastop', self.OPWRITE) |
107 object.__setattr__(self, '_lastop', self.OPWRITE) |
108 return self._fp.writelines(*args, **kwargs) |
108 return self._fp.writelines(*args, **kwargs) |
109 |
109 |
110 def read(self, *args, **kwargs): |
110 def read(self, *args, **kwargs): |
111 if self._lastop == self.OPWRITE: |
111 if self._lastop == self.OPWRITE: |
112 self._noopseek() |
112 self._noopseek() |
113 |
113 |
114 object.__setattr__(self, r'_lastop', self.OPREAD) |
114 object.__setattr__(self, '_lastop', self.OPREAD) |
115 return self._fp.read(*args, **kwargs) |
115 return self._fp.read(*args, **kwargs) |
116 |
116 |
117 def readline(self, *args, **kwargs): |
117 def readline(self, *args, **kwargs): |
118 if self._lastop == self.OPWRITE: |
118 if self._lastop == self.OPWRITE: |
119 self._noopseek() |
119 self._noopseek() |
120 |
120 |
121 object.__setattr__(self, r'_lastop', self.OPREAD) |
121 object.__setattr__(self, '_lastop', self.OPREAD) |
122 return self._fp.readline(*args, **kwargs) |
122 return self._fp.readline(*args, **kwargs) |
123 |
123 |
124 def readlines(self, *args, **kwargs): |
124 def readlines(self, *args, **kwargs): |
125 if self._lastop == self.OPWRITE: |
125 if self._lastop == self.OPWRITE: |
126 self._noopseek() |
126 self._noopseek() |
127 |
127 |
128 object.__setattr__(self, r'_lastop', self.OPREAD) |
128 object.__setattr__(self, '_lastop', self.OPREAD) |
129 return self._fp.readlines(*args, **kwargs) |
129 return self._fp.readlines(*args, **kwargs) |
130 |
130 |
131 |
131 |
132 class fdproxy(object): |
132 class fdproxy(object): |
133 """Wraps osutil.posixfile() to override the name attribute to reflect the |
133 """Wraps osutil.posixfile() to override the name attribute to reflect the |
213 start = end |
213 start = end |
214 except IOError as inst: |
214 except IOError as inst: |
215 if inst.errno != 0 and not win32.lasterrorwaspipeerror(inst): |
215 if inst.errno != 0 and not win32.lasterrorwaspipeerror(inst): |
216 raise |
216 raise |
217 self.close() |
217 self.close() |
218 raise IOError(errno.EPIPE, r'Broken pipe') |
218 raise IOError(errno.EPIPE, 'Broken pipe') |
219 |
219 |
220 def flush(self): |
220 def flush(self): |
221 try: |
221 try: |
222 return self.fp.flush() |
222 return self.fp.flush() |
223 except IOError as inst: |
223 except IOError as inst: |
224 if not win32.lasterrorwaspipeerror(inst): |
224 if not win32.lasterrorwaspipeerror(inst): |
225 raise |
225 raise |
226 raise IOError(errno.EPIPE, r'Broken pipe') |
226 raise IOError(errno.EPIPE, 'Broken pipe') |
227 |
227 |
228 |
228 |
229 def _is_win_9x(): |
229 def _is_win_9x(): |
230 '''return true if run on windows 95, 98 or me.''' |
230 '''return true if run on windows 95, 98 or me.''' |
231 try: |
231 try: |