winehq.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2025
February
January
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
January
2003
December
November
October
September
August
July
June
May
April
March
February
January
2002
December
November
October
September
August
July
June
May
April
March
February
January
2001
December
November
October
September
August
July
June
May
April
March
February
List overview
wine-commits
March 2021
----- 2025 -----
February 2025
January 2025
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
January 2004
----- 2003 -----
December 2003
November 2003
October 2003
September 2003
August 2003
July 2003
June 2003
May 2003
April 2003
March 2003
February 2003
January 2003
----- 2002 -----
December 2002
November 2002
October 2002
September 2002
August 2002
July 2002
June 2002
May 2002
April 2002
March 2002
February 2002
January 2002
----- 2001 -----
December 2001
November 2001
October 2001
September 2001
August 2001
July 2001
June 2001
May 2001
April 2001
March 2001
February 2001
wine-commits@winehq.org
2 participants
1163 discussions
Start a n
N
ew thread
Zebediah Figura : server: Use default_fd_signaled() for sockets.
by Alexandre Julliard
18 Mar '21
18 Mar '21
Module: wine Branch: master Commit: 731339cd60c255fd5890063b144ad7c00661f5a0 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=731339cd60c255fd5890063b…
Author: Zebediah Figura <z.figura12(a)gmail.com> Date: Thu Mar 18 00:41:25 2021 -0500 server: Use default_fd_signaled() for sockets. Signed-off-by: Zebediah Figura <z.figura12(a)gmail.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- server/sock.c | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/server/sock.c b/server/sock.c index 8ab7d5b7236..775ec6edf32 100644 --- a/server/sock.c +++ b/server/sock.c @@ -163,7 +163,6 @@ struct sock }; static void sock_dump( struct object *obj, int verbose ); -static int sock_signaled( struct object *obj, struct wait_queue_entry *entry ); static struct fd *sock_get_fd( struct object *obj ); static int sock_close_handle( struct object *obj, struct process *process, obj_handle_t handle ); static void sock_destroy( struct object *obj ); @@ -189,7 +188,7 @@ static const struct object_ops sock_ops = sock_dump, /* dump */ add_queue, /* add_queue */ remove_queue, /* remove_queue */ - sock_signaled, /* signaled */ + default_fd_signaled, /* signaled */ no_satisfied, /* satisfied */ no_signal, /* signal */ sock_get_fd, /* get_fd */ @@ -773,10 +772,6 @@ static void sock_poll_event( struct fd *fd, int event ) event = sock_dispatch_asyncs( sock, event, error ); sock_dispatch_events( sock, prevstate, event, error ); - /* if anyone is stupid enough to wait on the socket object itself, - * maybe we should wake them up too, just in case? */ - wake_up( &sock->obj, 0 ); - sock_reselect( sock ); } @@ -789,14 +784,6 @@ static void sock_dump( struct object *obj, int verbose ) sock->mask, sock->pmask, sock->hmask ); } -static int sock_signaled( struct object *obj, struct wait_queue_entry *entry ) -{ - struct sock *sock = (struct sock *)obj; - assert( obj->ops == &sock_ops ); - - return check_fd_events( sock->fd, sock_get_poll_events( sock->fd ) ) != 0; -} - static int sock_get_poll_events( struct fd *fd ) { struct sock *sock = get_fd_user( fd );
1
0
0
0
Zebediah Figura : server: Make pulse_event() static.
by Alexandre Julliard
18 Mar '21
18 Mar '21
Module: wine Branch: master Commit: fe9e2f070b475774211ac955c3b5881d0ef1d067 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=fe9e2f070b475774211ac955…
Author: Zebediah Figura <z.figura12(a)gmail.com> Date: Thu Mar 18 00:41:24 2021 -0500 server: Make pulse_event() static. Signed-off-by: Zebediah Figura <z.figura12(a)gmail.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- server/event.c | 2 +- server/object.h | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/server/event.c b/server/event.c index c45c093e9d3..ccdd465dd5b 100644 --- a/server/event.c +++ b/server/event.c @@ -160,7 +160,7 @@ struct event *get_event_obj( struct process *process, obj_handle_t handle, unsig return (struct event *)get_handle_obj( process, handle, access, &event_ops ); } -void pulse_event( struct event *event ) +static void pulse_event( struct event *event ) { event->signaled = 1; /* wake up all waiters if manual reset, a single one otherwise */ diff --git a/server/object.h b/server/object.h index 5b2c309f0b2..1aef43018b2 100644 --- a/server/object.h +++ b/server/object.h @@ -215,7 +215,6 @@ extern struct keyed_event *create_keyed_event( struct object *root, const struct unsigned int attr, const struct security_descriptor *sd ); extern struct event *get_event_obj( struct process *process, obj_handle_t handle, unsigned int access ); extern struct keyed_event *get_keyed_event_obj( struct process *process, obj_handle_t handle, unsigned int access ); -extern void pulse_event( struct event *event ); extern void set_event( struct event *event ); extern void reset_event( struct event *event );
1
0
0
0
Zebediah Figura : server: Do not allow selecting on the ifchange object.
by Alexandre Julliard
18 Mar '21
18 Mar '21
Module: wine Branch: master Commit: 340cc46287d7861ce6cae19401752e65f4089ae9 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=340cc46287d7861ce6cae194…
Author: Zebediah Figura <z.figura12(a)gmail.com> Date: Thu Mar 18 00:41:23 2021 -0500 server: Do not allow selecting on the ifchange object. We never pass a handle to this object to the client anyway. Signed-off-by: Zebediah Figura <z.figura12(a)gmail.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- server/sock.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/sock.c b/server/sock.c index 3aed5494612..8ab7d5b7236 100644 --- a/server/sock.c +++ b/server/sock.c @@ -1536,7 +1536,7 @@ static const struct object_ops ifchange_ops = sizeof(struct ifchange), /* size */ &no_type, /* type */ ifchange_dump, /* dump */ - add_queue, /* add_queue */ + no_add_queue, /* add_queue */ NULL, /* remove_queue */ NULL, /* signaled */ no_satisfied, /* satisfied */
1
0
0
0
Alistair Leslie-Hughes : msado15: Clear interface point after release.
by Alexandre Julliard
18 Mar '21
18 Mar '21
Module: wine Branch: master Commit: 83b558c5f320bfd952c9af49d8a3e326629c2979 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=83b558c5f320bfd952c9af49…
Author: Alistair Leslie-Hughes <leslie_alistair(a)hotmail.com> Date: Thu Mar 18 16:29:42 2021 +1100 msado15: Clear interface point after release. Since we clear the recordset pointer, we need to reassign it when retreiving Fields. Signed-off-by: Alistair Leslie-Hughes <leslie_alistair(a)hotmail.com> Signed-off-by: Hans Leidekker <hans(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/msado15/recordset.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dlls/msado15/recordset.c b/dlls/msado15/recordset.c index b690e243189..a86936eb037 100644 --- a/dlls/msado15/recordset.c +++ b/dlls/msado15/recordset.c @@ -488,6 +488,7 @@ static ULONG WINAPI fields_Release( Fields *iface ) if (!refs) { if (fields->recordset) _Recordset_Release( &fields->recordset->Recordset_iface ); + fields->recordset = NULL; WARN( "not destroying %p\n", fields ); return InterlockedIncrement( &fields->refs ); } @@ -864,7 +865,6 @@ static void close_recordset( struct recordset *recordset ) if (!recordset->fields) return; col_count = get_column_count( recordset ); - recordset->fields->recordset = NULL; Fields_Release( &recordset->fields->Fields_iface ); recordset->fields = NULL; @@ -1092,6 +1092,7 @@ static HRESULT WINAPI recordset_get_Fields( _Recordset *iface, Fields **obj ) { /* yes, this adds a reference to the recordset instead of the fields object */ _Recordset_AddRef( &recordset->Recordset_iface ); + recordset->fields->recordset = recordset; *obj = &recordset->fields->Fields_iface; return S_OK; }
1
0
0
0
Alistair Leslie-Hughes : msado15: Improve return when field cannot be found.
by Alexandre Julliard
18 Mar '21
18 Mar '21
Module: wine Branch: master Commit: c93798bd56d03225474eda6bf2f3804b74b63ae8 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=c93798bd56d03225474eda6b…
Author: Alistair Leslie-Hughes <leslie_alistair(a)hotmail.com> Date: Thu Mar 18 16:29:41 2021 +1100 msado15: Improve return when field cannot be found. Signed-off-by: Alistair Leslie-Hughes <leslie_alistair(a)hotmail.com> Signed-off-by: Hans Leidekker <hans(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/msado15/recordset.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dlls/msado15/recordset.c b/dlls/msado15/recordset.c index 0b91358f83d..b690e243189 100644 --- a/dlls/msado15/recordset.c +++ b/dlls/msado15/recordset.c @@ -620,7 +620,7 @@ static HRESULT map_index( struct fields *fields, VARIANT *index, ULONG *ret ) } } - return E_INVALIDARG; + return MAKE_ADO_HRESULT(adErrItemNotFound); } static HRESULT WINAPI fields_get_Item( Fields *iface, VARIANT index, Field **obj )
1
0
0
0
Alexandre Julliard : wine.inf: Put wineps.drv in the printer driver directory.
by Alexandre Julliard
18 Mar '21
18 Mar '21
Module: wine Branch: master Commit: 47d8d5659f8970ddcf4a35ea18ac33f4944472a5 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=47d8d5659f8970ddcf4a35ea…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Thu Mar 18 11:41:34 2021 +0100 wine.inf: Put wineps.drv in the printer driver directory. Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/winspool.drv/tests/info.c | 2 -- loader/wine.inf.in | 3 +++ 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/dlls/winspool.drv/tests/info.c b/dlls/winspool.drv/tests/info.c index 56d73798538..b95180ee558 100644 --- a/dlls/winspool.drv/tests/info.c +++ b/dlls/winspool.drv/tests/info.c @@ -2609,7 +2609,6 @@ static void test_GetPrinterDriver(void) hf = CreateFileA(di_2->pDriverPath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if(hf != INVALID_HANDLE_VALUE) CloseHandle(hf); - todo_wine ok(hf != INVALID_HANDLE_VALUE, "Could not open %s\n", di_2->pDriverPath); hf = CreateFileA(di_2->pDataFile, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); @@ -2620,7 +2619,6 @@ static void test_GetPrinterDriver(void) hf = CreateFileA(di_2->pConfigFile, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if(hf != INVALID_HANDLE_VALUE) CloseHandle(hf); - todo_wine ok(hf != INVALID_HANDLE_VALUE, "Could not open %s\n", di_2->pConfigFile); /* XP allocates memory for both ANSI and unicode names */ diff --git a/loader/wine.inf.in b/loader/wine.inf.in index 2b7bc358829..aaed4cf6824 100644 --- a/loader/wine.inf.in +++ b/loader/wine.inf.in @@ -2609,6 +2609,7 @@ HKLM,%CurrentVersion%\Telephony\Country List\998,"SameAreaRule",,"G" 11,,dosx.exe 11,,dsound.vxd 11,,winhlp32.exe +52,win40\0,wineps16.drv,wineps16.drv16 ; 64bit-only fake dlls [FakeDllsWin64] @@ -2652,6 +2653,7 @@ HKLM,%CurrentVersion%\Telephony\Country List\998,"SameAreaRule",,"G" 16427,System\OLE DB,oledb32.dll 16427,System\OLE DB,msdaps.dll 16427,System\ADO,msado15.dll +66000,3,wineps.drv 12,,*.sys,- 11,,* @@ -2707,6 +2709,7 @@ HKLM,%CurrentVersion%\Telephony\Country List\998,"SameAreaRule",,"G" 16427,System\OLE DB,oledb32.dll 16427,System\OLE DB,msdaps.dll 16427,System\ADO,msado15.dll +66000,3,wineps.drv 12,,*.sys,- 11,,*
1
0
0
0
Alexandre Julliard : wine.inf: Specify the full module path for the source of copied files.
by Alexandre Julliard
18 Mar '21
18 Mar '21
Module: wine Branch: master Commit: 8cd5c1bc37cb617a6e88698e289516cee8d2449f URL:
https://source.winehq.org/git/wine.git/?a=commit;h=8cd5c1bc37cb617a6e88698e…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Thu Mar 18 11:41:13 2021 +0100 wine.inf: Specify the full module path for the source of copied files. Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- loader/wine.inf.in | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/loader/wine.inf.in b/loader/wine.inf.in index 3abcc41ffa1..2b7bc358829 100644 --- a/loader/wine.inf.in +++ b/loader/wine.inf.in @@ -4038,12 +4038,12 @@ HKLM,Software\Wine\LicenseInformation,"Shell-InBoxGames-SpiderSolitaire-EnableGa HKLM,Software\Wine\LicenseInformation,"Shell-PremiumInBoxGames-Chess-EnableGame",0x10001,0x00000001 [ColorFiles] -srgb color space profile.icm,"@mscms.dll,-1" +srgb color space profile.icm,"@%11%\mscms.dll,-1" [InfFiles] -winebus.inf,"@winebus.sys,-1" -winehid.inf,"@winehid.sys,-1" -wineusb.inf,"@wineusb.sys,-1" +winebus.inf,"@%12%\winebus.sys,-1" +winehid.inf,"@%12%\winehid.sys,-1" +wineusb.inf,"@%12%\wineusb.sys,-1" [NlsFiles] c_037.nls
1
0
0
0
Alexandre Julliard : setupapi: Create fakedlls before copying files.
by Alexandre Julliard
18 Mar '21
18 Mar '21
Module: wine Branch: master Commit: 1244b501455b4dac8f4ec9c65067e06f87729b72 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=1244b501455b4dac8f4ec9c6…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Thu Mar 18 11:40:13 2021 +0100 setupapi: Create fakedlls before copying files. Some files may come from dll resources. Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/setupapi/install.c | 26 +++++++++----------------- 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/dlls/setupapi/install.c b/dlls/setupapi/install.c index 56a9d4f36c3..23f0fbdd4f1 100644 --- a/dlls/setupapi/install.c +++ b/dlls/setupapi/install.c @@ -1085,6 +1085,13 @@ BOOL WINAPI SetupInstallFromInfSectionW( HWND owner, HINF hinf, PCWSTR section, if (!iterate_section_fields( hinf, section, L"WinePreInstall", registry_callback, &info )) return FALSE; } + if (flags & SPINST_REGSVR) + { + if (iterate_section_fields( hinf, section, L"WineFakeDlls", fake_dlls_callback, NULL )) + cleanup_fake_dlls(); + else + return FALSE; + } if (flags & SPINST_FILES) { struct files_callback_info info; @@ -1121,24 +1128,14 @@ BOOL WINAPI SetupInstallFromInfSectionW( HWND owner, HINF hinf, PCWSTR section, } if (flags & SPINST_REGSVR) { - struct register_dll_info info; + struct register_dll_info info = { .unregister = FALSE }; HRESULT hr; - info.unregister = FALSE; - info.modules_size = 0; - info.modules_count = 0; - info.modules = NULL; if (flags & SPINST_REGISTERCALLBACKAWARE) { info.callback = callback; info.callback_context = context; } - else info.callback = NULL; - - if (iterate_section_fields( hinf, section, L"WineFakeDlls", fake_dlls_callback, NULL )) - cleanup_fake_dlls(); - else - return FALSE; hr = CoInitialize(NULL); @@ -1153,19 +1150,14 @@ BOOL WINAPI SetupInstallFromInfSectionW( HWND owner, HINF hinf, PCWSTR section, } if (flags & SPINST_UNREGSVR) { - struct register_dll_info info; + struct register_dll_info info = { .unregister = TRUE }; HRESULT hr; - info.unregister = TRUE; - info.modules_size = 0; - info.modules_count = 0; - info.modules = NULL; if (flags & SPINST_REGISTERCALLBACKAWARE) { info.callback = callback; info.callback_context = context; } - else info.callback = NULL; hr = CoInitialize(NULL);
1
0
0
0
Alexandre Julliard : setupapi: Support arbitrary wildcards in fake dlls creation.
by Alexandre Julliard
18 Mar '21
18 Mar '21
Module: wine Branch: master Commit: 5d3d73f80360014c13d8a44d06a384288c89b19d URL:
https://source.winehq.org/git/wine.git/?a=commit;h=5d3d73f80360014c13d8a44d…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Thu Mar 18 12:48:45 2021 +0100 setupapi: Support arbitrary wildcards in fake dlls creation. Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/setupapi/fakedll.c | 58 +++++++++++++++++++++++++------------------------ loader/wine.inf.in | 28 ++---------------------- 2 files changed, 32 insertions(+), 54 deletions(-) diff --git a/dlls/setupapi/fakedll.c b/dlls/setupapi/fakedll.c index 3196708a7f7..552bec27f31 100644 --- a/dlls/setupapi/fakedll.c +++ b/dlls/setupapi/fakedll.c @@ -466,7 +466,7 @@ done: } /* create the fake dll destination file */ -static HANDLE create_dest_file( const WCHAR *name ) +static HANDLE create_dest_file( const WCHAR *name, BOOL delete ) { /* first check for an existing file */ HANDLE h = CreateFileW( name, GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL ); @@ -478,11 +478,17 @@ static HANDLE create_dest_file( const WCHAR *name ) CloseHandle( h ); return 0; } + if (delete) + { + CloseHandle( h ); + DeleteFileW( name ); + return INVALID_HANDLE_VALUE; + } /* truncate the file */ SetFilePointer( h, 0, NULL, FILE_BEGIN ); SetEndOfFile( h ); } - else + else if (!delete) { if (GetLastError() == ERROR_PATH_NOT_FOUND) create_directories( name ); @@ -872,7 +878,7 @@ static void register_fake_dll( const WCHAR *name, const void *data, size_t size, } /* copy a fake dll file to the dest directory */ -static int install_fake_dll( WCHAR *dest, WCHAR *file, const WCHAR *ext, BOOL expect_builtin, struct list *delay_copy ) +static int install_fake_dll( WCHAR *dest, WCHAR *file, const WCHAR *ext, BOOL delete, BOOL expect_builtin, struct list *delay_copy ) { int ret; SIZE_T size; @@ -897,7 +903,7 @@ static int install_fake_dll( WCHAR *dest, WCHAR *file, const WCHAR *ext, BOOL ex if (ret != -1) { - HANDLE h = create_dest_file( dest ); + HANDLE h = create_dest_file( dest, delete ); if (h && h != INVALID_HANDLE_VALUE) { @@ -935,7 +941,7 @@ static void delay_copy_files( struct list *delay_copy ) continue; } - h = create_dest_file( copy->dest ); + h = create_dest_file( copy->dest, FALSE ); if (h && h != INVALID_HANDLE_VALUE) { ret = (WriteFile( h, data, size, &written, NULL ) && written == size); @@ -948,7 +954,8 @@ static void delay_copy_files( struct list *delay_copy ) } /* find and install all fake dlls in a given lib directory */ -static void install_lib_dir( WCHAR *dest, WCHAR *file, const WCHAR *default_ext, BOOL expect_builtin ) +static void install_lib_dir( WCHAR *dest, WCHAR *file, const WCHAR *wildcard, + const WCHAR *default_ext, BOOL delete, BOOL expect_builtin ) { WCHAR *name; intptr_t handle; @@ -958,7 +965,7 @@ static void install_lib_dir( WCHAR *dest, WCHAR *file, const WCHAR *default_ext, file[1] = '\\'; /* change \??\ to \\?\ */ name = file + lstrlenW(file); *name++ = '\\'; - lstrcpyW( name, L"*" ); + lstrcpyW( name, wildcard ); if ((handle = _wfindfirst( file, &data )) == -1) return; do @@ -973,14 +980,14 @@ static void install_lib_dir( WCHAR *dest, WCHAR *file, const WCHAR *default_ext, lstrcatW( name, data.name ); if (wcschr( data.name, '.' )) /* module possibly already has an extension */ { - if (install_fake_dll( dest, file, NULL, expect_builtin, &delay_copy )) continue; - if (install_fake_dll( dest, file, L".fake", FALSE, &delay_copy )) continue; + if (install_fake_dll( dest, file, NULL, delete, expect_builtin, &delay_copy )) continue; + if (install_fake_dll( dest, file, L".fake", delete, FALSE, &delay_copy )) continue; } lstrcatW( name, default_ext ); - if (install_fake_dll( dest, file, NULL, expect_builtin, &delay_copy )) continue; - if (install_fake_dll( dest, file, L".fake", FALSE, &delay_copy )) continue; + if (install_fake_dll( dest, file, NULL, delete, expect_builtin, &delay_copy )) continue; + if (install_fake_dll( dest, file, L".fake", delete, FALSE, &delay_copy )) continue; } - else install_fake_dll( dest, file, NULL, expect_builtin, &delay_copy ); + else install_fake_dll( dest, file, NULL, delete, expect_builtin, &delay_copy ); } while (!_wfindnext( handle, &data )); _findclose( handle ); @@ -989,12 +996,12 @@ static void install_lib_dir( WCHAR *dest, WCHAR *file, const WCHAR *default_ext, } /* create fake dlls in dirname for all the files we can find */ -static BOOL create_wildcard_dlls( const WCHAR *dirname ) +static BOOL create_wildcard_dlls( const WCHAR *dirname, const WCHAR *wildcard, BOOL delete ) { const WCHAR *build_dir = _wgetenv( L"WINEBUILDDIR" ); const WCHAR *path; unsigned int i, maxlen = 0; - WCHAR *file, *dest; + WCHAR *file, *dest, *p; if (build_dir) maxlen = lstrlenW(build_dir) + ARRAY_SIZE(L"\\programs") + 1; for (i = 0; (path = enum_load_path(i)); i++) maxlen = max( maxlen, lstrlenW(path) ); @@ -1007,24 +1014,24 @@ static BOOL create_wildcard_dlls( const WCHAR *dirname ) return FALSE; } lstrcpyW( dest, dirname ); - dest[lstrlenW(dest) - 1] = 0; /* remove wildcard */ + if ((p = wcsrchr( dest, '\\' ))) p[1] = 0; /* remove wildcard */ if (build_dir) { lstrcpyW( file, build_dir ); lstrcatW( file, L"\\dlls" ); - install_lib_dir( dest, file, L".dll", TRUE ); + install_lib_dir( dest, file, wildcard, L".dll", delete, TRUE ); lstrcpyW( file, build_dir ); lstrcatW( file, L"\\programs" ); - install_lib_dir( dest, file, L".exe", TRUE ); + install_lib_dir( dest, file, wildcard, L".exe", delete, TRUE ); } for (i = 0; (path = enum_load_path( i )); i++) { lstrcpyW( file, path ); - install_lib_dir( dest, file, NULL, TRUE ); + install_lib_dir( dest, file, wildcard, NULL, delete, TRUE ); lstrcpyW( file, path ); lstrcatW( file, L"\\fakedlls" ); - install_lib_dir( dest, file, NULL, FALSE ); + install_lib_dir( dest, file, wildcard, NULL, delete, FALSE ); } HeapFree( GetProcessHeap(), 0, file ); HeapFree( GetProcessHeap(), 0, dest ); @@ -1042,6 +1049,7 @@ BOOL create_fake_dll( const WCHAR *name, const WCHAR *source ) SIZE_T size; const WCHAR *filename; void *buffer; + BOOL delete = !wcscmp( source, L"-" ); /* '-' source means delete the file */ if (!(filename = wcsrchr( name, '\\' ))) filename = name; else filename++; @@ -1052,20 +1060,14 @@ BOOL create_fake_dll( const WCHAR *name, const WCHAR *source ) create_directories( name ); return TRUE; } - if (filename[0] == '*' && !filename[1]) return create_wildcard_dlls( name ); + if (wcspbrk( filename, L"*?" )) return create_wildcard_dlls( name, filename, delete ); add_handled_dll( filename ); - if (!(h = create_dest_file( name ))) return TRUE; /* not a fake dll */ + if (!(h = create_dest_file( name, delete ))) return TRUE; /* not a fake dll */ if (h == INVALID_HANDLE_VALUE) return FALSE; - if (source[0] == '-' && !source[1]) - { - /* '-' source means delete the file */ - TRACE( "deleting %s\n", debugstr_w(name) ); - ret = FALSE; - } - else if ((buffer = load_fake_dll( source, &size ))) + if ((buffer = load_fake_dll( source, &size ))) { DWORD written; diff --git a/loader/wine.inf.in b/loader/wine.inf.in index 4cef944fb88..3abcc41ffa1 100644 --- a/loader/wine.inf.in +++ b/loader/wine.inf.in @@ -2630,19 +2630,6 @@ HKLM,%CurrentVersion%\Telephony\Country List\998,"SameAreaRule",,"G" 10,syswow64,stdole2.tlb 11,,iexplore.exe 11,,winetest.exe,- -12,,fltmgr.sys,- -12,,hidclass.sys,- -12,,http.sys,- -12,,ksecdd.sys,- -12,,mountmgr.sys,- -12,,ndis.sys,- -12,,netio.sys,- -12,,scsiport.sys,- -12,,tdi.sys,- -12,,usbd.sys,- -12,,winebus.sys,- -12,,winehid.sys,- -12,,wineusb.sys,- ; skip .NET fake dlls in Wine Mono package 11,,aspnet_regiis.exe,- 11,,ngen.exe,- @@ -2665,6 +2652,7 @@ HKLM,%CurrentVersion%\Telephony\Country List\998,"SameAreaRule",,"G" 16427,System\OLE DB,oledb32.dll 16427,System\OLE DB,msdaps.dll 16427,System\ADO,msado15.dll +12,,*.sys,- 11,,* [FakeDlls] @@ -2685,19 +2673,6 @@ HKLM,%CurrentVersion%\Telephony\Country List\998,"SameAreaRule",,"G" 11,,iexplore.exe 11,,notepad.exe 11,,winetest.exe,- -12,,fltmgr.sys -12,,hidclass.sys -12,,http.sys -12,,ksecdd.sys -12,,mountmgr.sys -12,,ndis.sys -12,,netio.sys -12,,scsiport.sys -12,,tdi.sys -12,,usbd.sys -12,,winebus.sys -12,,winehid.sys -12,,wineusb.sys ; skip .NET fake dlls in Wine Mono package 11,,aspnet_regiis.exe,- 11,,ngen.exe,- @@ -2732,6 +2707,7 @@ HKLM,%CurrentVersion%\Telephony\Country List\998,"SameAreaRule",,"G" 16427,System\OLE DB,oledb32.dll 16427,System\OLE DB,msdaps.dll 16427,System\ADO,msado15.dll +12,,*.sys,- 11,,* [SystemIni]
1
0
0
0
Alexandre Julliard : setupapi: Add a few printer directory ids.
by Alexandre Julliard
18 Mar '21
18 Mar '21
Module: wine Branch: master Commit: 00b9c975d4bd3a24ae41c99057d7a1a32f329c00 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=00b9c975d4bd3a24ae41c990…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Thu Mar 18 11:24:17 2021 +0100 setupapi: Add a few printer directory ids. Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/setupapi/Makefile.in | 2 +- dlls/setupapi/dirid.c | 63 +++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 54 insertions(+), 11 deletions(-) diff --git a/dlls/setupapi/Makefile.in b/dlls/setupapi/Makefile.in index 70ffd23d245..e89d1f25b56 100644 --- a/dlls/setupapi/Makefile.in +++ b/dlls/setupapi/Makefile.in @@ -2,7 +2,7 @@ EXTRADEFS = -D_SETUPAPI_ MODULE = setupapi.dll IMPORTLIB = setupapi IMPORTS = uuid version advapi32 rpcrt4 kernelbase -DELAYIMPORTS = cabinet shell32 wintrust ole32 winspool.drv comdlg32 user32 +DELAYIMPORTS = cabinet shell32 wintrust ole32 comdlg32 user32 EXTRADLLFLAGS = -mno-cygwin diff --git a/dlls/setupapi/dirid.c b/dlls/setupapi/dirid.c index ec263d9f181..b28e8b9dffd 100644 --- a/dlls/setupapi/dirid.c +++ b/dlls/setupapi/dirid.c @@ -28,7 +28,6 @@ #include "wingdi.h" #include "winuser.h" #include "winnls.h" -#include "winspool.h" #include "setupapi.h" #include "shlobj.h" #include "setupapi_private.h" @@ -46,9 +45,22 @@ struct user_dirid WCHAR *str; }; +#ifdef __i386__ +static const WCHAR printer_env[] = L"w32x86"; +#elif defined __x86_64__ +static const WCHAR printer_env[] = L"x64"; +#elif defined __arm__ +static const WCHAR printer_env[] = L"arm"; +#elif defined __aarch64__ +static const WCHAR printer_env[] = L"arm64"; +#else +#error not defined for this cpu +#endif + static int nb_user_dirids; /* number of user dirids in use */ static int alloc_user_dirids; /* number of allocated user dirids */ static struct user_dirid *user_dirids; +static const WCHAR *printer_dirids[5]; /* 66000..66004 */ static const WCHAR *system_dirids[MAX_SYSTEM_DIRID+1]; static const WCHAR *csidl_dirids[MAX_CSIDL_DIRID-MIN_CSIDL_DIRID+1]; @@ -74,7 +86,6 @@ static const WCHAR *create_system_dirid( int dirid ) { WCHAR buffer[MAX_PATH+32], *str; int len; - DWORD needed; switch(dirid) { @@ -122,11 +133,11 @@ static const WCHAR *create_system_dirid( int dirid ) lstrcatW( buffer, L"\\system" ); break; case DIRID_SPOOL: - GetWindowsDirectoryW( buffer, MAX_PATH ); + GetSystemDirectoryW( buffer, MAX_PATH ); lstrcatW( buffer, L"\\spool" ); break; case DIRID_SPOOLDRIVERS: - GetWindowsDirectoryW( buffer, MAX_PATH ); + GetSystemDirectoryW( buffer, MAX_PATH ); lstrcatW( buffer, L"\\spool\\drivers" ); break; case DIRID_USERPROFILE: @@ -135,11 +146,9 @@ static const WCHAR *create_system_dirid( int dirid ) case DIRID_LOADER: return L"C:\\"; /* FIXME */ case DIRID_PRINTPROCESSOR: - if (!GetPrintProcessorDirectoryW(NULL, NULL, 1, (LPBYTE)buffer, sizeof(buffer), &needed)) - { - WARN( "cannot retrieve print processor directory\n" ); - return get_unknown_dirid(); - } + GetSystemDirectoryW( buffer, MAX_PATH ); + lstrcatW( buffer, L"\\spool\\prtprocs\\" ); + lstrcatW( buffer, printer_env ); break; default: FIXME( "unknown dirid %d\n", dirid ); @@ -150,6 +159,35 @@ static const WCHAR *create_system_dirid( int dirid ) return str; } +static const WCHAR *create_printer_dirid( DWORD dirid ) +{ + WCHAR buffer[MAX_PATH+32], *str; + int len; + + switch (dirid) + { + case 66000: /* printer driver */ + GetSystemDirectoryW( buffer, MAX_PATH ); + lstrcatW( buffer, L"\\spool\\drivers\\" ); + lstrcatW( buffer, printer_env ); + break; + case 66001: /* print processor */ + return create_system_dirid( DIRID_PRINTPROCESSOR ); + case 66002: /* system directory (FIXME: only for native architecture) */ + GetSystemDirectoryW( buffer, MAX_PATH ); + break; + case 66003: /* color directory */ + return create_system_dirid( DIRID_COLOR ); + case 66004: /* asp files directory */ + default: + FIXME( "unsupported dirid %d\n", dirid ); + return get_unknown_dirid(); + } + len = (lstrlenW(buffer) + 1) * sizeof(WCHAR); + if ((str = HeapAlloc( GetProcessHeap(), 0, len ))) memcpy( str, buffer, len ); + return str; +} + static const WCHAR *get_csidl_dir( DWORD csidl ) { WCHAR buffer[MAX_PATH], *str; @@ -172,7 +210,12 @@ const WCHAR *DIRID_get_string( int dirid ) if (dirid == DIRID_ABSOLUTE || dirid == DIRID_ABSOLUTE_16BIT) dirid = DIRID_NULL; - if (dirid >= DIRID_USER) + if (dirid >= 66000 && dirid <= 66004) + { + if (!printer_dirids[dirid - 66000]) printer_dirids[dirid - 66000] = create_printer_dirid( dirid ); + return printer_dirids[dirid - 66000]; + } + else if (dirid >= DIRID_USER) { for (i = 0; i < nb_user_dirids; i++) if (user_dirids[i].id == dirid) return user_dirids[i].str;
1
0
0
0
← Newer
1
...
53
54
55
56
57
58
59
...
117
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
Results per page:
10
25
50
100
200