Blame src/win32/reparse.h

Packit ae9e2a
/*
Packit ae9e2a
* Copyright (C) the libgit2 contributors. All rights reserved.
Packit ae9e2a
*
Packit ae9e2a
* This file is part of libgit2, distributed under the GNU GPL v2 with
Packit ae9e2a
* a Linking Exception. For full terms see the included COPYING file.
Packit ae9e2a
*/
Packit ae9e2a
Packit ae9e2a
#ifndef INCLUDE_git_win32_reparse_h__
Packit ae9e2a
#define INCLUDE_git_win32_reparse_h__
Packit ae9e2a
Packit ae9e2a
/* This structure is defined on MSDN at
Packit ae9e2a
* http://msdn.microsoft.com/en-us/library/windows/hardware/ff552012(v=vs.85).aspx
Packit ae9e2a
*
Packit ae9e2a
* It was formerly included in the Windows 2000 SDK and remains defined in
Packit ae9e2a
* MinGW, so we must define it with a silly name to avoid conflicting.
Packit ae9e2a
*/
Packit ae9e2a
typedef struct _GIT_REPARSE_DATA_BUFFER {
Packit ae9e2a
	ULONG  ReparseTag;
Packit ae9e2a
	USHORT ReparseDataLength;
Packit ae9e2a
	USHORT Reserved;
Packit ae9e2a
	union {
Packit ae9e2a
		struct {
Packit ae9e2a
			USHORT SubstituteNameOffset;
Packit ae9e2a
			USHORT SubstituteNameLength;
Packit ae9e2a
			USHORT PrintNameOffset;
Packit ae9e2a
			USHORT PrintNameLength;
Packit ae9e2a
			ULONG  Flags;
Packit ae9e2a
			WCHAR  PathBuffer[1];
Packit ae9e2a
		} SymbolicLinkReparseBuffer;
Packit ae9e2a
		struct {
Packit ae9e2a
			USHORT SubstituteNameOffset;
Packit ae9e2a
			USHORT SubstituteNameLength;
Packit ae9e2a
			USHORT PrintNameOffset;
Packit ae9e2a
			USHORT PrintNameLength;
Packit ae9e2a
			WCHAR  PathBuffer[1];
Packit ae9e2a
		} MountPointReparseBuffer;
Packit ae9e2a
		struct {
Packit ae9e2a
			UCHAR DataBuffer[1];
Packit ae9e2a
		} GenericReparseBuffer;
Packit ae9e2a
	};
Packit ae9e2a
} GIT_REPARSE_DATA_BUFFER;
Packit ae9e2a
Packit ae9e2a
#define REPARSE_DATA_HEADER_SIZE			8
Packit ae9e2a
#define REPARSE_DATA_MOUNTPOINT_HEADER_SIZE	8
Packit ae9e2a
#define REPARSE_DATA_UNION_SIZE				12
Packit ae9e2a
Packit ae9e2a
/* Missing in MinGW */
Packit ae9e2a
#ifndef FSCTL_GET_REPARSE_POINT
Packit ae9e2a
# define FSCTL_GET_REPARSE_POINT			0x000900a8
Packit ae9e2a
#endif
Packit ae9e2a
Packit ae9e2a
/* Missing in MinGW */
Packit ae9e2a
#ifndef FSCTL_SET_REPARSE_POINT
Packit ae9e2a
# define FSCTL_SET_REPARSE_POINT			0x000900a4
Packit ae9e2a
#endif
Packit ae9e2a
Packit ae9e2a
#endif