stream_path = alloca(sizeof(wchar_t) *
(wcslen(path) + 1 +
wcslen(stream_name) + 1));
- swprintf(stream_path, L"%ls:%ls", path, stream_name);
+ tsprintf(stream_path, L"%ls:%ls", path, stream_name);
}
h = CreateFile(stream_path, FILE_WRITE_DATA, 0, NULL,
}
static int
-win32_extract_encrypted_stream(file_spec_t file,
+win32_extract_encrypted_stream(const wchar_t *path,
struct wim_lookup_table_entry *lte,
struct apply_ctx *ctx)
{
- const tchar *path = file.path;
void *file_ctx;
DWORD err;
int ret;
USHORT compression_format = COMPRESSION_FORMAT_DEFAULT;
DWORD bytes_returned;
- h = CreateFile(path, GENERIC_READ | GENERIC_WRITE, 0, NULL,
- OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS |
- FILE_FLAG_OPEN_REPARSE_POINT,
- NULL);
+ h = win32_open_existing_file(path, GENERIC_READ | GENERIC_WRITE);
if (h == INVALID_HANDLE_VALUE)
goto error;
DWORD bytes_returned;
USHORT compression_format = COMPRESSION_FORMAT_NONE;
- h = CreateFile(path, GENERIC_READ | GENERIC_WRITE, 0, NULL,
- OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS |
- FILE_FLAG_OPEN_REPARSE_POINT,
- NULL);
+ h = win32_open_existing_file(path, GENERIC_READ | GENERIC_WRITE);
if (h == INVALID_HANDLE_VALUE)
goto error;
DWORD err;
DWORD bytes_returned;
- h = CreateFile(path, GENERIC_WRITE, 0, NULL,
- OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS |
- FILE_FLAG_OPEN_REPARSE_POINT,
- NULL);
+ h = win32_open_existing_file(path, GENERIC_WRITE);
if (h == INVALID_HANDLE_VALUE)
goto error;
HANDLE h;
DWORD err;
- h = CreateFile(path, GENERIC_WRITE | DELETE, 0, NULL,
- OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS |
- FILE_FLAG_OPEN_REPARSE_POINT,
- NULL);
+ h = win32_open_existing_file(path, GENERIC_WRITE | DELETE);
if (h == INVALID_HANDLE_VALUE)
goto error;
h = INVALID_HANDLE_VALUE;
#ifdef WITH_NTDLL
- h = CreateFile(path, MAXIMUM_ALLOWED, 0, NULL, OPEN_EXISTING,
- FILE_FLAG_BACKUP_SEMANTICS |
- FILE_FLAG_OPEN_REPARSE_POINT,
- NULL);
+ h = win32_open_existing_file(path, MAXIMUM_ALLOWED);
if (h == INVALID_HANDLE_VALUE) {
ERROR_WITH_ERRNO("Can't open %ls (%u)", path, GetLastError());
goto error;
FILETIME lastWriteTime = {.dwLowDateTime = last_write_time & 0xffffffff,
.dwHighDateTime = last_write_time >> 32};
- h = CreateFile(path, FILE_WRITE_ATTRIBUTES, 0, NULL,
- OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS |
- FILE_FLAG_OPEN_REPARSE_POINT,
- NULL);
+ h = win32_open_existing_file(path, FILE_WRITE_ATTRIBUTES);
if (h == INVALID_HANDLE_VALUE)
goto error;
.realpath_works_on_nonexisting_files = 1,
.root_directory_is_special = 1,
.requires_final_set_attributes_pass = 1,
+ .extract_encrypted_stream_creates_file = 1,
+ .requires_short_name_reordering = 1, /* TODO: check if this is really needed */
};
#endif /* __WIN32__ */