lfs confusion
Andrew Dalke
adalke at mindspring.com
Thu Sep 23 16:04:53 EDT 2004
John Hunter
> Do you mean fd.seek?
D'oh! Yeah.
> I did manage to read and write a 4GB file on crcdocs using the script I
> posted above. Perhaps I don't understand what the "large" in large
> file really means. I assumed it was 2**31 approx equal 2GB. Has the
> default, non LFS limit, increased?
I think the answer is "it depends."
By default Python checks for large file support. From
'configure'
if test "$have_long_long" = yes -a \
"$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
"$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
cat >>confdefs.h <<\_ACEOF
#define HAVE_LARGEFILE_SUPPORT 1
_ACEOF
In other words, the default is to support large files
but only when the system supports >32 bit off_t. CVS
says that was added in 1999.
The fileobject.c code for seek has
#if !defined(HAVE_LARGEFILE_SUPPORT)
offset = PyInt_AsLong(offobj);
#else
offset = PyLong_Check(offobj) ?
PyLong_AsLongLong(offobj) : PyInt_AsLong(offobj);
#endif
if (PyErr_Occurred())
return NULL;
so my (corrected) statement about seeking to >2**31
should work. Though I'm not sure now that sys.maxint
is the proper test since it might return 2**63 under
a 64 bit machine. Hardcoding the value should work.
> I did do the normal incantation with the CFLAGS when compiling python
> for LFS on crcdocs.
You're beyond my knowledge there. I thought that
Python did the check automatically and didn't need
the CLAGS= ...
I compile from CVS source without special commands
and it Just Works.
Andrew
dalke at dalkescientific.com
More information about the Python-list
mailing list