• Fred Drake's avatar
    Trent Mick <trentm@activestate.com>: · 699f352f
    Fred Drake yazdı
    This patch fixes the posix module for large file support mainly on
    Win64, although some general cleanup is done as well.
    
    The changes are:
    
    - abstract stat->STAT, fstat->FSTAT, and struct stat->STRUCT_STAT
    This is because stat() etc. are not the correct functions to use on
    Win64 (nor maybe on other platforms?, if not then it is now trivial to
    select the appropriate one). On Win64 the appropriate system functions
    are _stati64(), etc.
    
    - add _pystat_fromstructstat(), it builds the return tuple for the
    fstat system call. This functionality was being duplicated. As well
    the construction of the tuple was modified to ensure no overflow of
    the time_t elements (sizeof(time_t) > sizeof(long) on Win64).
    
    - add overflow protection for the return values of posix_spawnv and
    posix_spawnve
    
    - use the proper 64-bit capable lseek() on Win64
    
    - use intptr_t instead of long where appropriate from Win32/64 blocks
    (sizeof(void*) > sizeof(long) on Win64)
    
    This closes SourceForge patch #100513.
    699f352f
posixmodule.c 115 KB