diff options
Diffstat (limited to 'win32/file.h')
-rw-r--r-- | win32/file.h | 41 |
1 files changed, 23 insertions, 18 deletions
diff --git a/win32/file.h b/win32/file.h index f3ce244f5d..7bf9868e7d 100644 --- a/win32/file.h +++ b/win32/file.h @@ -1,10 +1,12 @@ #ifndef RUBY_WIN32_FILE_H #define RUBY_WIN32_FILE_H -#define MAX_REPARSE_PATH_LEN 4092 +#ifndef IO_REPARSE_TAG_AF_UNIX +# define IO_REPARSE_TAG_AF_UNIX 0x80000023 +#endif enum { - MINIMUM_REPARSE_BUFFER_PATH_LEN = 4 + MINIMUM_REPARSE_BUFFER_PATH_LEN = 100 }; /* License: Ruby's */ typedef struct { @@ -12,21 +14,21 @@ typedef struct { USHORT ReparseDataLength; USHORT Reserved; union { - struct { - USHORT SubstituteNameOffset; - USHORT SubstituteNameLength; - USHORT PrintNameOffset; - USHORT PrintNameLength; - ULONG Flags; - WCHAR PathBuffer[4]; - } SymbolicLinkReparseBuffer; - struct { - USHORT SubstituteNameOffset; - USHORT SubstituteNameLength; - USHORT PrintNameOffset; - USHORT PrintNameLength; - WCHAR PathBuffer[4]; - } MountPointReparseBuffer; + struct { + USHORT SubstituteNameOffset; + USHORT SubstituteNameLength; + USHORT PrintNameOffset; + USHORT PrintNameLength; + ULONG Flags; + WCHAR PathBuffer[MINIMUM_REPARSE_BUFFER_PATH_LEN]; + } SymbolicLinkReparseBuffer; + struct { + USHORT SubstituteNameOffset; + USHORT SubstituteNameLength; + USHORT PrintNameOffset; + USHORT PrintNameLength; + WCHAR PathBuffer[MINIMUM_REPARSE_BUFFER_PATH_LEN]; + } MountPointReparseBuffer; }; } rb_w32_reparse_buffer_t; @@ -35,7 +37,7 @@ typedef struct { sizeof(WCHAR)*((n)-MINIMUM_REPARSE_BUFFER_PATH_LEN)) int rb_w32_read_reparse_point(const WCHAR *path, rb_w32_reparse_buffer_t *rp, - size_t bufsize, WCHAR **result, DWORD *len); + size_t bufsize, WCHAR **result, DWORD *len); int lchown(const char *path, int owner, int group); int rb_w32_ulchown(const char *path, int owner, int group); @@ -45,4 +47,7 @@ int fchmod(int fd, int mode); UINT rb_w32_filecp(void); WCHAR *rb_w32_home_dir(void); +rb_pid_t rb_w32_uspawn_process(int mode, const char *prog, char *const *argv, + int in_fd, int out_fd, int err_fd, DWORD flags); + #endif /* RUBY_WIN32_FILE_H */ |