Rebase against d48ffbdc014954907d3280a3b53eb9b478b10195

This commit is contained in:
Alistair Leslie-Hughes 2019-05-02 08:42:59 +10:00
parent 7d9b7bbdf5
commit 57370fd9ae
13 changed files with 14 additions and 894 deletions

View File

@ -1,38 +0,0 @@
From 5487b4720e24aaa7a10719fc36bc23c851a48a9b Mon Sep 17 00:00:00 2001
From: Qian Hong <qhong@codeweavers.com>
Date: Tue, 28 Apr 2015 22:35:26 +0800
Subject: server: Create primary group using DOMAIN_GROUP_RID_USERS.
---
dlls/advapi32/tests/security.c | 2 +-
server/token.c | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c
index 25b34ba4..573119f 100644
--- a/dlls/advapi32/tests/security.c
+++ b/dlls/advapi32/tests/security.c
@@ -2591,7 +2591,7 @@ static void test_process_security(void)
ok(res, "GetTokenInformation failed with error %d\n", GetLastError());
UserSid = user->User.Sid;
test_sid_str(UserSid);
- todo_wine ok(EqualPrefixSid(UsersSid, UserSid), "TokenPrimaryGroup Sid and TokenUser Sid don't match.\n");
+ ok(EqualPrefixSid(UsersSid, UserSid), "TokenPrimaryGroup Sid and TokenUser Sid don't match.\n");
CloseHandle( token );
if (!res)
diff --git a/server/token.c b/server/token.c
index e57cbc6..be8c53b 100644
--- a/server/token.c
+++ b/server/token.c
@@ -695,6 +695,7 @@ struct token *token_create_admin( void )
{ security_local_sid, SE_GROUP_ENABLED|SE_GROUP_ENABLED_BY_DEFAULT|SE_GROUP_MANDATORY },
{ security_interactive_sid, SE_GROUP_ENABLED|SE_GROUP_ENABLED_BY_DEFAULT|SE_GROUP_MANDATORY },
{ security_authenticated_user_sid, SE_GROUP_ENABLED|SE_GROUP_ENABLED_BY_DEFAULT|SE_GROUP_MANDATORY },
+ { security_domain_users_sid, SE_GROUP_ENABLED|SE_GROUP_ENABLED_BY_DEFAULT|SE_GROUP_MANDATORY|SE_GROUP_OWNER },
{ alias_admins_sid, SE_GROUP_ENABLED|SE_GROUP_ENABLED_BY_DEFAULT|SE_GROUP_MANDATORY|SE_GROUP_OWNER },
{ alias_users_sid, SE_GROUP_ENABLED|SE_GROUP_ENABLED_BY_DEFAULT|SE_GROUP_MANDATORY },
{ logon_sid, SE_GROUP_ENABLED|SE_GROUP_ENABLED_BY_DEFAULT|SE_GROUP_MANDATORY|SE_GROUP_LOGON_ID },
--
2.3.5

View File

@ -1,51 +0,0 @@
From a82c1a7a7342200b8112dc4176ad5adf557787c0 Mon Sep 17 00:00:00 2001
From: Tim Schumacher <timschumi@gmx.de>
Date: Sun, 31 Mar 2019 13:02:27 +0200
Subject: [PATCH 1/2] winejoystick: Add support for wheel axes
Wheel, gas, and brake are replacements for X, Y and Z in wheel-like
joysticks. Remap them internally to send inputs as X, Y, and Z.
Signed-off-by: Tim Schumacher <timschumi@gmx.de>
---
dlls/winejoystick.drv/joystick_linux.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/dlls/winejoystick.drv/joystick_linux.c b/dlls/winejoystick.drv/joystick_linux.c
index 287f4be..7c24040 100644
--- a/dlls/winejoystick.drv/joystick_linux.c
+++ b/dlls/winejoystick.drv/joystick_linux.c
@@ -280,10 +280,13 @@ static const WCHAR ini[] = {'W','i','n','e',' ','J','o','y','s','t','i','c','k',
switch (jstck->axesMap[i]) {
case 0: /* X */
case 1: /* Y */
+ case 8: /* Wheel */
+ case 9: /* Gas */
lpCaps->wNumAxes++;
break;
case 2: /* Z */
case 6: /* Throttle */
+ case 10: /* Brake */
lpCaps->wNumAxes++;
lpCaps->wCaps |= JOYCAPS_HASZ;
break;
@@ -365,13 +368,16 @@ LRESULT driver_joyGetPosEx(DWORD_PTR dwDevID, LPJOYINFOEX lpInfo)
if (ev.type == (JS_EVENT_AXIS)) {
switch (jstck->axesMap[ev.number]) {
case 0: /* X */
+ case 8: /* Wheel */
jstck->x = ev.value;
break;
case 1: /* Y */
+ case 9: /* Gas */
jstck->y = ev.value;
break;
case 2: /* Z */
case 6: /* Throttle */
+ case 10: /* Brake */
jstck->z = ev.value;
break;
case 5: /* Rz */
--
1.9.1

View File

@ -1,37 +0,0 @@
From dddcfcb92fb61c70738378b29db0ede050bcf162 Mon Sep 17 00:00:00 2001
From: Tim Schumacher <timschumi@gmx.de>
Date: Sun, 31 Mar 2019 13:09:43 +0200
Subject: [PATCH 2/2] dinput: Map wheel, gas, and brake axes as well
The axes wheel, gas, and brake are just differently named replacements
for X, Y, and Z when using wheel-like joysticks.
Make those accessible by remapping them to X, Y, and Z internally.
Signed-off-by: Tim Schumacher <timschumi@gmx.de>
---
dlls/dinput/joystick_linux.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/dlls/dinput/joystick_linux.c b/dlls/dinput/joystick_linux.c
index 963e62f..c4efc93 100644
--- a/dlls/dinput/joystick_linux.c
+++ b/dlls/dinput/joystick_linux.c
@@ -239,6 +239,14 @@ static INT find_joystick_devices(void)
joydev.dev_axes_map[j] = j;
found_axes++;
}
+ else if (axes_map[j] <= 10)
+ {
+ /* Axes 8 through 10 are Wheel, Gas and Brake,
+ * remap to 0, 1 and 2
+ */
+ joydev.dev_axes_map[j] = axes_map[j] - 8;
+ found_axes++;
+ }
else if (axes_map[j] == 16 ||
axes_map[j] == 17)
{
--
1.9.1

View File

@ -1 +0,0 @@
Fixes: [46989] dinput: Wheel (Wheel, Gas, Brake) axes inputs aren't recognized

View File

@ -1,43 +0,0 @@
From: Louis Lenders <xerox.xerox2000x@gmail.com>
Subject: [PATCH 1/2] dwmapi: return DWM_E_COMPOSITIONDISABLED instead of E_NOTIMPL in DwmGetTransportAttributes
Message-Id: <20181205121826.2124-1-xerox.xerox2000x@gmail.com>
Date: Wed, 5 Dec 2018 13:18:25 +0100
This versioh is with tests;
Signed-off-by: Louis Lenders <xerox.xerox2000x@gmail.com>
---
dlls/dwmapi/dwmapi_main.c | 2 +-
include/winerror.h | 2 ++
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/dlls/dwmapi/dwmapi_main.c b/dlls/dwmapi/dwmapi_main.c
index c1ee067122..eb06d15507 100644
--- a/dlls/dwmapi/dwmapi_main.c
+++ b/dlls/dwmapi/dwmapi_main.c
@@ -146,7 +146,7 @@ HRESULT WINAPI DwmGetTransportAttributes(BOOL *pfIsRemoting, BOOL *pfIsConnected
{
FIXME("(%p, %p, %p) stub\n", pfIsRemoting, pfIsConnected, pDwGeneration);
- return E_NOTIMPL;
+ return DWM_E_COMPOSITIONDISABLED;
}
/**********************************************************************
diff --git a/include/winerror.h b/include/winerror.h
index d78c91e84e..a97b405c34 100644
--- a/include/winerror.h
+++ b/include/winerror.h
@@ -3090,6 +3090,8 @@ static inline HRESULT HRESULT_FROM_WIN32(unsigned int x)
#define WININET_E_LOGIN_FAILURE_DISPLAY_ENTITY_BODY _HRESULT_TYPEDEF_(0x80072f8e)
#define WININET_E_DECODING_FAILED _HRESULT_TYPEDEF_(0x80072f8f)
+#define DWM_E_COMPOSITIONDISABLED _HRESULT_TYPEDEF_(0x80263001)
+
#define D3D11_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS _HRESULT_TYPEDEF_(0x887c0001)
#define D3D11_ERROR_FILE_NOT_FOUND _HRESULT_TYPEDEF_(0x887c0002)
#define D3D11_ERROR_TOO_MANY_UNIQUE_VIEW_OBJECTS _HRESULT_TYPEDEF_(0x887c0003)
--
2.17.1

View File

@ -1,247 +0,0 @@
From 43b9548b90ae22fd1b3247e5bca51795e33c9970 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sun, 22 Feb 2015 01:10:21 +0100
Subject: [PATCH] include: Add dxva.h header file.
---
include/Makefile.in | 1 +
include/dxva.h | 215 ++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 216 insertions(+)
create mode 100644 include/dxva.h
diff --git a/include/Makefile.in b/include/Makefile.in
index f1bcba3..563d10c 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -245,6 +245,7 @@ SOURCES = \
dxgicommon.idl \
dxgiformat.idl \
dxgitype.idl \
+ dxva.h \
dxva2api.idl \
dyngraph.idl \
endpointvolume.idl \
diff --git a/include/dxva.h b/include/dxva.h
new file mode 100644
index 0000000..e311488
--- /dev/null
+++ b/include/dxva.h
@@ -0,0 +1,215 @@
+/*
+ * Copyright 2015 Michael Müller for Pipelight
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_DXVA_H
+#define __WINE_DXVA_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define DXVA_USUAL_BLOCK_WIDTH 8
+#define DXVA_USUAL_BLOCK_HEIGHT 8
+#define DXVA_USUAL_BLOCK_SIZE (DXVA_USUAL_BLOCK_WIDTH * DXVA_USUAL_BLOCK_HEIGHT)
+
+#include <pshpack1.h>
+
+typedef struct _DXVA_PictureParameters
+{
+ WORD wDecodedPictureIndex;
+ WORD wDeblockedPictureIndex;
+ WORD wForwardRefPictureIndex;
+ WORD wBackwardRefPictureIndex;
+ WORD wPicWidthInMBminus1;
+ WORD wPicHeightInMBminus1;
+ BYTE bMacroblockWidthMinus1;
+ BYTE bMacroblockHeightMinus1;
+ BYTE bBlockWidthMinus1;
+ BYTE bBlockHeightMinus1;
+ BYTE bBPPminus1;
+ BYTE bPicStructure;
+ BYTE bSecondField;
+ BYTE bPicIntra;
+ BYTE bPicBackwardPrediction;
+ BYTE bBidirectionalAveragingMode;
+ BYTE bMVprecisionAndChromaRelation;
+ BYTE bChromaFormat;
+ BYTE bPicScanFixed;
+ BYTE bPicScanMethod;
+ BYTE bPicReadbackRequests;
+ BYTE bRcontrol;
+ BYTE bPicSpatialResid8;
+ BYTE bPicOverflowBlocks;
+ BYTE bPicExtrapolation;
+ BYTE bPicDeblocked;
+ BYTE bPicDeblockConfined;
+ BYTE bPic4MVallowed;
+ BYTE bPicOBMC;
+ BYTE bPicBinPB;
+ BYTE bMV_RPS;
+ BYTE bReservedBits;
+ WORD wBitstreamFcodes;
+ WORD wBitstreamPCEelements;
+ BYTE bBitstreamConcealmentNeed;
+ BYTE bBitstreamConcealmentMethod;
+} DXVA_PictureParameters, *LPDXVA_PictureParameters;
+
+typedef struct _DXVA_SliceInfo
+{
+ WORD wHorizontalPosition;
+ WORD wVerticalPosition;
+ DWORD dwSliceBitsInBuffer;
+ DWORD dwSliceDataLocation;
+ BYTE bStartCodeBitOffset;
+ BYTE bReservedBits;
+ WORD wMBbitOffset;
+ WORD wNumberMBsInSlice;
+ WORD wQuantizerScaleCode;
+ WORD wBadSliceChopping;
+} DXVA_SliceInfo, *LPDXVA_SliceInfo;
+
+typedef struct _DXVA_QmatrixData
+{
+ BYTE bNewQmatrix[4];
+ WORD Qmatrix[4][DXVA_USUAL_BLOCK_WIDTH * DXVA_USUAL_BLOCK_HEIGHT];
+} DXVA_QmatrixData, *LPDXVA_QmatrixData;
+
+typedef struct
+{
+ union
+ {
+ struct
+ {
+ UCHAR Index7Bits : 7;
+ UCHAR AssociatedFlag : 1;
+ };
+ UCHAR bPicEntry;
+ };
+} DXVA_PicEntry_H264;
+
+typedef struct
+{
+ USHORT wFrameWidthInMbsMinus1;
+ USHORT wFrameHeightInMbsMinus1;
+ DXVA_PicEntry_H264 CurrPic;
+ UCHAR num_ref_frames;
+ union
+ {
+ struct
+ {
+ USHORT field_pic_flag : 1;
+ USHORT MbaffFrameFlag : 1;
+ USHORT residual_colour_transform_flag : 1;
+ USHORT sp_for_switch_flag : 1;
+ USHORT chroma_format_idc : 2;
+ USHORT RefPicFlag : 1;
+ USHORT constrained_intra_pred_flag : 1;
+ USHORT weighted_pred_flag : 1;
+ USHORT weighted_bipred_idc : 2;
+ USHORT MbsConsecutiveFlag : 1;
+ USHORT frame_mbs_only_flag : 1;
+ USHORT transform_8x8_mode_flag : 1;
+ USHORT MinLumaBipredSize8x8Flag : 1;
+ USHORT IntraPicFlag : 1;
+ };
+ USHORT wBitFields;
+ };
+ UCHAR bit_depth_luma_minus8;
+ UCHAR bit_depth_chroma_minus8;
+ USHORT Reserved16Bits;
+ UINT StatusReportFeedbackNumber;
+ DXVA_PicEntry_H264 RefFrameList[16];
+ INT CurrFieldOrderCnt[2];
+ INT FieldOrderCntList[16][2];
+ CHAR pic_init_qs_minus26;
+ CHAR chroma_qp_index_offset;
+ CHAR second_chroma_qp_index_offset;
+ UCHAR ContinuationFlag;
+ CHAR pic_init_qp_minus26;
+ UCHAR num_ref_idx_l0_active_minus1;
+ UCHAR num_ref_idx_l1_active_minus1;
+ UCHAR Reserved8BitsA;
+ USHORT FrameNumList[16];
+
+ UINT UsedForReferenceFlags;
+ USHORT NonExistingFrameFlags;
+ USHORT frame_num;
+ UCHAR log2_max_frame_num_minus4;
+ UCHAR pic_order_cnt_type;
+ UCHAR log2_max_pic_order_cnt_lsb_minus4;
+ UCHAR delta_pic_order_always_zero_flag;
+ UCHAR direct_8x8_inference_flag;
+ UCHAR entropy_coding_mode_flag;
+ UCHAR pic_order_present_flag;
+ UCHAR num_slice_groups_minus1;
+ UCHAR slice_group_map_type;
+ UCHAR deblocking_filter_control_present_flag;
+ UCHAR redundant_pic_cnt_present_flag;
+ UCHAR Reserved8BitsB;
+ USHORT slice_group_change_rate_minus1;
+ UCHAR SliceGroupMap[810];
+} DXVA_PicParams_H264;
+
+typedef struct
+{
+ UCHAR bScalingLists4x4[6][16];
+ UCHAR bScalingLists8x8[2][64];
+} DXVA_Qmatrix_H264;
+
+typedef struct
+{
+ UINT BSNALunitDataLocation;
+ UINT SliceBytesInBuffer;
+ USHORT wBadSliceChopping;
+ USHORT first_mb_in_slice;
+ USHORT NumMbsForSlice;
+ USHORT BitOffsetToSliceData;
+ UCHAR slice_type;
+ UCHAR luma_log2_weight_denom;
+ UCHAR chroma_log2_weight_denom;
+
+ UCHAR num_ref_idx_l0_active_minus1;
+ UCHAR num_ref_idx_l1_active_minus1;
+ CHAR slice_alpha_c0_offset_div2;
+ CHAR slice_beta_offset_div2;
+ UCHAR Reserved8Bits;
+ DXVA_PicEntry_H264 RefPicList[2][32];
+ SHORT Weights[2][32][3][2];
+ CHAR slice_qs_delta;
+ CHAR slice_qp_delta;
+ UCHAR redundant_pic_cnt;
+ UCHAR direct_spatial_mv_pred_flag;
+ UCHAR cabac_init_idc;
+ UCHAR disable_deblocking_filter_idc;
+ USHORT slice_id;
+} DXVA_Slice_H264_Long;
+
+typedef struct
+{
+ UINT BSNALunitDataLocation;
+ UINT SliceBytesInBuffer;
+ USHORT wBadSliceChopping;
+} DXVA_Slice_H264_Short;
+
+#include <poppack.h>
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __WINE_DXVA_H */
--
1.9.1

View File

@ -1,51 +0,0 @@
From 593664b03b00092f0db519ce537f62e0c041d28e Mon Sep 17 00:00:00 2001
From: Austin English <austinenglish@gmail.com>
Date: Sun, 4 Nov 2018 04:05:15 -0600
Subject: [PATCH] iphlpapi: Add GetBestRoute2 stub.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=44850
Signed-off-by: Austin English <austinenglish@gmail.com>
---
dlls/iphlpapi/iphlpapi.spec | 2 +-
dlls/iphlpapi/iphlpapi_main.c | 15 +++++++++++++++
2 files changed, 16 insertions(+), 1 deletion(-)
diff --git a/dlls/iphlpapi/iphlpapi.spec b/dlls/iphlpapi/iphlpapi.spec
index b4f77be..7a447e7 100644
--- a/dlls/iphlpapi/iphlpapi.spec
+++ b/dlls/iphlpapi/iphlpapi.spec
@@ -77,7 +77,7 @@
@ stdcall GetBestInterfaceEx( ptr ptr )
@ stub GetBestInterfaceFromStack
@ stdcall GetBestRoute( long long ptr )
-#@ stub GetBestRoute2
+@ stdcall GetBestRoute2( ptr long ptr ptr long ptr ptr )
@ stub GetBestRouteFromStack
#@ stub GetCurrentThreadCompartmentId
@ stdcall GetExtendedTcpTable( ptr ptr long long long long )
diff --git a/dlls/iphlpapi/iphlpapi_main.c b/dlls/iphlpapi/iphlpapi_main.c
index 5df4cd8..ae8f7b4 100644
--- a/dlls/iphlpapi/iphlpapi_main.c
+++ b/dlls/iphlpapi/iphlpapi_main.c
@@ -3313,3 +3313,18 @@ DWORD WINAPI GetIpInterfaceTable(ADDRESS_FAMILY family, PMIB_IPINTERFACE_TABLE *
FIXME("(%u %p): stub\n", family, table);
return ERROR_NOT_SUPPORTED;
}
+
+/******************************************************************
+ * GetIpInterfaceTable (IPHLPAPI.@)
+ */
+DWORD WINAPI GetBestRoute2(NET_LUID *luid, NET_IFINDEX index,
+ const SOCKADDR_INET *source, const SOCKADDR_INET *destination,
+ ULONG options, PMIB_IPFORWARD_ROW2 bestroute,
+ SOCKADDR_INET *bestaddress)
+{
+ static int once;
+ if (!once++)
+ FIXME("(%p, %d, %p, %p, 0x%08x, %p, %p): stub\n", luid, index, source,
+ destination, options, bestroute, bestaddress);
+ return ERROR_NOT_SUPPORTED;
+}
--
1.9.1

View File

@ -1 +0,0 @@
Fixes: [44850] iphlpapi: Add GetBestRoute2 stub.

View File

@ -1,60 +0,0 @@
From 35606d9b1a51b094f4abac7a880e66c71ecd8cf3 Mon Sep 17 00:00:00 2001
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
Date: Sat, 3 Jan 2015 20:24:07 -0700
Subject: [PATCH] kernel32: Add SearchPath test demonstrating the priority of
the working directory.
---
dlls/kernel32/tests/path.c | 27 +++++++++++++++++++++++++--
1 file changed, 25 insertions(+), 2 deletions(-)
diff --git a/dlls/kernel32/tests/path.c b/dlls/kernel32/tests/path.c
index 0a03225..ff78a39 100644
--- a/dlls/kernel32/tests/path.c
+++ b/dlls/kernel32/tests/path.c
@@ -1820,10 +1820,11 @@ static void test_SearchPathA(void)
static const CHAR testdeprelA[] = "./testdep.dll";
static const CHAR kernel32A[] = "kernel32.dll";
static const CHAR fileA[] = "";
- CHAR pathA[MAX_PATH], buffA[MAX_PATH], path2A[MAX_PATH];
- CHAR *ptrA = NULL;
+ CHAR pathA[MAX_PATH], buffA[MAX_PATH], path2A[MAX_PATH], path3A[MAX_PATH], curdirA[MAX_PATH];
+ CHAR tmpdirA[MAX_PATH], *ptrA = NULL;
ULONG_PTR cookie;
HANDLE handle;
+ BOOL bret;
DWORD ret;
GetWindowsDirectoryA(pathA, ARRAY_SIZE(pathA));
@@ -1915,6 +1916,28 @@ static void test_SearchPathA(void)
ret = pDeactivateActCtx(0, cookie);
ok(ret, "failed to deactivate context, %u\n", GetLastError());
pReleaseActCtx(handle);
+
+ /* test the search path priority of the working directory */
+ GetTempPathA(sizeof(tmpdirA), tmpdirA);
+ ret = GetCurrentDirectoryA(MAX_PATH, curdirA);
+ ok(ret, "failed to obtain working directory.\n");
+ sprintf(pathA, "%s\\%s", tmpdirA, kernel32A);
+ ret = SearchPathA(NULL, kernel32A, NULL, sizeof(path2A)/sizeof(CHAR), path2A, NULL);
+ ok(ret && ret == strlen(path2A), "got %d\n", ret);
+ bret = CopyFileA(path2A, pathA, FALSE);
+ ok(bret != 0, "failed to copy test executable to temp directory, %u\n", GetLastError());
+ sprintf(path3A, "%s%s%s", curdirA, curdirA[strlen(curdirA)-1] != '\\' ? "\\" : "", kernel32A);
+ bret = CopyFileA(path2A, path3A, FALSE);
+ ok(bret != 0, "failed to copy test executable to launch directory, %u\n", GetLastError());
+ bret = SetCurrentDirectoryA(tmpdirA);
+ ok(bret, "failed to change working directory\n");
+ ret = SearchPathA(NULL, kernel32A, ".exe", sizeof(buffA), buffA, NULL);
+ ok(ret && ret == strlen(buffA), "got %d\n", ret);
+ ok(strcmp(buffA, path3A) == 0, "expected %s, got %s\n", path3A, buffA);
+ bret = SetCurrentDirectoryA(curdirA);
+ ok(bret, "failed to reset working directory\n");
+ DeleteFileA(path3A);
+ DeleteFileA(pathA);
}
static void test_SearchPathW(void)
--
1.9.1

View File

@ -52,7 +52,7 @@ usage()
# Get the upstream commit sha
upstream_commit()
{
echo "8039941c52758113955d376bd7b6b6e1e5b5f76c"
echo "d48ffbdc014954907d3280a3b53eb9b478b10195"
}
# Show version information
@ -132,7 +132,6 @@ patch_enable_all ()
enable_dinput_axis_recalc="$1"
enable_dinput_reconnect_joystick="$1"
enable_dinput_remap_joystick="$1"
enable_dinput_wheel_support="$1"
enable_dsound_EAX="$1"
enable_dsound_Fast_Mixer="$1"
enable_dwmapi_DwmGetTransportAttributes="$1"
@ -155,7 +154,6 @@ patch_enable_all ()
enable_imm32_message_on_focus="$1"
enable_include_winsock="$1"
enable_inseng_Implementation="$1"
enable_iphlpapi_GetBestRoute2="$1"
enable_iphlpapi_System_Ping="$1"
enable_kernel32_CopyFileEx="$1"
enable_kernel32_Debugger="$1"
@ -301,7 +299,6 @@ patch_enable_all ()
enable_user32_msgbox_Support_WM_COPY_mesg="$1"
enable_uxtheme_CloseThemeClass="$1"
enable_uxtheme_GTK_Theming="$1"
enable_version_VerFindFileA="$1"
enable_version_VerQueryValue="$1"
enable_widl_SLTG_Typelib_Support="$1"
enable_windowscodecs_GIF_Encoder="$1"
@ -531,9 +528,6 @@ patch_enable ()
dinput-remap-joystick)
enable_dinput_remap_joystick="$2"
;;
dinput-wheel-support)
enable_dinput_wheel_support="$2"
;;
dsound-EAX)
enable_dsound_EAX="$2"
;;
@ -600,9 +594,6 @@ patch_enable ()
inseng-Implementation)
enable_inseng_Implementation="$2"
;;
iphlpapi-GetBestRoute2)
enable_iphlpapi_GetBestRoute2="$2"
;;
iphlpapi-System_Ping)
enable_iphlpapi_System_Ping="$2"
;;
@ -1038,9 +1029,6 @@ patch_enable ()
uxtheme-GTK_Theming)
enable_uxtheme_GTK_Theming="$2"
;;
version-VerFindFileA)
enable_version_VerFindFileA="$2"
;;
version-VerQueryValue)
enable_version_VerQueryValue="$2"
;;
@ -2164,21 +2152,19 @@ fi
# Patchset advapi32-LsaLookupSids
# |
# | Modified files:
# | * dlls/advapi32/lsa.c, dlls/advapi32/security.c, dlls/advapi32/tests/security.c, server/token.c
# | * dlls/advapi32/lsa.c, dlls/advapi32/security.c, dlls/advapi32/tests/security.c
# |
if test "$enable_advapi32_LsaLookupSids" -eq 1; then
patch_apply advapi32-LsaLookupSids/0001-advapi32-Initialize-buffer-length-to-zero-in-LsaLook.patch
patch_apply advapi32-LsaLookupSids/0002-advapi32-Prepend-a-hidden-LSA_TRUST_INFORMATION-in-L.patch
patch_apply advapi32-LsaLookupSids/0003-advapi32-Prepend-a-hidden-LSA_TRUST_INFORMATION-in-L.patch
patch_apply advapi32-LsaLookupSids/0004-advapi32-Fallback-to-Sid-string-when-LookupAccountSi.patch
patch_apply advapi32-LsaLookupSids/0006-server-Create-primary-group-using-DOMAIN_GROUP_RID_U.patch
patch_apply advapi32-LsaLookupSids/0007-advapi32-Fix-name-and-use-of-DOMAIN_GROUP_RID_USERS.patch
(
printf '%s\n' '+ { "Qian Hong", "advapi32: Initialize buffer length to zero in LsaLookupSids to prevent crash.", 2 },';
printf '%s\n' '+ { "Qian Hong", "advapi32: Prepend a hidden LSA_TRUST_INFORMATION in LsaLookupSids to avoid crash when Domains[-1] incorrectly accessed by application.", 2 },';
printf '%s\n' '+ { "Qian Hong", "advapi32: Prepend a hidden LSA_TRUST_INFORMATION in LsaLookupNames2 to avoid crash when Domains[-1] incorrectly accessed by application.", 2 },';
printf '%s\n' '+ { "Qian Hong", "advapi32: Fallback to Sid string when LookupAccountSid fails.", 1 },';
printf '%s\n' '+ { "Qian Hong", "server: Create primary group using DOMAIN_GROUP_RID_USERS.", 1 },';
printf '%s\n' '+ { "Qian Hong", "advapi32: Fix name and use of DOMAIN_GROUP_RID_USERS.", 1 },';
) >> "$patchlist"
fi
@ -3120,23 +3106,6 @@ if test "$enable_dinput_remap_joystick" -eq 1; then
) >> "$patchlist"
fi
# Patchset dinput-wheel-support
# |
# | This patchset fixes the following Wine bugs:
# | * [#46989] dinput: Wheel (Wheel, Gas, Brake) axes inputs aren't recognized
# |
# | Modified files:
# | * dlls/dinput/joystick_linux.c, dlls/winejoystick.drv/joystick_linux.c
# |
if test "$enable_dinput_wheel_support" -eq 1; then
patch_apply dinput-wheel-support/0001-winejoystick-Add-support-for-wheel-axes.patch
patch_apply dinput-wheel-support/0002-dinput-Map-wheel-gas-and-brake-axes-as-well.patch
(
printf '%s\n' '+ { "Tim Schumacher", "winejoystick: Add support for wheel axes.", 1 },';
printf '%s\n' '+ { "Tim Schumacher", "dinput: Map wheel, gas, and brake axes as well.", 1 },';
) >> "$patchlist"
fi
# Patchset dsound-Fast_Mixer
# |
# | This patchset fixes the following Wine bugs:
@ -3215,14 +3184,11 @@ fi
# | Vista/Win7 mode)
# |
# | Modified files:
# | * configure, configure.ac, dlls/dwmapi/dwmapi_main.c, dlls/dwmapi/tests/Makefile.in, dlls/dwmapi/tests/dwmapi.c,
# | include/dwmapi.h, include/winerror.h
# | * configure, configure.ac, dlls/dwmapi/tests/Makefile.in, dlls/dwmapi/tests/dwmapi.c, include/dwmapi.h
# |
if test "$enable_dwmapi_DwmGetTransportAttributes" -eq 1; then
patch_apply dwmapi-DwmGetTransportAttributes/0001-dwmapi-return-DWM_E_COMPOSITIONDISABLED-instead-of-ENOTIMPL-in-DwmGetTransportAttributes.patch
patch_apply dwmapi-DwmGetTransportAttributes/0002-dwmapi-add-initial-tests.patch
(
printf '%s\n' '+ { "Louis Lenders", "dwmapi: Return DWM_E_COMPOSITIONDISABLED instead of E_NOTIMPL in DwmGetTransportAttributes.", 1 },';
printf '%s\n' '+ { "Louis Lenders", "dwampi: Add initial tests.", 1 },';
) >> "$patchlist"
fi
@ -3301,13 +3267,12 @@ fi
# | * configure.ac, dlls/dxva2/Makefile.in, dlls/dxva2/backend.idl, dlls/dxva2/devicemanager.c, dlls/dxva2/dxva2_private.h,
# | dlls/dxva2/genericdecoder.c, dlls/dxva2/main.c, dlls/dxva2/softwareprocessor.c, dlls/dxva2/tests/Makefile.in,
# | dlls/dxva2/tests/dxva2.c, dlls/dxva2/vaapi-h264.c, dlls/dxva2/vaapi-mpeg2.c, dlls/dxva2/vaapi.c,
# | dlls/dxva2/videoservices.c, include/Makefile.in, include/dxva.h, include/dxva2api.idl
# | dlls/dxva2/videoservices.c, include/dxva2api.idl
# |
if test "$enable_dxva2_Video_Decoder" -eq 1; then
patch_apply dxva2-Video_Decoder/0001-dxva2-Implement-semi-stub-for-Direct3DDeviceManager9.patch
patch_apply dxva2-Video_Decoder/0002-dxva2-Implement-stubbed-interfaces-for-IDirectXVideo.patch
patch_apply dxva2-Video_Decoder/0004-dxva2-Implement-stubbed-DirectX-Software-VideoProces.patch
patch_apply dxva2-Video_Decoder/0005-include-Add-dxva.h-header-file.patch
patch_apply dxva2-Video_Decoder/0006-dxva2-tests-Add-tests-for-dxva2-decoder.patch
patch_apply dxva2-Video_Decoder/0007-dxva2-Initial-implementation-of-MPEG2-decoder-using-.patch
patch_apply dxva2-Video_Decoder/0008-dxva2-Implement-h264-decoder.patch
@ -3319,7 +3284,6 @@ if test "$enable_dxva2_Video_Decoder" -eq 1; then
printf '%s\n' '+ { "Sebastian Lackner", "dxva2: Implement semi-stub for Direct3DDeviceManager9 interface.", 1 },';
printf '%s\n' '+ { "Michael Müller", "dxva2: Implement stubbed interfaces for IDirectXVideo{Acceleration,Decoder,Processor}Service.", 1 },';
printf '%s\n' '+ { "Michael Müller", "dxva2: Implement stubbed DirectX Software VideoProcessor interface.", 1 },';
printf '%s\n' '+ { "Michael Müller", "include: Add dxva.h header file.", 1 },';
printf '%s\n' '+ { "Michael Müller", "dxva2/tests: Add tests for dxva2 decoder.", 1 },';
printf '%s\n' '+ { "Michael Müller", "dxva2: Initial implementation of MPEG2 decoder using vaapi backend.", 1 },';
printf '%s\n' '+ { "Michael Müller", "dxva2: Implement h264 decoder.", 1 },';
@ -3795,6 +3759,7 @@ if test "$enable_eventfd_synchronization" -eq 1; then
printf '%s\n' '+ { "Zebediah Figura", "ntdll: Let the server know when we are doing a message wait.", 1 },';
printf '%s\n' '+ { "Zebediah Figura", "ntdll: Avoid server_select() when waiting for critical sections.", 1 },';
printf '%s\n' '+ { "Zebediah Figura", "user32: Remove hooks that time out.", 1 },';
printf '%s\n' '+ { "Zebediah Figura", "server: Don'\''t check for a hung queue when sending low-level hooks.", 1 },';
printf '%s\n' '+ { "Zebediah Figura", "kernel32/tests: Zigzag test.", 1 },';
printf '%s\n' '+ { "Zebediah Figura", "=?UTF-8?q?server:=20Try=20to=20remove=20a=20pre?= =?UTF-8?q?=C3=ABxisting=20shm=20file.?=.", 1 },';
printf '%s\n' '+ { "Zebediah Figura", "ntdll: Implement NtQuerySemaphore().", 1 },';
@ -4052,21 +4017,6 @@ if test "$enable_inseng_Implementation" -eq 1; then
) >> "$patchlist"
fi
# Patchset iphlpapi-GetBestRoute2
# |
# | This patchset fixes the following Wine bugs:
# | * [#44850] iphlpapi: Add GetBestRoute2 stub.
# |
# | Modified files:
# | * dlls/iphlpapi/iphlpapi.spec, dlls/iphlpapi/iphlpapi_main.c
# |
if test "$enable_iphlpapi_GetBestRoute2" -eq 1; then
patch_apply iphlpapi-GetBestRoute2/0001-iphlpapi-Add-GetBestRoute2-stub.patch
(
printf '%s\n' '+ { "Austin English", "iphlpapi: Add GetBestRoute2 stub.", 1 },';
) >> "$patchlist"
fi
# Patchset iphlpapi-System_Ping
# |
# | This patchset fixes the following Wine bugs:
@ -4211,13 +4161,11 @@ fi
# | * [#23934] CreateProcess does not prioritize the working directory over the system search path
# |
# | Modified files:
# | * dlls/kernel32/process.c, dlls/kernel32/tests/path.c
# | * dlls/kernel32/process.c
# |
if test "$enable_kernel32_NeedCurrentDirectoryForExePath" -eq 1; then
patch_apply kernel32-NeedCurrentDirectoryForExePath/0001-kernel32-Add-SearchPath-test-demonstrating-the-prior.patch
patch_apply kernel32-NeedCurrentDirectoryForExePath/0003-kernel32-Consider-the-working-directory-first-when-l.patch
(
printf '%s\n' '+ { "Erich E. Hoover", "kernel32: Add SearchPath test demonstrating the priority of the working directory.", 1 },';
printf '%s\n' '+ { "Erich E. Hoover", "kernel32: Consider the working directory first when launching executables with CreateProcess.", 1 },';
) >> "$patchlist"
fi
@ -6343,18 +6291,6 @@ if test "$enable_uxtheme_GTK_Theming" -eq 1; then
) >> "$patchlist"
fi
# Patchset version-VerFindFileA
# |
# | Modified files:
# | * dlls/version/tests/Makefile.in, dlls/version/tests/install.c, dlls/version/version.c
# |
if test "$enable_version_VerFindFileA" -eq 1; then
patch_apply version-VerFindFileA/0001-version-Correctly-return-VFF_CURNEDEST-in-VerFindFil.patch
(
printf '%s\n' '+ { "Michael Müller", "version: Correctly return VFF_CURNEDEST in VerFindFileA.", 1 },';
) >> "$patchlist"
fi
# Patchset version-VerQueryValue
# |
# | Modified files:

View File

@ -1,286 +0,0 @@
From 1e3065d6354cfd372da28d53162559e82b8d752b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Wed, 2 Mar 2016 01:46:05 +0100
Subject: version: Correctly return VFF_CURNEDEST in VerFindFileA.
---
dlls/version/tests/Makefile.in | 2 +-
dlls/version/tests/install.c | 151 +++++++++++++++++++++++++++++++++++++++--
dlls/version/version.c | 38 +++++++----
3 files changed, 169 insertions(+), 22 deletions(-)
diff --git a/dlls/version/tests/Makefile.in b/dlls/version/tests/Makefile.in
index 3c155c9..a1e24f9 100644
--- a/dlls/version/tests/Makefile.in
+++ b/dlls/version/tests/Makefile.in
@@ -1,5 +1,5 @@
TESTDLL = version.dll
-IMPORTS = version
+IMPORTS = version shell32
C_SRCS = \
info.c \
diff --git a/dlls/version/tests/install.c b/dlls/version/tests/install.c
index 9b84dce..b06125f 100644
--- a/dlls/version/tests/install.c
+++ b/dlls/version/tests/install.c
@@ -24,11 +24,13 @@
#include "winbase.h"
#include "winerror.h"
#include "winver.h"
+#include "shlobj.h"
static void test_find_file(void)
{
DWORD ret;
UINT dwCur, dwOut ;
+ char tmp[MAX_PATH];
char appdir[MAX_PATH];
char curdir[MAX_PATH];
char filename[MAX_PATH];
@@ -115,10 +117,11 @@ static void test_find_file(void)
}
}
}
- if(!GetModuleFileNameA(NULL, filename, MAX_PATH) ||
- !GetSystemDirectoryA(windir, MAX_PATH) ||
- !GetTempPathA(MAX_PATH, appdir))
- trace("GetModuleFileNameA, GetSystemDirectoryA or GetTempPathA failed\n");
+ if(!GetSystemDirectoryA(windir, MAX_PATH) ||
+ !SHGetSpecialFolderPathA(0, appdir, CSIDL_PROGRAM_FILES, FALSE) ||
+ !GetTempPathA(MAX_PATH, tmp) ||
+ !GetTempFileNameA(tmp, "tes", 0, filename))
+ ok(0, "GetSystemDirectoryA, SHGetSpecialFolderPathA, GetTempPathA or GetTempFileNameA failed\n");
else {
char *p = strrchr(filename, '\\');
if(p) {
@@ -150,7 +153,7 @@ static void test_find_file(void)
memset(outBuf, 0, MAX_PATH);
memset(curdir, 0, MAX_PATH);
ret = VerFindFileA(VFFF_ISSHAREDFILE, filename, NULL, appdir, curdir, &dwCur, outBuf, &dwOut);
- todo_wine ok(VFF_CURNEDEST == ret, "Wrong return value got %x expected VFF_CURNEDEST\n", ret);
+ ok(VFF_CURNEDEST == ret, "Wrong return value got %x expected VFF_CURNEDEST\n", ret);
ok(dwOut == 1 + strlen(windir), "Wrong length of buffer for current location: "
"got %d(%s) expected %d\n", dwOut, outBuf, lstrlenA(windir)+1);
@@ -159,9 +162,145 @@ static void test_find_file(void)
memset(outBuf, 0, MAX_PATH);
memset(curdir, 0, MAX_PATH);
ret = VerFindFileA(0, filename, NULL, appdir, curdir, &dwCur, outBuf, &dwOut);
- todo_wine ok(VFF_CURNEDEST == ret, "Wrong return value got %x expected VFF_CURNEDEST\n", ret);
+ ok(VFF_CURNEDEST == ret, "Wrong return value got %x expected VFF_CURNEDEST\n", ret);
ok(dwOut == 1 + strlen(appdir), "Wrong length of buffer for current location: "
"got %d(%s) expected %d\n", dwOut, outBuf, lstrlenA(appdir)+1);
+
+ /* search for filename */
+ dwCur=MAX_PATH;
+ dwOut=MAX_PATH;
+ ret = VerFindFileA(0, filename, NULL, NULL, curdir, &dwCur, outBuf, &dwOut);
+ ok(ret & VFF_CURNEDEST, "Wrong return value got %x expected VFF_CURNEDEST set\n", ret);
+
+ dwCur=MAX_PATH;
+ dwOut=MAX_PATH;
+ ret = VerFindFileA(0, filename, NULL, empty, curdir, &dwCur, outBuf, &dwOut);
+ ok(ret & VFF_CURNEDEST, "Wrong return value got %x expected VFF_CURNEDEST set\n", ret);
+
+ dwCur=MAX_PATH;
+ dwOut=MAX_PATH;
+ ret = VerFindFileA(0, filename, NULL, appdir, curdir, &dwCur, outBuf, &dwOut);
+ ok(ret & VFF_CURNEDEST, "Wrong return value got %x expected VFF_CURNEDEST set\n", ret);
+
+ dwCur=MAX_PATH;
+ dwOut=MAX_PATH;
+ ret = VerFindFileA(VFFF_ISSHAREDFILE, filename, NULL, NULL, curdir, &dwCur, outBuf, &dwOut);
+ ok(ret & VFF_CURNEDEST, "Wrong return value got %x expected VFF_CURNEDEST set\n", ret);
+
+ dwCur=MAX_PATH;
+ dwOut=MAX_PATH;
+ ret = VerFindFileA(VFFF_ISSHAREDFILE, filename, NULL, empty, curdir, &dwCur, outBuf, &dwOut);
+ ok(ret & VFF_CURNEDEST, "Wrong return value got %x expected VFF_CURNEDEST set\n", ret);
+
+ dwCur=MAX_PATH;
+ dwOut=MAX_PATH;
+ ret = VerFindFileA(VFFF_ISSHAREDFILE, filename, NULL, appdir, curdir, &dwCur, outBuf, &dwOut);
+ ok(ret & VFF_CURNEDEST, "Wrong return value got %x expected VFF_CURNEDEST set\n", ret);
+
+ /* search for regedit */
+ dwCur=MAX_PATH;
+ dwOut=MAX_PATH;
+ ret = VerFindFileA(0, "regedit", NULL, NULL, curdir, &dwCur, outBuf, &dwOut);
+ ok(!ret, "Wrong return value got %x expected 0\n", ret);
+
+ dwCur=MAX_PATH;
+ dwOut=MAX_PATH;
+ ret = VerFindFileA(0, "regedit", NULL, empty, curdir, &dwCur, outBuf, &dwOut);
+ ok(!ret, "Wrong return value got %x expected 0\n", ret);
+
+ dwCur=MAX_PATH;
+ dwOut=MAX_PATH;
+ ret = VerFindFileA(0, "regedit", NULL, appdir, curdir, &dwCur, outBuf, &dwOut);
+ ok(ret & VFF_CURNEDEST, "Wrong return value got %x expected VFF_CURNEDEST set\n", ret);
+
+ dwCur=MAX_PATH;
+ dwOut=MAX_PATH;
+ ret = VerFindFileA(VFFF_ISSHAREDFILE, "regedit", NULL, NULL, curdir, &dwCur, outBuf, &dwOut);
+ ok(ret & VFF_CURNEDEST, "Wrong return value got %x expected VFF_CURNEDEST set\n", ret);
+
+ dwCur=MAX_PATH;
+ dwOut=MAX_PATH;
+ ret = VerFindFileA(VFFF_ISSHAREDFILE, "regedit", NULL, empty, curdir, &dwCur, outBuf, &dwOut);
+ ok(ret & VFF_CURNEDEST, "Wrong return value got %x expected VFF_CURNEDEST set\n", ret);
+
+ dwCur=MAX_PATH;
+ dwOut=MAX_PATH;
+ ret = VerFindFileA(VFFF_ISSHAREDFILE, "regedit", NULL, appdir, curdir, &dwCur, outBuf, &dwOut);
+ ok(ret & VFF_CURNEDEST, "Wrong return value got %x expected VFF_CURNEDEST set\n", ret);
+
+ /* search for regedit.exe */
+ dwCur=MAX_PATH;
+ dwOut=MAX_PATH;
+ ret = VerFindFileA(0, "regedit.exe", NULL, NULL, curdir, &dwCur, outBuf, &dwOut);
+ ok(ret & VFF_CURNEDEST, "Wrong return value got %x expected VFF_CURNEDEST set\n", ret);
+
+ dwCur=MAX_PATH;
+ dwOut=MAX_PATH;
+ ret = VerFindFileA(0, "regedit.exe", NULL, empty, curdir, &dwCur, outBuf, &dwOut);
+ ok(ret & VFF_CURNEDEST, "Wrong return value got %x expected VFF_CURNEDEST set\n", ret);
+
+ dwCur=MAX_PATH;
+ dwOut=MAX_PATH;
+ ret = VerFindFileA(0, "regedit.exe", NULL, appdir, curdir, &dwCur, outBuf, &dwOut);
+ ok(ret & VFF_CURNEDEST, "Wrong return value got %x expected VFF_CURNEDEST set\n", ret);
+
+ dwCur=MAX_PATH;
+ dwOut=MAX_PATH;
+ ret = VerFindFileA(VFFF_ISSHAREDFILE, "regedit.exe", NULL, NULL, curdir, &dwCur, outBuf, &dwOut);
+ ok(ret & VFF_CURNEDEST, "Wrong return value got %x expected VFF_CURNEDEST set\n", ret);
+
+ dwCur=MAX_PATH;
+ dwOut=MAX_PATH;
+ ret = VerFindFileA(VFFF_ISSHAREDFILE, "regedit.exe", NULL, empty, curdir, &dwCur, outBuf, &dwOut);
+ ok(ret & VFF_CURNEDEST, "Wrong return value got %x expected VFF_CURNEDEST set\n", ret);
+
+ dwCur=MAX_PATH;
+ dwOut=MAX_PATH;
+ ret = VerFindFileA(VFFF_ISSHAREDFILE, "regedit.exe", NULL, appdir, curdir, &dwCur, outBuf, &dwOut);
+ ok(ret & VFF_CURNEDEST, "Wrong return value got %x expected VFF_CURNEDEST set\n", ret);
+
+ /* nonexistent filename */
+ dwCur=MAX_PATH;
+ dwOut=MAX_PATH;
+ ret = VerFindFileA(0, "doesnotexist.exe", NULL, NULL, curdir, &dwCur, outBuf, &dwOut);
+ ok(!ret, "Wrong return value got %x expected 0\n", ret);
+
+ dwCur=MAX_PATH;
+ dwOut=MAX_PATH;
+ ret = VerFindFileA(0, "doesnotexist.exe", NULL, empty, curdir, &dwCur, outBuf, &dwOut);
+ ok(!ret, "Wrong return value got %x expected 0\n", ret);
+
+ dwCur=MAX_PATH;
+ dwOut=MAX_PATH;
+ ret = VerFindFileA(0, "doesnotexist.exe", NULL, appdir, curdir, &dwCur, outBuf, &dwOut);
+ ok(ret & VFF_CURNEDEST, "Wrong return value got %x expected VFF_CURNEDEST set\n", ret);
+
+ dwCur=MAX_PATH;
+ dwOut=MAX_PATH;
+ ret = VerFindFileA(0, "doesnotexist.exe", NULL, "C:\\random_path_does_not_exist", curdir, &dwCur, outBuf, &dwOut);
+ ok(ret & VFF_CURNEDEST, "Wrong return value got %x expected VFF_CURNEDEST set\n", ret);
+
+ dwCur=MAX_PATH;
+ dwOut=MAX_PATH;
+ ret = VerFindFileA(VFFF_ISSHAREDFILE, "doesnotexist.exe", NULL, NULL, curdir, &dwCur, outBuf, &dwOut);
+ ok(ret & VFF_CURNEDEST, "Wrong return value got %x expected VFF_CURNEDEST set\n", ret);
+
+ dwCur=MAX_PATH;
+ dwOut=MAX_PATH;
+ ret = VerFindFileA(VFFF_ISSHAREDFILE, "doesnotexist.exe", NULL, empty, curdir, &dwCur, outBuf, &dwOut);
+ ok(ret & VFF_CURNEDEST, "Wrong return value got %x expected VFF_CURNEDEST set\n", ret);
+
+ dwCur=MAX_PATH;
+ dwOut=MAX_PATH;
+ ret = VerFindFileA(VFFF_ISSHAREDFILE, "doesnotexist.exe", NULL, appdir, curdir, &dwCur, outBuf, &dwOut);
+ ok(ret & VFF_CURNEDEST, "Wrong return value got %x expected VFF_CURNEDEST set\n", ret);
+
+ dwCur=MAX_PATH;
+ dwOut=MAX_PATH;
+ ret = VerFindFileA(VFFF_ISSHAREDFILE, "doesnotexist.exe", NULL, "C:\\random_path_does_not_exist", curdir, &dwCur, outBuf, &dwOut);
+ ok(ret & VFF_CURNEDEST, "Wrong return value got %x expected VFF_CURNEDEST set\n", ret);
+
+ DeleteFileA(filename);
}
}
diff --git a/dlls/version/version.c b/dlls/version/version.c
index 43f5c18..61040c8 100644
--- a/dlls/version/version.c
+++ b/dlls/version/version.c
@@ -1109,16 +1109,22 @@ static int testFileExistenceA( char const * path, char const * file, BOOL excl )
fileinfo.cBytes = sizeof(OFSTRUCT);
- strcpy(filename, path);
- filenamelen = strlen(filename);
+ if (path)
+ {
+ strcpy(filename, path);
+ filenamelen = strlen(filename);
- /* Add a trailing \ if necessary */
- if(filenamelen) {
- if(filename[filenamelen - 1] != '\\')
- strcat(filename, "\\");
+ /* Add a trailing \ if necessary */
+ if(filenamelen)
+ {
+ if(filename[filenamelen - 1] != '\\')
+ strcat(filename, "\\");
+ }
+ else /* specify the current directory */
+ strcpy(filename, ".\\");
}
- else /* specify the current directory */
- strcpy(filename, ".\\");
+ else
+ filename[0] = 0;
/* Create the full pathname */
strcat(filename, file);
@@ -1208,10 +1214,10 @@ DWORD WINAPI VerFindFileA(
{
if(testFileExistenceA(destDir, lpszFilename, FALSE)) curDir = destDir;
else if(lpszAppDir && testFileExistenceA(lpszAppDir, lpszFilename, FALSE))
- {
curDir = lpszAppDir;
+
+ if(!testFileExistenceA(systemDir, lpszFilename, FALSE))
retval |= VFF_CURNEDEST;
- }
}
}
else /* not a shared file */
@@ -1222,15 +1228,17 @@ DWORD WINAPI VerFindFileA(
GetWindowsDirectoryA( winDir, MAX_PATH );
if(testFileExistenceA(destDir, lpszFilename, FALSE)) curDir = destDir;
else if(testFileExistenceA(winDir, lpszFilename, FALSE))
- {
curDir = winDir;
- retval |= VFF_CURNEDEST;
- }
else if(testFileExistenceA(systemDir, lpszFilename, FALSE))
- {
curDir = systemDir;
- retval |= VFF_CURNEDEST;
+
+ if (lpszAppDir && lpszAppDir[0])
+ {
+ if(!testFileExistenceA(lpszAppDir, lpszFilename, FALSE))
+ retval |= VFF_CURNEDEST;
}
+ else if(testFileExistenceA(NULL, lpszFilename, FALSE))
+ retval |= VFF_CURNEDEST;
}
}
--
2.7.1

View File

@ -1 +0,0 @@
Fixes: Correctly return VFF_CURNEDEST flag in VerFindFileA

View File

@ -1,4 +1,4 @@
From bf9b5ec8a095b59e64452a321f7396bfc6434a0e Mon Sep 17 00:00:00 2001
From 913dada333cd12aae0080bfe3919467fcf709621 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Thu, 8 Jun 2017 23:50:03 +0200
Subject: [PATCH] programs/winedevice: Load some common drivers and fix ldr
@ -10,7 +10,7 @@ Subject: [PATCH] programs/winedevice: Load some common drivers and fix ldr
2 files changed, 78 insertions(+)
diff --git a/dlls/ntoskrnl.exe/tests/driver.c b/dlls/ntoskrnl.exe/tests/driver.c
index 030c955..d528347 100644
index ac31a4d..a4456ae 100644
--- a/dlls/ntoskrnl.exe/tests/driver.c
+++ b/dlls/ntoskrnl.exe/tests/driver.c
@@ -39,6 +39,8 @@ static const WCHAR driver_device[] = {'\\','D','e','v','i','c','e',
@ -22,7 +22,7 @@ index 030c955..d528347 100644
static HANDLE okfile;
static LONG successes;
static LONG failures;
@@ -1172,6 +1174,7 @@ static void test_resource(void)
@@ -1203,6 +1205,7 @@ static void test_resource(void)
ok(status == STATUS_SUCCESS, "got status %#x\n", status);
}
@ -30,8 +30,8 @@ index 030c955..d528347 100644
static void test_lookup_thread(void)
{
NTSTATUS status;
@@ -1187,6 +1190,52 @@ static void test_lookup_thread(void)
"PsLookupThreadByThreadId returned %#x\n", status);
@@ -1246,6 +1249,52 @@ static void WINAPI main_test_task(DEVICE_OBJECT *device, void *context)
IoCompleteRequest(irp, IO_NO_INCREMENT);
}
+static void test_default_modules(void)
@ -80,10 +80,10 @@ index 030c955..d528347 100644
+ ok(dxgmms1, "Failed to find dxgmms1.sys\n");
+}
+
static NTSTATUS main_test(DEVICE_OBJECT *device, IRP *irp, IO_STACK_LOCATION *stack, ULONG_PTR *info)
static NTSTATUS main_test(DEVICE_OBJECT *device, IRP *irp, IO_STACK_LOCATION *stack)
{
ULONG length = stack->Parameters.DeviceIoControl.OutputBufferLength;
@@ -1229,6 +1278,7 @@ static NTSTATUS main_test(DEVICE_OBJECT *device, IRP *irp, IO_STACK_LOCATION *st
@@ -1291,6 +1340,7 @@ static NTSTATUS main_test(DEVICE_OBJECT *device, IRP *irp, IO_STACK_LOCATION *st
test_stack_callout();
test_lookaside_list();
test_ob_reference(test_input->path);
@ -91,7 +91,7 @@ index 030c955..d528347 100644
test_resource();
test_lookup_thread();
@@ -1343,6 +1393,8 @@ NTSTATUS WINAPI DriverEntry(DRIVER_OBJECT *driver, PUNICODE_STRING registry)
@@ -1404,6 +1454,8 @@ NTSTATUS WINAPI DriverEntry(DRIVER_OBJECT *driver, PUNICODE_STRING registry)
DbgPrint("loading driver\n");