mirror of
git://git.sv.gnu.org/coreutils.git
synced 2026-04-20 18:56:39 +02:00
34 lines
834 B
Plaintext
34 lines
834 B
Plaintext
|
|
import sys, os, errno, platform
|
||
|
|
|
||
|
|
# Pass an _empty_ file
|
||
|
|
if len(sys.argv) != 2:
|
||
|
|
sys.exit(1)
|
||
|
|
|
||
|
|
if not hasattr(os, 'SEEK_DATA'):
|
||
|
|
# Not available on python 2, or on darwin python 3
|
||
|
|
# Also Darwin swaps SEEK_DATA/SEEK_HOLE definitions
|
||
|
|
if platform.system() == "Darwin":
|
||
|
|
SEEK_DATA = 4
|
||
|
|
else:
|
||
|
|
SEEK_DATA = 3 # Valid on Linux, FreeBSD, Solaris
|
||
|
|
else:
|
||
|
|
SEEK_DATA = os.SEEK_DATA
|
||
|
|
|
||
|
|
# Even if os supports SEEK_DATA or SEEK_HOLE,
|
||
|
|
# the file system may not, in which case it would report
|
||
|
|
# current and eof positions respectively.
|
||
|
|
# Therefore work with an empty file,
|
||
|
|
# ensuring SEEK_DATA returns ENXIO (no more data)
|
||
|
|
try:
|
||
|
|
fd = os.open(sys.argv[1], os.O_RDONLY)
|
||
|
|
except:
|
||
|
|
sys.exit(1)
|
||
|
|
|
||
|
|
try:
|
||
|
|
data = os.lseek(fd, 0, SEEK_DATA)
|
||
|
|
except OSError as e:
|
||
|
|
if e.errno == errno.ENXIO:
|
||
|
|
sys.exit(0)
|
||
|
|
|
||
|
|
sys.exit(1)
|