Martin v. Löwis wrote: >> So, the question is what we should do?: > > Before this question can be answered, I think we need to fully > understand what precisely is happening in 2.4, and what precisely > is happening in 2.5. >
Seeing this thread drag on was enough to get me to find out what changed. The implementation of "os.stat" has been changed. In 2.4.4, _stati64/_wstati64 were called directly, but in 2.5.1, a new pair of functions were wrote win32_stat/win32_wstat. _stati64/_wstati64 (as others have noted) fallback onto the use of FindFirstFile. win32_stat/win32_wstat use some functions called Py_GetFileAttributesExA/Py_GetFileAttributesExW which ultimately use GetFileAttributesA/GetFileAttributesW. The change to this implementation is r42230 with the Misc/NEWS comment saying: - Use Win32 API to implement os.stat/fstat. As a result, subsecond timestamps are reported, the limit on path name lengths is removed, and stat reports WindowsError now (instead of OSError). As to the specifics of what FindFirstFile* does with the values, I tested this quickly with ctypes on 'nul' (or any of the other special files): cAlternameFileName: cFileName: nul dwFileAttributes: 32 dwReserved0: 0 dwReserved1: 0 ftCreationTime: (dwLowDateTime: 0, dwHighDateTime: 0) ftLastAccessTime: (dwLowDateTime: 0, dwHighDateTime: 0) ftLastWriteTime: (dwLowDateTime: 0, dwHighDateTime: 0) nFileSizeHigh: 0 nFileSizeLow: 0 In order to keep the higher accuracy timestamps for normal files and to maintain the old behavior, my recommendation would be that the existing implementation of win32_stat/win32_wstat be extended to use FindFileFirst if GetFileAttributes* fails. I would be willing to do the legwork for such a patch if everyone agrees this is the appropriate solution. * As an aside, Martin, I find the argument that "hard-wiring is bad" to be against what is actually occurring in the posixmodule. For that matter, the S_IFEXEC flag is hardwired to path in (*.bat, *.cmd, *.exe, *.com) despite the fact that the platform says it is really anything in the list of os.getenv('PATHEXT'), but I suppose that is a bug for another day. -Scott -- Scott Dial [EMAIL PROTECTED] [EMAIL PROTECTED] _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com