summaryrefslogtreecommitdiff
path: root/Modules/_stat.c
diff options
context:
space:
mode:
authorSteve Dower <steve.dower@python.org>2019-08-21 15:27:33 -0700
committerGitHub <noreply@github.com>2019-08-21 15:27:33 -0700
commitdf2d4a6f3d5da2839c4fc11d31511c8e028daf2c (patch)
treee60154de9e835976aed87ab51ac3d5d9fda7f45f /Modules/_stat.c
parentbcc446f525421156fe693139140e7051d000592e (diff)
downloadcpython-git-df2d4a6f3d5da2839c4fc11d31511c8e028daf2c.tar.gz
bpo-37834: Normalise handling of reparse points on Windows (GH-15231)
bpo-37834: Normalise handling of reparse points on Windows * ntpath.realpath() and nt.stat() will traverse all supported reparse points (previously was mixed) * nt.lstat() will let the OS traverse reparse points that are not name surrogates (previously would not traverse any reparse point) * nt.[l]stat() will only set S_IFLNK for symlinks (previous behaviour) * nt.readlink() will read destinations for symlinks and junction points only bpo-1311: os.path.exists('nul') now returns True on Windows * nt.stat('nul').st_mode is now S_IFCHR (previously was an error)
Diffstat (limited to 'Modules/_stat.c')
-rw-r--r--Modules/_stat.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/Modules/_stat.c b/Modules/_stat.c
index f6cb303500..6a3020a00d 100644
--- a/Modules/_stat.c
+++ b/Modules/_stat.c
@@ -589,6 +589,13 @@ PyInit__stat(void)
if (PyModule_AddIntMacro(m, FILE_ATTRIBUTE_SYSTEM)) return NULL;
if (PyModule_AddIntMacro(m, FILE_ATTRIBUTE_TEMPORARY)) return NULL;
if (PyModule_AddIntMacro(m, FILE_ATTRIBUTE_VIRTUAL)) return NULL;
+
+ if (PyModule_AddObject(m, "IO_REPARSE_TAG_SYMLINK",
+ PyLong_FromUnsignedLong(IO_REPARSE_TAG_SYMLINK))) return NULL;
+ if (PyModule_AddObject(m, "IO_REPARSE_TAG_MOUNT_POINT",
+ PyLong_FromUnsignedLong(IO_REPARSE_TAG_MOUNT_POINT))) return NULL;
+ if (PyModule_AddObject(m, "IO_REPARSE_TAG_APPEXECLINK",
+ PyLong_FromUnsignedLong(IO_REPARSE_TAG_APPEXECLINK))) return NULL;
#endif
return m;