mirror of
https://github.com/curl/curl.git
synced 2026-04-14 22:41:40 +03:00
windows: fix CreateFile() calls to support long filenames
It makes them work in Schannel's CA bundle loader, and curl tool's set/get file timestamp operations (e.g. in `-R`/`--remote-time`). Also to match file open operations, that already support long filenames. E.g. when using `--remote-time`, fixing: ``` Warning: Failed to set filetime 1741363917 on outfile: CreateFile failed: Warning: GetLastError 0x00000003 ``` The special long filename logic is necessary to support Windows releases prior to Windows 10 v1607. With the latter, it's possible to opt-in to this behavior via a manifest setting. Note that Windows itself also needs to opt-in to support this. Finally note that curl itself needs passing `--globoff` to let long filenames through, pending #20044 and #20046. Refs: https://learn.microsoft.com/windows/win32/api/fileapi/nf-fileapi-createfilea https://learn.microsoft.com/windows/win32/fileio/maximum-file-path-limitation Ref: #8361 Inspired by: #19286 Inspired-by: Mathesh V Closes #19286 Closes #20040
This commit is contained in:
parent
a468e605eb
commit
969351bb1e
6 changed files with 75 additions and 30 deletions
|
|
@ -35,6 +35,15 @@
|
|||
int curlx_fseek(void *stream, curl_off_t offset, int whence);
|
||||
|
||||
#ifdef _WIN32
|
||||
#ifndef CURL_WINDOWS_UWP
|
||||
HANDLE curlx_CreateFile(const char *filename,
|
||||
DWORD dwDesiredAccess,
|
||||
DWORD dwShareMode,
|
||||
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
|
||||
DWORD dwCreationDisposition,
|
||||
DWORD dwFlagsAndAttributes,
|
||||
HANDLE hTemplateFile);
|
||||
#endif /* !CURL_WINDOWS_UWP */
|
||||
FILE *curlx_win32_fopen(const char *filename, const char *mode);
|
||||
FILE *curlx_win32_freopen(const char *filename, const char *mode, FILE *fh);
|
||||
int curlx_win32_stat(const char *path, struct_stat *buffer);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue