Rebase against a303f9cd101a06b7baf6302a90c8b3f6eb29a03c

This commit is contained in:
Alistair Leslie-Hughes
2018-10-16 09:15:58 +11:00
parent ad4de04511
commit a804fed0f7
8 changed files with 78 additions and 473 deletions

View File

@@ -1,108 +0,0 @@
From b7caf681c5fca6f1f6b1e089fc2ecddc47052820 Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Tue, 15 Nov 2016 12:41:46 +0800
Subject: [PATCH] kernel32/tests: Fix compilation with PSDK.
---
dlls/kernel32/tests/file.c | 23 +++++++++++++----------
1 file changed, 13 insertions(+), 10 deletions(-)
diff --git a/dlls/kernel32/tests/file.c b/dlls/kernel32/tests/file.c
index 19c1c7a..19e7148 100644
--- a/dlls/kernel32/tests/file.c
+++ b/dlls/kernel32/tests/file.c
@@ -38,9 +38,7 @@
#include "winnls.h"
#include "fileapi.h"
-#ifdef WINE_NO_UNICODE_MACROS
#undef DeleteFile /* needed for FILE_DISPOSITION_INFO */
-#endif
static HANDLE (WINAPI *pFindFirstFileExA)(LPCSTR,FINDEX_INFO_LEVELS,LPVOID,FINDEX_SEARCH_OPS,LPVOID,DWORD);
static BOOL (WINAPI *pReplaceFileA)(LPCSTR, LPCSTR, LPCSTR, DWORD, LPVOID, LPVOID);
@@ -61,6 +59,8 @@ static BOOL (WINAPI *pRtlDosPathNameToNtPathName_U)(LPCWSTR, PUNICODE_STRING, PW
static NTSTATUS (WINAPI *pRtlAnsiStringToUnicodeString)(PUNICODE_STRING, PCANSI_STRING, BOOLEAN);
static BOOL (WINAPI *pSetFileInformationByHandle)(HANDLE, FILE_INFO_BY_HANDLE_CLASS, void*, DWORD);
static BOOL (WINAPI *pGetQueuedCompletionStatusEx)(HANDLE, OVERLAPPED_ENTRY*, ULONG, ULONG*, DWORD, BOOL);
+static void (WINAPI *pRtlInitAnsiString)(PANSI_STRING,PCSZ);
+static void (WINAPI *pRtlFreeUnicodeString)(PUNICODE_STRING);
static const char filename[] = "testfile.xxx";
static const char sillytext[] =
@@ -91,6 +91,8 @@ static void InitFunctionPointers(void)
pNtCreateFile = (void *)GetProcAddress(hntdll, "NtCreateFile");
pRtlDosPathNameToNtPathName_U = (void *)GetProcAddress(hntdll, "RtlDosPathNameToNtPathName_U");
pRtlAnsiStringToUnicodeString = (void *)GetProcAddress(hntdll, "RtlAnsiStringToUnicodeString");
+ pRtlInitAnsiString = (void *)GetProcAddress(hntdll, "RtlInitAnsiString");
+ pRtlFreeUnicodeString = (void *)GetProcAddress(hntdll, "RtlFreeUnicodeString");
pFindFirstFileExA=(void*)GetProcAddress(hkernel32, "FindFirstFileExA");
pReplaceFileA=(void*)GetProcAddress(hkernel32, "ReplaceFileA");
@@ -270,7 +272,8 @@ static void get_nt_pathW( const char *name, UNICODE_STRING *nameW )
ANSI_STRING str;
NTSTATUS status;
BOOLEAN ret;
- RtlInitAnsiString( &str, name );
+
+ pRtlInitAnsiString( &str, name );
status = pRtlAnsiStringToUnicodeString( &strW, &str, TRUE );
ok( !status, "RtlAnsiStringToUnicodeString failed with %08x\n", status );
@@ -278,7 +281,7 @@ static void get_nt_pathW( const char *name, UNICODE_STRING *nameW )
ret = pRtlDosPathNameToNtPathName_U( strW.Buffer, nameW, NULL, NULL );
ok( ret, "RtlDosPathNameToNtPathName_U failed\n" );
- RtlFreeUnicodeString( &strW );
+ pRtlFreeUnicodeString( &strW );
}
static void test__lcreat( void )
@@ -354,30 +357,30 @@ static void test__lcreat( void )
attr.SecurityDescriptor = NULL;
attr.SecurityQualityOfService = NULL;
- status = NtCreateFile( &file, GENERIC_READ | GENERIC_WRITE | DELETE, &attr, &io, NULL, 0,
+ status = pNtCreateFile( &file, GENERIC_READ | GENERIC_WRITE | DELETE, &attr, &io, NULL, 0,
FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
FILE_OPEN, FILE_DELETE_ON_CLOSE | FILE_NON_DIRECTORY_FILE, NULL, 0 );
ok( status == STATUS_ACCESS_DENIED, "expected STATUS_ACCESS_DENIED, got %08x\n", status );
ok( GetFileAttributesA( filename ) != INVALID_FILE_ATTRIBUTES, "file was deleted\n" );
- status = NtCreateFile( &file, DELETE, &attr, &io, NULL, 0,
+ status = pNtCreateFile( &file, DELETE, &attr, &io, NULL, 0,
FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
FILE_OPEN, FILE_DELETE_ON_CLOSE | FILE_NON_DIRECTORY_FILE, NULL, 0 );
ok( status == STATUS_CANNOT_DELETE, "expected STATUS_CANNOT_DELETE, got %08x\n", status );
- status = NtCreateFile( &file, DELETE, &attr, &io, NULL, 0,
+ status = pNtCreateFile( &file, DELETE, &attr, &io, NULL, 0,
FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
FILE_OPEN, FILE_DELETE_ON_CLOSE | FILE_DIRECTORY_FILE, NULL, 0 );
ok( status == STATUS_NOT_A_DIRECTORY, "expected STATUS_NOT_A_DIRECTORY, got %08x\n", status );
- status = NtCreateFile( &file, DELETE, &attr, &io, NULL, 0,
+ status = pNtCreateFile( &file, DELETE, &attr, &io, NULL, 0,
FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
FILE_OPEN_IF, FILE_DELETE_ON_CLOSE | FILE_NON_DIRECTORY_FILE, NULL, 0 );
todo_wine
ok( status == STATUS_CANNOT_DELETE, "expected STATUS_CANNOT_DELETE, got %08x\n", status );
if (!status) CloseHandle( file );
- RtlFreeUnicodeString( &filenameW );
+ pRtlFreeUnicodeString( &filenameW );
todo_wine
ok( GetFileAttributesA( filename ) != INVALID_FILE_ATTRIBUTES, "file was deleted\n" );
@@ -4999,7 +5002,7 @@ static void test_SetFileInformationByHandle(void)
{
FILE_ATTRIBUTE_TAG_INFO fileattrinfo = { 0 };
FILE_REMOTE_PROTOCOL_INFO protinfo = { 0 };
- FILE_STANDARD_INFO stdinfo = { };
+ FILE_STANDARD_INFO stdinfo = { {{0}},{{0}},0,FALSE,FALSE };
FILE_COMPRESSION_INFO compressinfo;
FILE_DISPOSITION_INFO dispinfo;
char tempFileName[MAX_PATH];
--
1.9.1

View File

@@ -1,63 +0,0 @@
From 068af8dd9650d9a9820c61361dbfea8c8cf9a925 Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Tue, 15 Nov 2016 12:45:30 +0800
Subject: kernel32/tests: Fix a bunch of access denied errors by using a
dedicated TEMP directory.
---
dlls/kernel32/tests/file.c | 21 ++++++++++++++++++---
1 file changed, 18 insertions(+), 3 deletions(-)
diff --git a/dlls/kernel32/tests/file.c b/dlls/kernel32/tests/file.c
index 3d2bffa..ac29eb8 100644
--- a/dlls/kernel32/tests/file.c
+++ b/dlls/kernel32/tests/file.c
@@ -61,7 +61,7 @@ static BOOL (WINAPI *pSetFileInformationByHandle)(HANDLE, FILE_INFO_BY_HANDLE_CL
static void (WINAPI *pRtlInitAnsiString)(PANSI_STRING,PCSZ);
static void (WINAPI *pRtlFreeUnicodeString)(PUNICODE_STRING);
-static const char filename[] = "testfile.xxx";
+static char filename[MAX_PATH];
static const char sillytext[] =
"en larvig liten text dx \033 gx hej 84 hej 4484 ! \001\033 bla bl\na.. bla bla."
"1234 43 4kljf lf &%%%&&&&&& 34 4 34 3############# 33 3 3 3 # 3## 3"
@@ -455,10 +455,15 @@ static void test__lcreat( void )
if (INVALID_HANDLE_VALUE==find)
ok (0, "file \"%s\" not found\n", filename);
else {
+ const char *name = strrchr(filename, '\\');
+
+ if (name) name++;
+ else name = filename;
+
ret = FindClose(find);
ok ( 0 != ret, "FindClose complains (%d)\n", GetLastError ());
- ok (!strcmp (filename, search_results.cFileName),
- "found unexpected name \"%s\"\n", search_results.cFileName);
+ ok (!strcmp (name, search_results.cFileName),
+ "expected \"%s\", got \"%s\"\n", name, search_results.cFileName);
search_results.dwFileAttributes &= ~FILE_ATTRIBUTE_NOT_CONTENT_INDEXED;
search_results.dwFileAttributes &= ~FILE_ATTRIBUTE_COMPRESSED;
ok (FILE_ATTRIBUTE_ARCHIVE==search_results.dwFileAttributes,
@@ -4719,8 +4724,18 @@ static void test_GetFileAttributesExW(void)
START_TEST(file)
{
+ char temp_path[MAX_PATH];
+ DWORD ret;
+
InitFunctionPointers();
+ ret = GetTempPathA(MAX_PATH, temp_path);
+ ok(ret != 0, "GetTempPath error %u\n", GetLastError());
+ ret = GetTempFileNameA(temp_path, "tmp", 0, filename);
+ ok(ret != 0, "GetTempFileName error %u\n", GetLastError());
+ ret = DeleteFileA(filename);
+ ok(ret != 0, "DeleteFile error %u\n", GetLastError());
+
test__hread( );
test__hwrite( );
test__lclose( );
--
2.9.0

View File

@@ -1,36 +0,0 @@
From e81ccc4ba4bd31af55294ed6f31a119dada088b8 Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Tue, 15 Nov 2016 12:47:52 +0800
Subject: kernel32/tests: Move the MoveFile test where it belongs.
---
dlls/kernel32/tests/file.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/dlls/kernel32/tests/file.c b/dlls/kernel32/tests/file.c
index d109657..8932d53 100644
--- a/dlls/kernel32/tests/file.c
+++ b/dlls/kernel32/tests/file.c
@@ -703,9 +703,6 @@ static void test_CopyFileA(void)
ret = GetTempFileNameA(temp_path, prefix, 0, source);
ok(ret != 0, "GetTempFileNameA error %d\n", GetLastError());
- ret = MoveFileA(source, source);
- todo_wine ok(ret, "MoveFileA: failed, error %d\n", GetLastError());
-
/* copying a file to itself must fail */
retok = CopyFileA(source, source, FALSE);
ok( !retok && (GetLastError() == ERROR_SHARING_VIOLATION || broken(GetLastError() == ERROR_FILE_EXISTS) /* Win 9x */),
@@ -1887,6 +1884,9 @@ static void test_MoveFileA(void)
ret = GetTempFileNameA(tempdir, prefix, 0, dest);
ok(ret != 0, "GetTempFileNameA error %d\n", GetLastError());
+ ret = MoveFileA(source, source);
+ todo_wine ok(ret, "MoveFileA: failed, error %d\n", GetLastError());
+
ret = MoveFileA(source, dest);
ok(!ret && GetLastError() == ERROR_ALREADY_EXISTS,
"MoveFileA: unexpected error %d\n", GetLastError());
--
2.9.0

View File

@@ -1,104 +0,0 @@
From de4b7a3055065faed4cdc9ca253248eed5a3a7bb Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Tue, 15 Nov 2016 13:02:13 +0800
Subject: [PATCH] kernel32: MoveFile(source, source) should succeed.
---
dlls/kernel32/path.c | 15 ++++++++++-----
dlls/kernel32/tests/file.c | 2 +-
dlls/msvcp120/tests/msvcp120.c | 2 +-
programs/cmd/tests/test_builtins.cmd.exp | 4 ++--
4 files changed, 14 insertions(+), 9 deletions(-)
diff --git a/dlls/kernel32/path.c b/dlls/kernel32/path.c
index bde58e9dc4..c7c5cbd3f7 100644
--- a/dlls/kernel32/path.c
+++ b/dlls/kernel32/path.c
@@ -1354,7 +1354,7 @@ BOOL WINAPI MoveFileWithProgressW( LPCWSTR source, LPCWSTR dest,
OBJECT_ATTRIBUTES attr;
IO_STATUS_BLOCK io;
NTSTATUS status;
- HANDLE source_handle = 0, dest_handle;
+ HANDLE source_handle = 0, dest_handle = 0;
ANSI_STRING source_unix, dest_unix;
DWORD options;
@@ -1414,18 +1414,22 @@ BOOL WINAPI MoveFileWithProgressW( LPCWSTR source, LPCWSTR dest,
status = NtOpenFile( &dest_handle, GENERIC_READ | GENERIC_WRITE | SYNCHRONIZE, &attr, &io, 0, options );
if (status == STATUS_SUCCESS) /* destination exists */
{
- NtClose( dest_handle );
if (!(flag & MOVEFILE_REPLACE_EXISTING))
{
- SetLastError( ERROR_ALREADY_EXISTS );
- RtlFreeUnicodeString( &nt_name );
- goto error;
+ if (!is_same_file( source_handle, dest_handle ))
+ {
+ SetLastError( ERROR_ALREADY_EXISTS );
+ RtlFreeUnicodeString( &nt_name );
+ goto error;
+ }
}
else if (info.FileAttributes & FILE_ATTRIBUTE_DIRECTORY) /* cannot replace directory */
{
SetLastError( ERROR_ACCESS_DENIED );
goto error;
}
+
+ NtClose( dest_handle );
}
else if (status != STATUS_OBJECT_NAME_NOT_FOUND)
{
@@ -1485,6 +1489,7 @@ BOOL WINAPI MoveFileWithProgressW( LPCWSTR source, LPCWSTR dest,
error:
if (source_handle) NtClose( source_handle );
+ if (dest_handle) NtClose( dest_handle );
RtlFreeAnsiString( &source_unix );
RtlFreeAnsiString( &dest_unix );
return FALSE;
diff --git a/dlls/kernel32/tests/file.c b/dlls/kernel32/tests/file.c
index ef4eebc31c..07b3ffb77b 100644
--- a/dlls/kernel32/tests/file.c
+++ b/dlls/kernel32/tests/file.c
@@ -1886,7 +1886,7 @@ static void test_MoveFileA(void)
ok(ret != 0, "GetTempFileNameA error %d\n", GetLastError());
ret = MoveFileA(source, source);
- todo_wine ok(ret, "MoveFileA: failed, error %d\n", GetLastError());
+ ok(ret, "MoveFileA: failed, error %d\n", GetLastError());
ret = MoveFileA(source, dest);
ok(!ret && GetLastError() == ERROR_ALREADY_EXISTS,
diff --git a/dlls/msvcp120/tests/msvcp120.c b/dlls/msvcp120/tests/msvcp120.c
index d7b82a3aae..5141622d6a 100644
--- a/dlls/msvcp120/tests/msvcp120.c
+++ b/dlls/msvcp120/tests/msvcp120.c
@@ -1524,7 +1524,7 @@ static void test_tr2_sys__Rename(void)
CloseHandle(file);
ret = p_tr2_sys__Rename("tr2_test_dir\\f1", "tr2_test_dir\\f1");
- todo_wine ok(ERROR_SUCCESS == ret, "test_tr2_sys__Rename(): expect: ERROR_SUCCESS, got %d\n", ret);
+ ok(ERROR_SUCCESS == ret, "test_tr2_sys__Rename(): expect: ERROR_SUCCESS, got %d\n", ret);
for(i=0; i<ARRAY_SIZE(tests); i++) {
errno = 0xdeadbeef;
if(tests[i].val == ERROR_SUCCESS) {
diff --git a/programs/cmd/tests/test_builtins.cmd.exp b/programs/cmd/tests/test_builtins.cmd.exp
index ea4157c09d..298c4e9a9e 100644
--- a/programs/cmd/tests/test_builtins.cmd.exp
+++ b/programs/cmd/tests/test_builtins.cmd.exp
@@ -1295,8 +1295,8 @@ file move succeeded
@todo_wine@bar@or_broken@baz
read-only files are moveable
file moved in subdirectory
-@todo_wine@moving a file to itself is a no-op@or_broken@moving a file to itself should be a no-op!
-@todo_wine@ErrorLevel: 0@or_broken@ErrorLevel: 1
+moving a file to itself is a no-op@or_broken@moving a file to itself should be a no-op!
+ErrorLevel: 0@or_broken@ErrorLevel: 1
--- directory move
simple directory move succeeded
moving a directory to itself gives error; errlevel 1
--
2.18.0

View File

@@ -1,74 +0,0 @@
From 8031fda3ffc4d2469524f21198ef0aaf9725562e Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Tue, 15 Nov 2016 13:32:42 +0800
Subject: [PATCH] kernel32: MoveFile should make sure that it has the delete
access to the source file.
---
dlls/kernel32/path.c | 4 ++--
dlls/kernel32/tests/file.c | 20 ++++++++------------
2 files changed, 10 insertions(+), 14 deletions(-)
diff --git a/dlls/kernel32/path.c b/dlls/kernel32/path.c
index c7c5cbd3f7..5388586094 100644
--- a/dlls/kernel32/path.c
+++ b/dlls/kernel32/path.c
@@ -1383,7 +1383,8 @@ BOOL WINAPI MoveFileWithProgressW( LPCWSTR source, LPCWSTR dest,
attr.SecurityDescriptor = NULL;
attr.SecurityQualityOfService = NULL;
- status = NtOpenFile( &source_handle, SYNCHRONIZE, &attr, &io, 0, FILE_SYNCHRONOUS_IO_NONALERT );
+ status = NtOpenFile( &source_handle, DELETE | SYNCHRONIZE, &attr, &io,
+ FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, FILE_SYNCHRONOUS_IO_NONALERT );
if (status == STATUS_SUCCESS)
status = wine_nt_to_unix_file_name( &nt_name, &source_unix, FILE_OPEN, FALSE );
RtlFreeUnicodeString( &nt_name );
@@ -1407,7 +1408,6 @@ BOOL WINAPI MoveFileWithProgressW( LPCWSTR source, LPCWSTR dest,
SetLastError( ERROR_PATH_NOT_FOUND );
goto error;
}
-
options = FILE_NON_DIRECTORY_FILE | FILE_SYNCHRONOUS_IO_NONALERT;
if (flag & MOVEFILE_WRITE_THROUGH)
options |= FILE_WRITE_THROUGH;
diff --git a/dlls/kernel32/tests/file.c b/dlls/kernel32/tests/file.c
index 07b3ffb77b..4729e75728 100644
--- a/dlls/kernel32/tests/file.c
+++ b/dlls/kernel32/tests/file.c
@@ -1906,12 +1906,10 @@ static void test_MoveFileA(void)
ok(hmapfile != NULL, "CreateFileMapping: error %d\n", GetLastError());
ret = MoveFileA(source, dest);
- todo_wine {
- ok(!ret, "MoveFileA: expected failure\n");
- ok(GetLastError() == ERROR_SHARING_VIOLATION ||
- broken(GetLastError() == ERROR_ACCESS_DENIED), /* Win9x and WinMe */
- "MoveFileA: expected ERROR_SHARING_VIOLATION, got %d\n", GetLastError());
- }
+ ok(!ret, "MoveFileA: expected failure\n");
+ ok(GetLastError() == ERROR_SHARING_VIOLATION ||
+ broken(GetLastError() == ERROR_ACCESS_DENIED), /* Win9x and WinMe */
+ "MoveFileA: expected ERROR_SHARING_VIOLATION, got %d\n", GetLastError());
CloseHandle(hmapfile);
CloseHandle(hfile);
@@ -1926,12 +1924,10 @@ static void test_MoveFileA(void)
ok(hmapfile != NULL, "CreateFileMapping: error %d\n", GetLastError());
ret = MoveFileA(source, dest);
- todo_wine {
- ok(!ret, "MoveFileA: expected failure\n");
- ok(GetLastError() == ERROR_SHARING_VIOLATION ||
- broken(GetLastError() == ERROR_ACCESS_DENIED), /* Win9x and WinMe */
- "MoveFileA: expected ERROR_SHARING_VIOLATION, got %d\n", GetLastError());
- }
+ ok(!ret, "MoveFileA: expected failure\n");
+ ok(GetLastError() == ERROR_SHARING_VIOLATION ||
+ broken(GetLastError() == ERROR_ACCESS_DENIED), /* Win9x and WinMe */
+ "MoveFileA: expected ERROR_SHARING_VIOLATION, got %d\n", GetLastError());
CloseHandle(hmapfile);
CloseHandle(hfile);
--
2.18.0