Commit 18aaa568 authored by Martin v. Löwis's avatar Martin v. Löwis

Patch #1576166: Support os.utime for directories on Windows NT+.

parent c9e82f62
...@@ -223,6 +223,13 @@ class StatAttributeTests(unittest.TestCase): ...@@ -223,6 +223,13 @@ class StatAttributeTests(unittest.TestCase):
except TypeError: except TypeError:
pass pass
def test_utime_dir(self):
delta = 1000000
st = os.stat(test_support.TESTFN)
os.utime(test_support.TESTFN, (st.st_atime, st.st_mtime-delta))
st2 = os.stat(test_support.TESTFN)
self.assertEquals(st2.st_mtime, st.st_mtime-delta)
# Restrict test to Win32, since there is no guarantee other # Restrict test to Win32, since there is no guarantee other
# systems support centiseconds # systems support centiseconds
if sys.platform == 'win32': if sys.platform == 'win32':
......
...@@ -137,6 +137,8 @@ Library ...@@ -137,6 +137,8 @@ Library
Extension Modules Extension Modules
----------------- -----------------
- Patch #1576166: Support os.utime for directories on Windows NT+.
- Bug #1548891: The cStringIO.StringIO() constructor now encodes unicode - Bug #1548891: The cStringIO.StringIO() constructor now encodes unicode
arguments with the system default encoding just like the write() arguments with the system default encoding just like the write()
method does, instead of converting it to a raw buffer. method does, instead of converting it to a raw buffer.
......
...@@ -2458,7 +2458,8 @@ posix_utime(PyObject *self, PyObject *args) ...@@ -2458,7 +2458,8 @@ posix_utime(PyObject *self, PyObject *args)
wpath = PyUnicode_AS_UNICODE(obwpath); wpath = PyUnicode_AS_UNICODE(obwpath);
Py_BEGIN_ALLOW_THREADS Py_BEGIN_ALLOW_THREADS
hFile = CreateFileW(wpath, FILE_WRITE_ATTRIBUTES, 0, hFile = CreateFileW(wpath, FILE_WRITE_ATTRIBUTES, 0,
NULL, OPEN_EXISTING, 0, NULL); NULL, OPEN_EXISTING,
FILE_FLAG_BACKUP_SEMANTICS, NULL);
Py_END_ALLOW_THREADS Py_END_ALLOW_THREADS
if (hFile == INVALID_HANDLE_VALUE) if (hFile == INVALID_HANDLE_VALUE)
return win32_error_unicode("utime", wpath); return win32_error_unicode("utime", wpath);
...@@ -2473,7 +2474,8 @@ posix_utime(PyObject *self, PyObject *args) ...@@ -2473,7 +2474,8 @@ posix_utime(PyObject *self, PyObject *args)
return NULL; return NULL;
Py_BEGIN_ALLOW_THREADS Py_BEGIN_ALLOW_THREADS
hFile = CreateFileA(apath, FILE_WRITE_ATTRIBUTES, 0, hFile = CreateFileA(apath, FILE_WRITE_ATTRIBUTES, 0,
NULL, OPEN_EXISTING, 0, NULL); NULL, OPEN_EXISTING,
FILE_FLAG_BACKUP_SEMANTICS, NULL);
Py_END_ALLOW_THREADS Py_END_ALLOW_THREADS
if (hFile == INVALID_HANDLE_VALUE) { if (hFile == INVALID_HANDLE_VALUE) {
win32_error("utime", apath); win32_error("utime", apath);
...@@ -8617,3 +8619,4 @@ INITFUNC(void) ...@@ -8617,3 +8619,4 @@ INITFUNC(void)
} }
#endif #endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment