mirror of
https://github.com/python/cpython.git
synced 2024-11-24 02:15:30 +08:00
Added a new fileno() method. ZODB's repozo.py wants this so it can
apply os.fsync() to the GzipFile backup files it creates.
This commit is contained in:
parent
fe393f47c6
commit
5cfb05eef0
10
Lib/gzip.py
10
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
|
||||
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user