mirror of
https://github.com/python/cpython.git
synced 2025-10-18 04:38:07 +00: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
3 changed files with 22 additions and 2 deletions
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
|
# based on Andrew Kuchling's minigzip.py distributed with the zlib module
|
||||||
|
|
||||||
import struct, sys, time
|
import os, struct, sys, time
|
||||||
import zlib
|
import zlib
|
||||||
import __builtin__
|
import __builtin__
|
||||||
|
|
||||||
|
@ -334,6 +334,14 @@ class GzipFile:
|
||||||
def flush(self):
|
def flush(self):
|
||||||
self.fileobj.flush()
|
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):
|
def isatty(self):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
|
@ -16,8 +16,16 @@ data2 = """/* zlibmodule.c -- gzip-compatible data compression */
|
||||||
/* See http://www.winimage.com/zLibDll for Windows */
|
/* 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()
|
f = gzip.GzipFile(filename, 'r') ; d = f.read() ; f.close()
|
||||||
verify(d == data1*50)
|
verify(d == data1*50)
|
||||||
|
|
||||||
|
|
|
@ -46,6 +46,10 @@ Extension modules
|
||||||
Library
|
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.
|
- imaplib has two new methods: deleteacl and myrights.
|
||||||
|
|
||||||
- nntplib has two new methods: description and descriptions. They
|
- nntplib has two new methods: description and descriptions. They
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue