--- /usr/lib/python2.3/fileinput.py 2005-05-29 00:49:53.000000000 +0200 +++ ./fileinput.py 2005-06-22 13:34:21.000000000 +0200 @@ -99,7 +99,7 @@ global _state if _state and _state._file: raise RuntimeError, "input() already active" - _state = FileInput(files, inplace, backup, bufsize) + _state = _FileInput(files, inplace, backup, bufsize) return _state def close(): @@ -316,8 +316,7 @@ self._savestdout = sys.stdout sys.stdout = self._output else: - # This may raise IOError - self._file = open(self._filename, "r") + self._file = self.openfile(self._filename) self._buffer = self._file.readlines(self._bufsize) self._bufindex = 0 if not self._buffer: @@ -325,6 +324,9 @@ # Recursive call return self.readline() + def openfile(self, fn): + return open(fn, "r") + def filename(self): return self._filename @@ -340,6 +342,8 @@ def isstdin(self): return self._isstdin +_FileInput = FileInput + def _test(): import getopt inplace = 0 --- /dev/null 2005-04-04 13:35:33.000000000 +0200 +++ bz2fileinput.py 2005-06-22 13:34:59.000000000 +0200 @@ -0,0 +1,15 @@ + +import fileinput +from fileinput import * +from bz2 import BZ2File + +class BZ2FileInput(FileInput): + + def openfile(self, fn): + try: + return BZ2File(fn) + except IOError: + return open(fn, "r") + +fileinput._FileInput = BZ2FileInput +