summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTim Peters <tim.peters@gmail.com>2004-07-27 21:02:02 (GMT)
committerTim Peters <tim.peters@gmail.com>2004-07-27 21:02:02 (GMT)
commit5cfb05eef04707679077a45ebbe2b096840261a0 (patch)
tree57bcd4e40f31a8b3a36bffee8931e6244006bec1
parentfe393f47c662c307d2d3e90f785edf5821d54a8d (diff)
downloadcpython-5cfb05eef04707679077a45ebbe2b096840261a0.zip
cpython-5cfb05eef04707679077a45ebbe2b096840261a0.tar.gz
cpython-5cfb05eef04707679077a45ebbe2b096840261a0.tar.bz2
Added a new fileno() method. ZODB's repozo.py wants this so it can
apply os.fsync() to the GzipFile backup files it creates.
-rw-r--r--Lib/gzip.py10
-rw-r--r--Lib/test/test_gzip.py10
-rw-r--r--Misc/NEWS4
3 files changed, 22 insertions, 2 deletions
diff --git a/Lib/gzip.py b/Lib/gzip.py
index d51b7db..9cab995 100644
--- a/Lib/gzip.py
+++ b/Lib/gzip.py
@@ -5,7 +5,7 @@ but random access is not allowed."""
# based on Andrew Kuchling's minigzip.py distributed with the zlib module
-import struct, sys, time
+import os, struct, sys, time
import zlib
import __builtin__
@@ -334,6 +334,14 @@ class GzipFile:
def flush(self):
self.fileobj.flush()
+ def fileno(self):
+ """Invoke the underlying file object's fileno() method.
+
+ This will raise AttributeError if the underlying file object
+ doesn't support fileno().
+ """
+ return self.fileobj.fileno()
+
def isatty(self):
return False
diff --git a/Lib/test/test_gzip.py b/Lib/test/test_gzip.py
index bb4ed49..81a4865 100644
--- a/Lib/test/test_gzip.py
+++ b/Lib/test/test_gzip.py
@@ -16,8 +16,16 @@ data2 = """/* zlibmodule.c -- gzip-compatible data compression */
/* See http://www.winimage.com/zLibDll for Windows */
"""
-f = gzip.GzipFile(filename, 'wb') ; f.write(data1 * 50) ; f.close()
+f = gzip.GzipFile(filename, 'wb') ; f.write(data1 * 50)
+# Try flush and fileno.
+f.flush()
+f.fileno()
+if hasattr(os, 'fsync'):
+ os.fsync(f.fileno())
+f.close()
+
+# Try reading.
f = gzip.GzipFile(filename, 'r') ; d = f.read() ; f.close()
verify(d == data1*50)
diff --git a/Misc/NEWS b/Misc/NEWS
index 289754d..0fb2559 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -46,6 +46,10 @@ Extension modules
Library
-------
+- gzip.GzipFile has a new fileno() method, to retrieve the handle of the
+ underlying file object (provided it has a fileno() method). This is
+ needed if you want to use os.fsync() on a GzipFile.
+
- imaplib has two new methods: deleteacl and myrights.
- nntplib has two new methods: description and descriptions. They