summaryrefslogtreecommitdiffstats
path: root/Modules/winreparse.h
diff options
context:
space:
mode:
authorTim Golden <mail@timgolden.me.uk>2014-04-27 17:00:10 (GMT)
committerTim Golden <mail@timgolden.me.uk>2014-04-27 17:00:10 (GMT)
commit4675d798bfdef3ad916d1eef6d5a4d0529ccfda7 (patch)
tree628685ce1f8db9455bb95819f876faa7c56bf020 /Modules/winreparse.h
parentdd41f246875494c9acc6ebd4338f8df3ec6c28f0 (diff)
downloadcpython-4675d798bfdef3ad916d1eef6d5a4d0529ccfda7.zip
cpython-4675d798bfdef3ad916d1eef6d5a4d0529ccfda7.tar.gz
cpython-4675d798bfdef3ad916d1eef6d5a4d0529ccfda7.tar.bz2
Issue #18314 os.unlink will now remove junction points on Windows. Patch by Kim Gräsman.
Diffstat (limited to 'Modules/winreparse.h')
-rw-r--r--Modules/winreparse.h53
1 files changed, 53 insertions, 0 deletions
diff --git a/Modules/winreparse.h b/Modules/winreparse.h
new file mode 100644
index 0000000..66f7775
--- /dev/null
+++ b/Modules/winreparse.h
@@ -0,0 +1,53 @@
+#ifndef Py_WINREPARSE_H
+#define Py_WINREPARSE_H
+
+#ifdef MS_WINDOWS
+#include <Windows.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* The following structure was copied from
+ http://msdn.microsoft.com/en-us/library/ff552012.aspx as the required
+ include doesn't seem to be present in the Windows SDK (at least as included
+ with Visual Studio Express). */
+typedef struct _REPARSE_DATA_BUFFER {
+ ULONG ReparseTag;
+ USHORT ReparseDataLength;
+ USHORT Reserved;
+ union {
+ struct {
+ USHORT SubstituteNameOffset;
+ USHORT SubstituteNameLength;
+ USHORT PrintNameOffset;
+ USHORT PrintNameLength;
+ ULONG Flags;
+ WCHAR PathBuffer[1];
+ } SymbolicLinkReparseBuffer;
+
+ struct {
+ USHORT SubstituteNameOffset;
+ USHORT SubstituteNameLength;
+ USHORT PrintNameOffset;
+ USHORT PrintNameLength;
+ WCHAR PathBuffer[1];
+ } MountPointReparseBuffer;
+
+ struct {
+ UCHAR DataBuffer[1];
+ } GenericReparseBuffer;
+ };
+} REPARSE_DATA_BUFFER, *PREPARSE_DATA_BUFFER;
+
+#define REPARSE_DATA_BUFFER_HEADER_SIZE FIELD_OFFSET(REPARSE_DATA_BUFFER,\
+ GenericReparseBuffer)
+#define MAXIMUM_REPARSE_DATA_BUFFER_SIZE ( 16 * 1024 )
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* MS_WINDOWS */
+
+#endif /* !Py_WINREPARSE_H */