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
May 2018
----- 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
716 discussions
Start a n
N
ew thread
Hugh McMaster : regedit: Simplify boolean comparisons in edit.c.
by Alexandre Julliard
21 May '18
21 May '18
Module: wine Branch: master Commit: 20e5b9e82fa9ea32be2cc951e8c506be528c37b9 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=20e5b9e82fa9ea32be2cc951…
Author: Hugh McMaster <hugh.mcmaster(a)outlook.com> Date: Mon May 21 13:34:58 2018 +0000 regedit: Simplify boolean comparisons in edit.c. Signed-off-by: Hugh McMaster <hugh.mcmaster(a)outlook.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- programs/regedit/edit.c | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/programs/regedit/edit.c b/programs/regedit/edit.c index 59221f4..198b8ed 100644 --- a/programs/regedit/edit.c +++ b/programs/regedit/edit.c @@ -197,7 +197,7 @@ static LPWSTR read_value(HWND hwnd, HKEY hKey, LPCWSTR valueName, DWORD *lpType, WCHAR empty = 0; lRet = RegQueryValueExW(hKey, valueName ? valueName : &empty, 0, lpType, 0, &valueDataLen); - if (lRet != ERROR_SUCCESS) { + if (lRet) { if (lRet == ERROR_FILE_NOT_FOUND && !valueName) { /* no default value here, make it up */ if (len) *len = 1; if (lpType) *lpType = REG_SZ; @@ -211,7 +211,7 @@ static LPWSTR read_value(HWND hwnd, HKEY hKey, LPCWSTR valueName, DWORD *lpType, if ( *lpType == REG_DWORD ) valueDataLen = sizeof(DWORD); buffer = heap_xalloc(valueDataLen + sizeof(WCHAR)); lRet = RegQueryValueExW(hKey, valueName, 0, 0, (LPBYTE)buffer, &valueDataLen); - if (lRet != ERROR_SUCCESS) { + if (lRet) { error_code_messagebox(hwnd, IDS_BAD_VALUE, valueName); goto done; } @@ -235,7 +235,7 @@ BOOL CreateKey(HWND hwnd, HKEY hKeyRoot, LPCWSTR keyPath, LPWSTR keyName) HKEY hKey; lRet = RegOpenKeyExW(hKeyRoot, keyPath, 0, KEY_CREATE_SUB_KEY, &hKey); - if (lRet != ERROR_SUCCESS) { + if (lRet) { error_code_messagebox(hwnd, IDS_CREATE_KEY_FAILED); goto done; } @@ -246,13 +246,13 @@ BOOL CreateKey(HWND hwnd, HKEY hKeyRoot, LPCWSTR keyPath, LPWSTR keyName) for (keyNum = 1; keyNum < 100; keyNum++) { wsprintfW(keyName, newKey, keyNum); lRet = RegOpenKeyW(hKey, keyName, &retKey); - if (lRet != ERROR_SUCCESS) break; + if (lRet) break; RegCloseKey(retKey); } if (lRet == ERROR_SUCCESS) goto done; lRet = RegCreateKeyW(hKey, keyName, &retKey); - if (lRet != ERROR_SUCCESS) { + if (lRet) { error_code_messagebox(hwnd, IDS_CREATE_KEY_FAILED); goto done; } @@ -273,7 +273,7 @@ BOOL ModifyValue(HWND hwnd, HKEY hKeyRoot, LPCWSTR keyPath, LPCWSTR valueName) LONG len; lRet = RegOpenKeyExW(hKeyRoot, keyPath, 0, KEY_READ | KEY_SET_VALUE, &hKey); - if (lRet != ERROR_SUCCESS) { + if (lRet) { error_code_messagebox(hwnd, IDS_SET_VALUE_FAILED); return FALSE; } @@ -389,7 +389,7 @@ BOOL DeleteKey(HWND hwnd, HKEY hKeyRoot, LPCWSTR keyPath) HKEY hKey; lRet = RegOpenKeyExW(hKeyRoot, keyPath, 0, KEY_READ|KEY_SET_VALUE, &hKey); - if (lRet != ERROR_SUCCESS) { + if (lRet) { error_code_messagebox(hwnd, IDS_DELETE_KEY_FAILED); return FALSE; } @@ -399,7 +399,7 @@ BOOL DeleteKey(HWND hwnd, HKEY hKeyRoot, LPCWSTR keyPath) goto done; lRet = SHDeleteKeyW(hKeyRoot, keyPath); - if (lRet != ERROR_SUCCESS) { + if (lRet) { error_code_messagebox(hwnd, IDS_BAD_KEY, keyPath); goto done; } @@ -419,7 +419,7 @@ BOOL DeleteValue(HWND hwnd, HKEY hKeyRoot, LPCWSTR keyPath, LPCWSTR valueName, B WCHAR empty = 0; lRet = RegOpenKeyExW(hKeyRoot, keyPath, 0, KEY_READ | KEY_SET_VALUE, &hKey); - if (lRet != ERROR_SUCCESS) return FALSE; + if (lRet) return FALSE; if (showMessageBox) { @@ -429,10 +429,10 @@ BOOL DeleteValue(HWND hwnd, HKEY hKeyRoot, LPCWSTR keyPath, LPCWSTR valueName, B } lRet = RegDeleteValueW(hKey, valueName ? valueName : &empty); - if (lRet != ERROR_SUCCESS && valueName) { + if (lRet && valueName) { error_code_messagebox(hwnd, IDS_BAD_VALUE, valueName); } - if (lRet != ERROR_SUCCESS) goto done; + if (lRet) goto done; result = TRUE; done: @@ -451,7 +451,7 @@ BOOL CreateValue(HWND hwnd, HKEY hKeyRoot, LPCWSTR keyPath, DWORD valueType, LPW LVITEMW item; lRet = RegOpenKeyExW(hKeyRoot, keyPath, 0, KEY_READ | KEY_SET_VALUE, &hKey); - if (lRet != ERROR_SUCCESS) { + if (lRet) { error_code_messagebox(hwnd, IDS_CREATE_VALUE_FAILED); return FALSE; } @@ -470,7 +470,7 @@ BOOL CreateValue(HWND hwnd, HKEY hKeyRoot, LPCWSTR keyPath, DWORD valueType, LPW } lRet = RegSetValueExW(hKey, valueName, 0, valueType, (BYTE*)&valueDword, sizeof(DWORD)); - if (lRet != ERROR_SUCCESS) { + if (lRet) { error_code_messagebox(hwnd, IDS_CREATE_VALUE_FAILED); goto done; } @@ -501,7 +501,7 @@ BOOL RenameValue(HWND hwnd, HKEY hKeyRoot, LPCWSTR keyPath, LPCWSTR oldName, LPC if (!newName) return FALSE; lRet = RegOpenKeyExW(hKeyRoot, keyPath, 0, KEY_READ | KEY_SET_VALUE, &hKey); - if (lRet != ERROR_SUCCESS) { + if (lRet) { error_code_messagebox(hwnd, IDS_RENAME_VALUE_FAILED); return FALSE; } @@ -513,12 +513,12 @@ BOOL RenameValue(HWND hwnd, HKEY hKeyRoot, LPCWSTR keyPath, LPCWSTR oldName, LPC value = read_value(hwnd, hKey, oldName, &type, &len); if(!value) goto done; lRet = RegSetValueExW(hKey, newName, 0, type, (BYTE*)value, len); - if (lRet != ERROR_SUCCESS) { + if (lRet) { error_code_messagebox(hwnd, IDS_RENAME_VALUE_FAILED); goto done; } lRet = RegDeleteValueW(hKey, oldName); - if (lRet != ERROR_SUCCESS) { + if (lRet) { RegDeleteValueW(hKey, newName); error_code_messagebox(hwnd, IDS_RENAME_VALUE_FAILED); goto done; @@ -556,7 +556,7 @@ BOOL RenameKey(HWND hwnd, HKEY hRootKey, LPCWSTR keyPath, LPCWSTR newName) *srcSubKey_copy = 0; srcSubKey = srcSubKey_copy + 1; lRet = RegOpenKeyExW(hRootKey, parentPath, 0, KEY_READ | KEY_CREATE_SUB_KEY, &parentKey); - if (lRet != ERROR_SUCCESS) { + if (lRet) { error_code_messagebox(hwnd, IDS_RENAME_KEY_FAILED); goto done; } @@ -569,14 +569,14 @@ BOOL RenameKey(HWND hwnd, HKEY hRootKey, LPCWSTR keyPath, LPCWSTR newName) KEY_WRITE, NULL /* FIXME */, &destKey, &disposition); if (disposition == REG_OPENED_EXISTING_KEY) lRet = ERROR_FILE_EXISTS; - if (lRet != ERROR_SUCCESS) { + if (lRet) { error_code_messagebox(hwnd, IDS_KEY_EXISTS, srcSubKey); goto done; } /* FIXME: SHCopyKey does not copy the security attributes */ lRet = SHCopyKeyW(parentKey, srcSubKey, destKey, 0); - if (lRet != ERROR_SUCCESS) { + if (lRet) { RegCloseKey(destKey); RegDeleteKeyW(parentKey, newName); error_code_messagebox(hwnd, IDS_RENAME_KEY_FAILED); @@ -584,7 +584,7 @@ BOOL RenameKey(HWND hwnd, HKEY hRootKey, LPCWSTR keyPath, LPCWSTR newName) } lRet = SHDeleteKeyW(hRootKey, keyPath); - if (lRet != ERROR_SUCCESS) { + if (lRet) { error_code_messagebox(hwnd, IDS_RENAME_KEY_FAILED); goto done; }
1
0
0
0
Hugh McMaster : regedit: Simplify the detection of existing registry values.
by Alexandre Julliard
21 May '18
21 May '18
Module: wine Branch: master Commit: b24ee836bd8fef2cc960312d2b2b565c407b0907 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=b24ee836bd8fef2cc960312d…
Author: Hugh McMaster <hugh.mcmaster(a)outlook.com> Date: Mon May 21 13:34:57 2018 +0000 regedit: Simplify the detection of existing registry values. Signed-off-by: Hugh McMaster <hugh.mcmaster(a)outlook.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- programs/regedit/edit.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/programs/regedit/edit.c b/programs/regedit/edit.c index 4307766..59221f4 100644 --- a/programs/regedit/edit.c +++ b/programs/regedit/edit.c @@ -184,12 +184,9 @@ static INT_PTR CALLBACK bin_modify_dlgproc(HWND hwndDlg, UINT uMsg, WPARAM wPara return FALSE; } -static BOOL check_value(HWND hwnd, HKEY hKey, LPCWSTR valueName) +static BOOL value_exists(HWND hwnd, HKEY hKey, const WCHAR *value_name) { - WCHAR empty = 0; - LONG lRet = RegQueryValueExW(hKey, valueName ? valueName : &empty, 0, NULL, 0, NULL); - if(lRet != ERROR_SUCCESS) return FALSE; - return TRUE; + return !RegQueryValueExW(hKey, value_name, NULL, NULL, NULL, NULL); } static LPWSTR read_value(HWND hwnd, HKEY hKey, LPCWSTR valueName, DWORD *lpType, LONG *len) @@ -508,8 +505,8 @@ BOOL RenameValue(HWND hwnd, HKEY hKeyRoot, LPCWSTR keyPath, LPCWSTR oldName, LPC error_code_messagebox(hwnd, IDS_RENAME_VALUE_FAILED); return FALSE; } - /* check if the value already exists */ - if (check_value(hwnd, hKey, newName)) { + + if (value_exists(hwnd, hKey, newName)) { error_code_messagebox(hwnd, IDS_VALUE_EXISTS, oldName); goto done; }
1
0
0
0
Hugh McMaster : regedit: Use the ARRAY_SIZE macro.
by Alexandre Julliard
21 May '18
21 May '18
Module: wine Branch: master Commit: a20f99b5489063bbc756840a573ad44b26523222 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=a20f99b5489063bbc756840a…
Author: Hugh McMaster <hugh.mcmaster(a)outlook.com> Date: Mon May 21 13:34:56 2018 +0000 regedit: Use the ARRAY_SIZE macro. Signed-off-by: Hugh McMaster <hugh.mcmaster(a)outlook.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- programs/regedit/childwnd.c | 2 +- programs/regedit/listview.c | 2 +- programs/regedit/regedit.c | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/programs/regedit/childwnd.c b/programs/regedit/childwnd.c index ceeeb1d..56ef59d 100644 --- a/programs/regedit/childwnd.c +++ b/programs/regedit/childwnd.c @@ -138,7 +138,7 @@ static LPWSTR GetPathRoot(HWND hwndTV, HTREEITEM hItem, BOOL bFull) { if (hRootKey) parts[1] = GetRootKeyName(hRootKey); if (bFull) { - DWORD dwSize = sizeof(text)/sizeof(WCHAR); + DWORD dwSize = ARRAY_SIZE(text); GetComputerNameW(text, &dwSize); parts[0] = text; } diff --git a/programs/regedit/listview.c b/programs/regedit/listview.c index 4f3593f..e8bfb52 100644 --- a/programs/regedit/listview.c +++ b/programs/regedit/listview.c @@ -241,7 +241,7 @@ static BOOL CreateListColumns(HWND hWndListView) lvC.iSubItem = index; lvC.cx = default_column_widths[index]; lvC.fmt = column_alignment[index]; - LoadStringW(hInst, IDS_LIST_COLUMN_FIRST + index, szText, sizeof(szText)/sizeof(WCHAR)); + LoadStringW(hInst, IDS_LIST_COLUMN_FIRST + index, szText, ARRAY_SIZE(szText)); if (ListView_InsertColumnW(hWndListView, index, &lvC) == -1) return FALSE; } return TRUE; diff --git a/programs/regedit/regedit.c b/programs/regedit/regedit.c index 7e5887c..7469a90 100644 --- a/programs/regedit/regedit.c +++ b/programs/regedit/regedit.c @@ -74,7 +74,7 @@ void WINAPIV output_message(unsigned int id, ...) WCHAR fmt[1536]; __ms_va_list va_args; - if (!LoadStringW(GetModuleHandleW(NULL), id, fmt, sizeof(fmt)/sizeof(*fmt))) + if (!LoadStringW(GetModuleHandleW(NULL), id, fmt, ARRAY_SIZE(fmt))) { WINE_FIXME("LoadString failed with %d\n", GetLastError()); return; @@ -89,7 +89,7 @@ void WINAPIV error_exit(unsigned int id, ...) WCHAR fmt[1536]; __ms_va_list va_args; - if (!LoadStringW(GetModuleHandleW(NULL), id, fmt, sizeof(fmt)/sizeof(*fmt))) + if (!LoadStringW(GetModuleHandleW(NULL), id, fmt, ARRAY_SIZE(fmt))) { WINE_FIXME("LoadString failed with %u\n", GetLastError()); return;
1
0
0
0
Hugh McMaster : regedit: Remove regproc.h.
by Alexandre Julliard
21 May '18
21 May '18
Module: wine Branch: master Commit: 73220a3d6fabd006645032be4e44425b744ad4b6 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=73220a3d6fabd006645032be…
Author: Hugh McMaster <hugh.mcmaster(a)outlook.com> Date: Mon May 21 13:34:53 2018 +0000 regedit: Remove regproc.h. Signed-off-by: Hugh McMaster <hugh.mcmaster(a)outlook.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- programs/regedit/childwnd.c | 1 - programs/regedit/edit.c | 1 - programs/regedit/framewnd.c | 1 - programs/regedit/hexedit.c | 1 - programs/regedit/listview.c | 1 - programs/regedit/main.h | 6 +++++- programs/regedit/regedit.c | 1 - programs/regedit/regproc.c | 1 - programs/regedit/regproc.h | 25 ------------------------- programs/regedit/treeview.c | 1 - 10 files changed, 5 insertions(+), 34 deletions(-) diff --git a/programs/regedit/childwnd.c b/programs/regedit/childwnd.c index 0c6d895..ceeeb1d 100644 --- a/programs/regedit/childwnd.c +++ b/programs/regedit/childwnd.c @@ -24,7 +24,6 @@ #include <stdio.h> #include "main.h" -#include "regproc.h" #include "wine/debug.h" #include "wine/heap.h" diff --git a/programs/regedit/edit.c b/programs/regedit/edit.c index db768b6..4307766 100644 --- a/programs/regedit/edit.c +++ b/programs/regedit/edit.c @@ -32,7 +32,6 @@ #include "wine/heap.h" #include "wine/unicode.h" #include "main.h" -#include "regproc.h" #include "resource.h" static const WCHAR* editValueName; diff --git a/programs/regedit/framewnd.c b/programs/regedit/framewnd.c index 804573e..99f7686 100644 --- a/programs/regedit/framewnd.c +++ b/programs/regedit/framewnd.c @@ -29,7 +29,6 @@ #include <shellapi.h> #include "main.h" -#include "regproc.h" #include "wine/debug.h" #include "wine/heap.h" #include "wine/unicode.h" diff --git a/programs/regedit/hexedit.c b/programs/regedit/hexedit.c index c7bdd0a..0d28388 100644 --- a/programs/regedit/hexedit.c +++ b/programs/regedit/hexedit.c @@ -37,7 +37,6 @@ #include "wine/heap.h" #include "main.h" -#include "regproc.h" /* spaces dividing hex and ASCII */ #define DIV_SPACES 4 diff --git a/programs/regedit/listview.c b/programs/regedit/listview.c index 404699f..4f3593f 100644 --- a/programs/regedit/listview.c +++ b/programs/regedit/listview.c @@ -26,7 +26,6 @@ #include <stdio.h> #include "main.h" -#include "regproc.h" #include "wine/heap.h" #include "wine/unicode.h" diff --git a/programs/regedit/main.h b/programs/regedit/main.h index c9143c1..af61252 100644 --- a/programs/regedit/main.h +++ b/programs/regedit/main.h @@ -32,7 +32,11 @@ #define ARRAY_SIZE(A) (sizeof(A)/sizeof(*A)) -#define MAX_NEW_KEY_LEN 128 +#define MAX_NEW_KEY_LEN 128 +#define KEY_MAX_LEN 1024 + +#define REG_FORMAT_5 1 +#define REG_FORMAT_4 2 /* Pop-Up Menus */ #define PM_COMPUTER 0 diff --git a/programs/regedit/regedit.c b/programs/regedit/regedit.c index 1d732a8..7e5887c 100644 --- a/programs/regedit/regedit.c +++ b/programs/regedit/regedit.c @@ -27,7 +27,6 @@ #include "wine/debug.h" #include "wine/heap.h" #include "main.h" -#include "regproc.h" WINE_DEFAULT_DEBUG_CHANNEL(regedit); diff --git a/programs/regedit/regproc.c b/programs/regedit/regproc.c index 0a34cfb..c4900e6 100644 --- a/programs/regedit/regproc.c +++ b/programs/regedit/regproc.c @@ -32,7 +32,6 @@ #include <wine/debug.h> #include <wine/heap.h> #include "main.h" -#include "regproc.h" WINE_DEFAULT_DEBUG_CHANNEL(regedit); diff --git a/programs/regedit/regproc.h b/programs/regedit/regproc.h deleted file mode 100644 index c5e3a84..0000000 --- a/programs/regedit/regproc.h +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright 1999 Sylvain St-Germain - * Copyright 2002 Andriy Palamarchuk - * - * 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 - */ - -#include "resource.h" - -#define KEY_MAX_LEN 1024 - -#define REG_FORMAT_5 1 -#define REG_FORMAT_4 2 diff --git a/programs/regedit/treeview.c b/programs/regedit/treeview.c index 86224e2..9d75a31 100644 --- a/programs/regedit/treeview.c +++ b/programs/regedit/treeview.c @@ -32,7 +32,6 @@ #include "wine/heap.h" #include "main.h" -#include "regproc.h" WINE_DEFAULT_DEBUG_CHANNEL(regedit);
1
0
0
0
Hugh McMaster : regedit: Move regedit.c functions from regproc.h to main.h.
by Alexandre Julliard
21 May '18
21 May '18
Module: wine Branch: master Commit: f6476c79e39e73084bd10e8ab50b7f7ac42ed33b URL:
https://source.winehq.org/git/wine.git/?a=commit;h=f6476c79e39e73084bd10e8a…
Author: Hugh McMaster <hugh.mcmaster(a)outlook.com> Date: Mon May 21 13:34:52 2018 +0000 regedit: Move regedit.c functions from regproc.h to main.h. Signed-off-by: Hugh McMaster <hugh.mcmaster(a)outlook.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- programs/regedit/main.h | 4 ++++ programs/regedit/regproc.h | 3 --- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/programs/regedit/main.h b/programs/regedit/main.h index a0c9353..c9143c1 100644 --- a/programs/regedit/main.h +++ b/programs/regedit/main.h @@ -141,6 +141,10 @@ extern LPCWSTR GetValueName(HWND hwndLV); extern BOOL ListWndNotifyProc(HWND hWnd, WPARAM wParam, LPARAM lParam, BOOL *Result); extern BOOL IsDefaultValue(HWND hwndLV, int i); +/* regedit.c */ +void WINAPIV output_message(unsigned int id, ...); +void WINAPIV error_exit(unsigned int id, ...); + /* regproc.c */ void *heap_xalloc(size_t size); void *heap_xrealloc(void *buf, size_t size); diff --git a/programs/regedit/regproc.h b/programs/regedit/regproc.h index f57379b..c5e3a84 100644 --- a/programs/regedit/regproc.h +++ b/programs/regedit/regproc.h @@ -23,6 +23,3 @@ #define REG_FORMAT_5 1 #define REG_FORMAT_4 2 - -void WINAPIV output_message(unsigned int id, ...); -void WINAPIV error_exit(unsigned int id, ...);
1
0
0
0
Hugh McMaster : regedit: Move regproc.c functions from regproc.h to main.h.
by Alexandre Julliard
21 May '18
21 May '18
Module: wine Branch: master Commit: ff1f664d0851d30540c312e34155a1497f363d67 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=ff1f664d0851d30540c312e3…
Author: Hugh McMaster <hugh.mcmaster(a)outlook.com> Date: Mon May 21 13:34:50 2018 +0000 regedit: Move regproc.c functions from regproc.h to main.h. Signed-off-by: Hugh McMaster <hugh.mcmaster(a)outlook.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- programs/regedit/main.h | 10 +++++++++- programs/regedit/regedit.c | 2 ++ programs/regedit/regproc.c | 2 ++ programs/regedit/regproc.h | 7 ------- 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/programs/regedit/main.h b/programs/regedit/main.h index 1d0109f..a0c9353 100644 --- a/programs/regedit/main.h +++ b/programs/regedit/main.h @@ -21,9 +21,9 @@ #ifndef __MAIN_H__ #define __MAIN_H__ +#include <stdio.h> #include "resource.h" - #define STATUS_WINDOW 2001 #define TREE_WINDOW 2002 #define LIST_WINDOW 2003 @@ -141,6 +141,14 @@ extern LPCWSTR GetValueName(HWND hwndLV); extern BOOL ListWndNotifyProc(HWND hWnd, WPARAM wParam, LPARAM lParam, BOOL *Result); extern BOOL IsDefaultValue(HWND hwndLV, int i); +/* regproc.c */ +void *heap_xalloc(size_t size); +void *heap_xrealloc(void *buf, size_t size); +char *GetMultiByteString(const WCHAR *strW); +BOOL import_registry_file(FILE *reg_file); +void delete_registry_key(WCHAR *reg_key_name); +BOOL export_registry_key(WCHAR *file_name, WCHAR *path, DWORD format); + /* treeview.c */ extern HWND CreateTreeView(HWND hwndParent, LPWSTR pHostName, UINT id); extern BOOL RefreshTreeView(HWND hWndTV); diff --git a/programs/regedit/regedit.c b/programs/regedit/regedit.c index a69e929..1d732a8 100644 --- a/programs/regedit/regedit.c +++ b/programs/regedit/regedit.c @@ -21,10 +21,12 @@ #include <stdio.h> #include <stdlib.h> #include <windows.h> +#include <commctrl.h> #include <shellapi.h> #include "wine/unicode.h" #include "wine/debug.h" #include "wine/heap.h" +#include "main.h" #include "regproc.h" WINE_DEFAULT_DEBUG_CHANNEL(regedit); diff --git a/programs/regedit/regproc.c b/programs/regedit/regproc.c index 65087c9..0a34cfb 100644 --- a/programs/regedit/regproc.c +++ b/programs/regedit/regproc.c @@ -27,9 +27,11 @@ #include <fcntl.h> #include <io.h> #include <windows.h> +#include <commctrl.h> #include <wine/unicode.h> #include <wine/debug.h> #include <wine/heap.h> +#include "main.h" #include "regproc.h" WINE_DEFAULT_DEBUG_CHANNEL(regedit); diff --git a/programs/regedit/regproc.h b/programs/regedit/regproc.h index bfb0cba..f57379b 100644 --- a/programs/regedit/regproc.h +++ b/programs/regedit/regproc.h @@ -26,10 +26,3 @@ void WINAPIV output_message(unsigned int id, ...); void WINAPIV error_exit(unsigned int id, ...); - -char *GetMultiByteString(const WCHAR *strW); -void *heap_xalloc(size_t size); -void *heap_xrealloc(void *buf, size_t size); -BOOL import_registry_file(FILE *reg_file); -void delete_registry_key(WCHAR *reg_key_name); -BOOL export_registry_key(WCHAR *file_name, WCHAR *path, DWORD format);
1
0
0
0
Hugh McMaster : regedit: Replace the COUNT_OF macro with ARRAY_SIZE.
by Alexandre Julliard
21 May '18
21 May '18
Module: wine Branch: master Commit: 78732a6d462dfae9f74b8c935ae0766e710d5a44 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=78732a6d462dfae9f74b8c93…
Author: Hugh McMaster <hugh.mcmaster(a)outlook.com> Date: Mon May 21 13:34:49 2018 +0000 regedit: Replace the COUNT_OF macro with ARRAY_SIZE. Signed-off-by: Hugh McMaster <hugh.mcmaster(a)outlook.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- programs/regedit/about.c | 2 +- programs/regedit/edit.c | 10 +++++----- programs/regedit/framewnd.c | 16 ++++++++-------- programs/regedit/listview.c | 2 +- programs/regedit/main.c | 4 ++-- programs/regedit/main.h | 2 +- programs/regedit/treeview.c | 2 +- 7 files changed, 19 insertions(+), 19 deletions(-) diff --git a/programs/regedit/about.c b/programs/regedit/about.c index e0e469e..6684dbe 100644 --- a/programs/regedit/about.c +++ b/programs/regedit/about.c @@ -29,6 +29,6 @@ void ShowAboutBox(HWND hWnd) { WCHAR title[64]; HICON icon = LoadImageW( hInst, MAKEINTRESOURCEW(IDI_REGEDIT), IMAGE_ICON, 48, 48, LR_SHARED ); - LoadStringW(hInst, IDS_APP_TITLE, title, COUNT_OF(title)); + LoadStringW(hInst, IDS_APP_TITLE, title, ARRAY_SIZE(title)); ShellAboutW(hWnd, title, NULL, icon); } diff --git a/programs/regedit/edit.c b/programs/regedit/edit.c index c982791..db768b6 100644 --- a/programs/regedit/edit.c +++ b/programs/regedit/edit.c @@ -54,8 +54,8 @@ static int vmessagebox(HWND hwnd, int buttons, int titleId, int resId, __ms_va_l WCHAR *str; int ret; - LoadStringW(hInst, titleId, title, COUNT_OF(title)); - LoadStringW(hInst, resId, fmt, COUNT_OF(fmt)); + LoadStringW(hInst, titleId, title, ARRAY_SIZE(title)); + LoadStringW(hInst, resId, fmt, ARRAY_SIZE(fmt)); FormatMessageW(FORMAT_MESSAGE_FROM_STRING|FORMAT_MESSAGE_ALLOCATE_BUFFER, fmt, 0, 0, (WCHAR *)&str, 0, &va_args); @@ -94,7 +94,7 @@ static BOOL change_dword_base(HWND hwndDlg, BOOL toHex) WCHAR buf[128]; DWORD val; - if (!GetDlgItemTextW(hwndDlg, IDC_VALUE_DATA, buf, COUNT_OF(buf))) return FALSE; + if (!GetDlgItemTextW(hwndDlg, IDC_VALUE_DATA, buf, ARRAY_SIZE(buf))) return FALSE; if (!swscanf(buf, toHex ? percent_u : percent_x, &val)) return FALSE; wsprintfW(buf, toHex ? percent_x : percent_u, val); return SetDlgItemTextW(hwndDlg, IDC_VALUE_DATA, buf); @@ -244,7 +244,7 @@ BOOL CreateKey(HWND hwnd, HKEY hKeyRoot, LPCWSTR keyPath, LPWSTR keyName) goto done; } - if (!LoadStringW(GetModuleHandleW(0), IDS_NEWKEY, newKey, COUNT_OF(newKey))) goto done; + if (!LoadStringW(GetModuleHandleW(0), IDS_NEWKEY, newKey, ARRAY_SIZE(newKey))) goto done; /* try to find a name for the key being created (maximum = 100 attempts) */ for (keyNum = 1; keyNum < 100; keyNum++) { @@ -460,7 +460,7 @@ BOOL CreateValue(HWND hwnd, HKEY hKeyRoot, LPCWSTR keyPath, DWORD valueType, LPW return FALSE; } - if (!LoadStringW(GetModuleHandleW(0), IDS_NEWVALUE, newValue, COUNT_OF(newValue))) goto done; + if (!LoadStringW(GetModuleHandleW(0), IDS_NEWVALUE, newValue, ARRAY_SIZE(newValue))) goto done; /* try to find a name for the value being created (maximum = 100 attempts) */ for (valueNum = 1; valueNum < 100; valueNum++) { diff --git a/programs/regedit/framewnd.c b/programs/regedit/framewnd.c index 94da217..804573e 100644 --- a/programs/regedit/framewnd.c +++ b/programs/regedit/framewnd.c @@ -167,7 +167,7 @@ static void update_new_items_and_copy_keyname(HMENU hMenu, WCHAR *keyName) if (!keyName) state = MF_GRAYED; - for (i = 0; i < COUNT_OF(items); i++) + for (i = 0; i < ARRAY_SIZE(items); i++) EnableMenuItem(hMenu, items[i], state | MF_BYCOMMAND); } @@ -469,7 +469,7 @@ static BOOL ImportRegistryFile(HWND hWnd) InitOpenFileName(hWnd, &ofn); ofn.Flags |= OFN_ENABLESIZING; - LoadStringW(hInst, IDS_FILEDIALOG_IMPORT_TITLE, title, COUNT_OF(title)); + LoadStringW(hInst, IDS_FILEDIALOG_IMPORT_TITLE, title, ARRAY_SIZE(title)); ofn.lpstrTitle = title; if (GetOpenFileNameW(&ofn)) { if (!import_registry_filename(ofn.lpstrFile)) { @@ -498,7 +498,7 @@ static BOOL ExportRegistryFile(HWND hWnd) WCHAR title[128]; InitOpenFileName(hWnd, &ofn); - LoadStringW(hInst, IDS_FILEDIALOG_EXPORT_TITLE, title, COUNT_OF(title)); + LoadStringW(hInst, IDS_FILEDIALOG_EXPORT_TITLE, title, ARRAY_SIZE(title)); ofn.lpstrTitle = title; ofn.Flags = OFN_ENABLETEMPLATE | OFN_ENABLEHOOK | OFN_EXPLORER | OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT; ofn.lpfnHook = ExportRegistryFile_OFNHookProc; @@ -676,7 +676,7 @@ static INT_PTR CALLBACK addtofavorites_dlgproc(HWND hwndDlg, UINT uMsg, WPARAM w item.mask = TVIF_HANDLE | TVIF_TEXT; item.hItem = selected; item.pszText = buf; - item.cchTextMax = COUNT_OF(buf); + item.cchTextMax = ARRAY_SIZE(buf); SendMessageW(g_pChildWnd->hTreeWnd, TVM_GETITEMW, 0, (LPARAM)&item); EnableWindow(GetDlgItem(hwndDlg, IDOK), FALSE); @@ -1065,10 +1065,10 @@ LRESULT CALLBACK FrameWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa CreateWindowExW(0, szChildClass, captionW, WS_CHILD | WS_VISIBLE, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hWnd, NULL, hInst, 0); - LoadStringW(hInst, IDS_EXPAND, expandW, COUNT_OF(expandW)); - LoadStringW(hInst, IDS_COLLAPSE, collapseW, COUNT_OF(collapseW)); - LoadStringW(hInst, IDS_EDIT_MODIFY, modifyW, COUNT_OF(modifyW)); - LoadStringW(hInst, IDS_EDIT_MODIFY_BIN, modify_binaryW, COUNT_OF(modify_binaryW)); + LoadStringW(hInst, IDS_EXPAND, expandW, ARRAY_SIZE(expandW)); + LoadStringW(hInst, IDS_COLLAPSE, collapseW, ARRAY_SIZE(collapseW)); + LoadStringW(hInst, IDS_EDIT_MODIFY, modifyW, ARRAY_SIZE(modifyW)); + LoadStringW(hInst, IDS_EDIT_MODIFY_BIN, modify_binaryW, ARRAY_SIZE(modify_binaryW)); break; case WM_COMMAND: if (!_CmdWndProc(hWnd, message, wParam, lParam)) diff --git a/programs/regedit/listview.c b/programs/regedit/listview.c index 0934e03..404699f 100644 --- a/programs/regedit/listview.c +++ b/programs/regedit/listview.c @@ -361,7 +361,7 @@ HWND CreateListView(HWND hwndParent, UINT id) WCHAR ListView[] = {'L','i','s','t',' ','V','i','e','w',0}; /* prepare strings */ - LoadStringW(hInst, IDS_REGISTRY_VALUE_NOT_SET, g_szValueNotSet, COUNT_OF(g_szValueNotSet)); + LoadStringW(hInst, IDS_REGISTRY_VALUE_NOT_SET, g_szValueNotSet, ARRAY_SIZE(g_szValueNotSet)); /* Get the dimensions of the parent window's client area, and create the list view control. */ GetClientRect(hwndParent, &rcClient); diff --git a/programs/regedit/main.c b/programs/regedit/main.c index 19d720d..62fd616 100644 --- a/programs/regedit/main.c +++ b/programs/regedit/main.c @@ -172,8 +172,8 @@ int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLi } /* Initialize global strings */ - LoadStringW(hInstance, IDS_APP_TITLE, szTitle, COUNT_OF(szTitle)); - LoadStringW(hInstance, IDS_REGISTRY_DEFAULT_VALUE, g_pszDefaultValueName, COUNT_OF(g_pszDefaultValueName)); + LoadStringW(hInstance, IDS_APP_TITLE, szTitle, ARRAY_SIZE(szTitle)); + LoadStringW(hInstance, IDS_REGISTRY_DEFAULT_VALUE, g_pszDefaultValueName, ARRAY_SIZE(g_pszDefaultValueName)); /* Store instance handle in our global variable */ hInst = hInstance; diff --git a/programs/regedit/main.h b/programs/regedit/main.h index 788de1a..1d0109f 100644 --- a/programs/regedit/main.h +++ b/programs/regedit/main.h @@ -30,7 +30,7 @@ #define SPLIT_WIDTH 5 -#define COUNT_OF(a) (sizeof(a)/sizeof(a[0])) +#define ARRAY_SIZE(A) (sizeof(A)/sizeof(*A)) #define MAX_NEW_KEY_LEN 128 diff --git a/programs/regedit/treeview.c b/programs/regedit/treeview.c index 4bbec40..86224e2 100644 --- a/programs/regedit/treeview.c +++ b/programs/regedit/treeview.c @@ -521,7 +521,7 @@ HTREEITEM InsertNode(HWND hwndTV, HTREEITEM hItem, LPWSTR name) item.mask = TVIF_HANDLE | TVIF_TEXT; item.hItem = hNewItem; item.pszText = buf; - item.cchTextMax = COUNT_OF(buf); + item.cchTextMax = ARRAY_SIZE(buf); if (!TreeView_GetItemW(hwndTV, &item)) continue; if (lstrcmpW(name, item.pszText) == 0) break; }
1
0
0
0
Dmitry Timoshkov : mstask: Implement ITask::GetNextRunTime() for DAILY trigger type.
by Alexandre Julliard
21 May '18
21 May '18
Module: wine Branch: master Commit: 5443f0ee2b844030687e8521e6c8fd18f57fea95 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=5443f0ee2b844030687e8521…
Author: Dmitry Timoshkov <dmitry(a)baikal.ru> Date: Mon May 21 18:17:49 2018 +0800 mstask: Implement ITask::GetNextRunTime() for DAILY trigger type. Signed-off-by: Dmitry Timoshkov <dmitry(a)baikal.ru> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/mstask/task.c | 44 ++++++++++++++++++++++++++++++++++++++++ dlls/mstask/tests/task_trigger.c | 18 +++++++++++++++- 2 files changed, 61 insertions(+), 1 deletion(-) diff --git a/dlls/mstask/task.c b/dlls/mstask/task.c index c004764..012bf48 100644 --- a/dlls/mstask/task.c +++ b/dlls/mstask/task.c @@ -445,6 +445,27 @@ static void get_end_time(const TASK_TRIGGER *trigger, FILETIME *ft) SystemTimeToFileTime(&st, ft); } +static void filetime_add_ms(FILETIME *ft, ULONGLONG ms) +{ + union u_ftll + { + FILETIME ft; + ULONGLONG ll; + } *ftll = (union u_ftll *)ft; + + ftll->ll += ms * (ULONGLONG)10000; +} + +static void filetime_add_hours(FILETIME *ft, ULONG hours) +{ + filetime_add_ms(ft, (ULONGLONG)hours * 60 * 60 * 1000); +} + +static void filetime_add_days(FILETIME *ft, ULONG days) +{ + filetime_add_hours(ft, (ULONGLONG)days * 24); +} + static HRESULT WINAPI MSTASK_ITask_GetNextRunTime(ITask *iface, SYSTEMTIME *rt) { TaskImpl *This = impl_from_ITask(iface); @@ -483,6 +504,29 @@ static HRESULT WINAPI MSTASK_ITask_GetNextRunTime(ITask *iface, SYSTEMTIME *rt) } break; + case TASK_TIME_TRIGGER_DAILY: + st = current_st; + st.wHour = This->trigger[i].wStartHour; + st.wMinute = This->trigger[i].wStartMinute; + st.wSecond = 0; + st.wMilliseconds = 0; + SystemTimeToFileTime(&st, ¤t_ft); + while (CompareFileTime(¤t_ft, &end_ft) < 0) + { + if (CompareFileTime(¤t_ft, &begin_ft) >= 0) + { + if (!have_best_time || CompareFileTime(¤t_ft, &best_ft) < 0) + { + best_ft = current_ft; + have_best_time = TRUE; + } + break; + } + + filetime_add_days(¤t_ft, This->trigger[i].Type.Daily.DaysInterval); + } + break; + default: FIXME("trigger type %u is not handled\n", This->trigger[i].TriggerType); break; diff --git a/dlls/mstask/tests/task_trigger.c b/dlls/mstask/tests/task_trigger.c index e880ce4..f7ab461 100644 --- a/dlls/mstask/tests/task_trigger.c +++ b/dlls/mstask/tests/task_trigger.c @@ -522,7 +522,23 @@ static void test_GetNextRunTime(void) st.wDay, st.wMonth, st.wYear, st.wDayOfWeek, st.wHour, st.wMinute, st.wSecond); - /* FIXME: TASK_TIME_TRIGGER_DAILY */ + /* TASK_TIME_TRIGGER_DAILY */ + + hr = ITaskTrigger_GetTrigger(trigger, &data); + ok(hr == S_OK, "got %#x\n", hr); + data.rgFlags &= ~TASK_TRIGGER_FLAG_DISABLED; + data.TriggerType = TASK_TIME_TRIGGER_DAILY; + data.Type.Daily.DaysInterval = 1; + hr = ITaskTrigger_SetTrigger(trigger, &data); + ok(hr == S_OK, "got %#x\n", hr); + + memset(&st, 0xff, sizeof(st)); + hr = ITask_GetNextRunTime(task, &st); + ok(hr == S_OK, "got %#x\n", hr); + ok(!memcmp(&st, &cmp, sizeof(st)), "got %u/%u/%u wday %u %u:%02u:%02u\n", + st.wDay, st.wMonth, st.wYear, st.wDayOfWeek, + st.wHour, st.wMinute, st.wSecond); + /* FIXME: TASK_TIME_TRIGGER_WEEKLY */ /* FIXME: TASK_TIME_TRIGGER_MONTHLYDATE */ /* FIXME: TASK_TIME_TRIGGER_MONTHLYDOW */
1
0
0
0
Dmitry Timoshkov : mstask: Implement ITask::GetNextRunTime() for ONCE trigger type.
by Alexandre Julliard
21 May '18
21 May '18
Module: wine Branch: master Commit: ac322334fa4d6740e89c6f19361a66f063103a46 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=ac322334fa4d6740e89c6f19…
Author: Dmitry Timoshkov <dmitry(a)baikal.ru> Date: Mon May 21 18:17:47 2018 +0800 mstask: Implement ITask::GetNextRunTime() for ONCE trigger type. Signed-off-by: Dmitry Timoshkov <dmitry(a)baikal.ru> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/mstask/task.c | 90 ++++++++++++++++++++++++++++++++++++++-- dlls/mstask/tests/task_trigger.c | 81 +++++++++++++++++++++++++++++++++--- 2 files changed, 163 insertions(+), 8 deletions(-) diff --git a/dlls/mstask/task.c b/dlls/mstask/task.c index d487aeb..c004764 100644 --- a/dlls/mstask/task.c +++ b/dlls/mstask/task.c @@ -408,11 +408,95 @@ static HRESULT WINAPI MSTASK_ITask_GetRunTimes( return E_NOTIMPL; } -static HRESULT WINAPI MSTASK_ITask_GetNextRunTime(ITask *iface, SYSTEMTIME *st) +static void get_begin_time(const TASK_TRIGGER *trigger, FILETIME *ft) { - FIXME("(%p, %p): stub\n", iface, st); + SYSTEMTIME st; - memset(st, 0, sizeof(*st)); + st.wYear = trigger->wBeginYear; + st.wMonth = trigger->wBeginMonth; + st.wDay = trigger->wBeginDay; + st.wDayOfWeek = 0; + st.wHour = 0; + st.wMinute = 0; + st.wSecond = 0; + st.wMilliseconds = 0; + SystemTimeToFileTime(&st, ft); +} + +static void get_end_time(const TASK_TRIGGER *trigger, FILETIME *ft) +{ + SYSTEMTIME st; + + if (!(trigger->rgFlags & TASK_TRIGGER_FLAG_HAS_END_DATE)) + { + ft->dwHighDateTime = ~0u; + ft->dwLowDateTime = ~0u; + return; + } + + st.wYear = trigger->wEndYear; + st.wMonth = trigger->wEndMonth; + st.wDay = trigger->wEndDay; + st.wDayOfWeek = 0; + st.wHour = 0; + st.wMinute = 0; + st.wSecond = 0; + st.wMilliseconds = 0; + SystemTimeToFileTime(&st, ft); +} + +static HRESULT WINAPI MSTASK_ITask_GetNextRunTime(ITask *iface, SYSTEMTIME *rt) +{ + TaskImpl *This = impl_from_ITask(iface); + SYSTEMTIME st, current_st; + FILETIME current_ft, begin_ft, end_ft, best_ft; + BOOL have_best_time = FALSE; + DWORD i; + + TRACE("(%p, %p)\n", iface, rt); + + GetLocalTime(¤t_st); + + for (i = 0; i < This->trigger_count; i++) + { + if (!(This->trigger[i].rgFlags & TASK_TRIGGER_FLAG_DISABLED)) + { + get_begin_time(&This->trigger[i], &begin_ft); + get_end_time(&This->trigger[i], &end_ft); + + switch (This->trigger[i].TriggerType) + { + case TASK_TIME_TRIGGER_ONCE: + st = current_st; + st.wHour = This->trigger[i].wStartHour; + st.wMinute = This->trigger[i].wStartMinute; + st.wSecond = 0; + st.wMilliseconds = 0; + SystemTimeToFileTime(&st, ¤t_ft); + if (CompareFileTime(&begin_ft, ¤t_ft) <= 0 && CompareFileTime(¤t_ft, &end_ft) < 0) + { + if (!have_best_time || CompareFileTime(¤t_ft, &best_ft) < 0) + { + best_ft = current_ft; + have_best_time = TRUE; + } + } + break; + + default: + FIXME("trigger type %u is not handled\n", This->trigger[i].TriggerType); + break; + } + } + } + + if (have_best_time) + { + FileTimeToSystemTime(&best_ft, rt); + return S_OK; + } + + memset(rt, 0, sizeof(*rt)); return SCHED_S_TASK_NO_VALID_TRIGGERS; } diff --git a/dlls/mstask/tests/task_trigger.c b/dlls/mstask/tests/task_trigger.c index 9a20a56..e880ce4 100644 --- a/dlls/mstask/tests/task_trigger.c +++ b/dlls/mstask/tests/task_trigger.c @@ -422,6 +422,53 @@ static void test_task_trigger(void) ok(ref == 0, "got %u\n", ref); } +static void time_add_ms(SYSTEMTIME *st, DWORD ms) +{ + union + { + FILETIME ft; + ULONGLONG ll; + } ftll; + BOOL ret; + + trace("old: %u/%u/%u wday %u %u:%02u:%02u.%03u\n", + st->wDay, st->wMonth, st->wYear, st->wDayOfWeek, + st->wHour, st->wMinute, st->wSecond, st->wMilliseconds); + ret = SystemTimeToFileTime(st, &ftll.ft); + ok(ret, "SystemTimeToFileTime error %u\n", GetLastError()); + + ftll.ll += ms * (ULONGLONG)10000; + ret = FileTimeToSystemTime(&ftll.ft, st); + ok(ret, "FileTimeToSystemTime error %u\n", GetLastError()); + trace("new: %u/%u/%u wday %u %u:%02u:%02u.%03u\n", + st->wDay, st->wMonth, st->wYear, st->wDayOfWeek, + st->wHour, st->wMinute, st->wSecond, st->wMilliseconds); +} + +static void trigger_add_ms(TASK_TRIGGER *data, DWORD ms, SYSTEMTIME *ret) +{ + SYSTEMTIME st; + + st.wYear = data->wBeginYear; + st.wMonth = data->wBeginMonth; + st.wDayOfWeek = 0; + st.wDay = data->wBeginDay; + st.wHour = data->wStartHour; + st.wMinute = data->wStartMinute; + st.wSecond = 0; + st.wMilliseconds = 0; + + time_add_ms(&st, ms); + + data->wBeginYear = st.wYear; + data->wBeginMonth = st.wMonth; + data->wBeginDay = st.wDay; + data->wStartHour = st.wHour; + data->wStartMinute = st.wMinute; + + *ret = st; +} + static void test_GetNextRunTime(void) { static const WCHAR task_name[] = { 'T','e','s','t','i','n','g',0 }; @@ -429,8 +476,9 @@ static void test_GetNextRunTime(void) HRESULT hr; ITask *task; ITaskTrigger *trigger; + TASK_TRIGGER data; WORD idx; - SYSTEMTIME st; + SYSTEMTIME st, cmp; hr = ITaskScheduler_NewWorkItem(test_task_scheduler, task_name, &CLSID_CTask, &IID_ITask, (IUnknown **)&task); @@ -442,9 +490,9 @@ static void test_GetNextRunTime(void) memset(&st, 0xff, sizeof(st)); hr = ITask_GetNextRunTime(task, &st); ok(hr == SCHED_S_TASK_NO_VALID_TRIGGERS, "got %#x\n", hr); - ok(!memcmp(&st, &st_empty, sizeof(st)), "got %d/%d/%d wday %d %d:%d:%d.%03d\n", + ok(!memcmp(&st, &st_empty, sizeof(st)), "got %u/%u/%u wday %u %u:%02u:%02u\n", st.wDay, st.wMonth, st.wYear, st.wDayOfWeek, - st.wHour, st.wMinute, st.wSecond, st.wMilliseconds); + st.wHour, st.wMinute, st.wSecond); hr = ITask_CreateTrigger(task, &idx, &trigger); ok(hr == S_OK, "got %#x\n", hr); @@ -452,9 +500,32 @@ static void test_GetNextRunTime(void) memset(&st, 0xff, sizeof(st)); hr = ITask_GetNextRunTime(task, &st); ok(hr == SCHED_S_TASK_NO_VALID_TRIGGERS, "got %#x\n", hr); - ok(!memcmp(&st, &st_empty, sizeof(st)), "got %d/%d/%d wday %d %d:%d:%d.%03d\n", + ok(!memcmp(&st, &st_empty, sizeof(st)), "got %u/%u/%u wday %u %u:%02u:%02u\n", st.wDay, st.wMonth, st.wYear, st.wDayOfWeek, - st.wHour, st.wMinute, st.wSecond, st.wMilliseconds); + st.wHour, st.wMinute, st.wSecond); + + /* TASK_TIME_TRIGGER_ONCE */ + + hr = ITaskTrigger_GetTrigger(trigger, &data); + ok(hr == S_OK, "got %#x\n", hr); + data.rgFlags &= ~TASK_TRIGGER_FLAG_DISABLED; + data.TriggerType = TASK_TIME_TRIGGER_ONCE; + /* add 5 minutes to avoid races */ + trigger_add_ms(&data, 5 * 60 * 1000, &cmp); + hr = ITaskTrigger_SetTrigger(trigger, &data); + ok(hr == S_OK, "got %#x\n", hr); + + memset(&st, 0xff, sizeof(st)); + hr = ITask_GetNextRunTime(task, &st); + ok(hr == S_OK, "got %#x\n", hr); + ok(!memcmp(&st, &cmp, sizeof(st)), "got %u/%u/%u wday %u %u:%02u:%02u\n", + st.wDay, st.wMonth, st.wYear, st.wDayOfWeek, + st.wHour, st.wMinute, st.wSecond); + + /* FIXME: TASK_TIME_TRIGGER_DAILY */ + /* FIXME: TASK_TIME_TRIGGER_WEEKLY */ + /* FIXME: TASK_TIME_TRIGGER_MONTHLYDATE */ + /* FIXME: TASK_TIME_TRIGGER_MONTHLYDOW */ ITaskTrigger_Release(trigger); ITask_Release(task);
1
0
0
0
Alistair Leslie-Hughes : include: Add IMFReadWriteClassFactory interface.
by Alexandre Julliard
21 May '18
21 May '18
Module: wine Branch: master Commit: 62862b3574d8f2ec65b32b712c4c0628fe3f9a94 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=62862b3574d8f2ec65b32b71…
Author: Alistair Leslie-Hughes <leslie_alistair(a)hotmail.com> Date: Mon May 21 05:37:44 2018 +0000 include: Add IMFReadWriteClassFactory interface. Signed-off-by: Alistair Leslie-Hughes <leslie_alistair(a)hotmail.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- include/mfreadwrite.idl | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/include/mfreadwrite.idl b/include/mfreadwrite.idl index ad1cef6..8547b80 100644 --- a/include/mfreadwrite.idl +++ b/include/mfreadwrite.idl @@ -131,6 +131,20 @@ interface IMFSinkWriterEx : IMFSinkWriter [out] IMFTransform **transform); } +[ + object, + uuid(e7fe2e12-661c-40da-92f9-4f002ab67627), + local +] +interface IMFReadWriteClassFactory : IUnknown +{ + HRESULT CreateInstanceFromURL([in] REFCLSID clsid, [in] LPCWSTR url, [in] IMFAttributes *attributes, + [in] REFIID riid, [out, iid_is(riid)] void **object ); + + HRESULT CreateInstanceFromObject([in] REFCLSID clsid, [in] IUnknown *unk, [in] IMFAttributes *attributes, + [in] REFIID riid, [out, iid_is(riid)] void **object ); +} + cpp_quote( "HRESULT WINAPI MFCreateSourceReaderFromByteStream(IMFByteStream *stream, IMFAttributes *attributes," ) cpp_quote( " IMFSourceReader **reader);" ) cpp_quote( "HRESULT WINAPI MFCreateSourceReaderFromMediaSource(IMFMediaSource *source, IMFAttributes *attributes," )
1
0
0
0
← Newer
1
...
23
24
25
26
27
28
29
...
72
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
Results per page:
10
25
50
100
200