summaryrefslogtreecommitdiffstats
path: root/Modules/winreparse.h
diff options
context:
space:
mode:
authorTim Golden <mail@timgolden.me.uk>2014-05-05 18:46:17 (GMT)
committerTim Golden <mail@timgolden.me.uk>2014-05-05 18:46:17 (GMT)
commit0321cf25503e291eb4125411183e124f45793f64 (patch)
tree9e5db0d41a3f65874c8905e1e1506b5032c600b4 /Modules/winreparse.h
parenta4790965f477a77daff6a0c04aabdb2a6a51a239 (diff)
downloadcpython-0321cf25503e291eb4125411183e124f45793f64.zip
cpython-0321cf25503e291eb4125411183e124f45793f64.tar.gz
cpython-0321cf25503e291eb4125411183e124f45793f64.tar.bz2
Issue18314 Allow unlink to remove junctions. Includes support for creating junctions. 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 */