ReactOS.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
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
List overview
Download
Ros-diffs
April 2009
----- 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
ros-diffs@reactos.org
25 participants
476 discussions
Start a n
N
ew thread
[fireball] 40668: - Remove empty debug print.
by fireball@svn.reactos.org
Author: fireball Date: Thu Apr 23 16:54:37 2009 New Revision: 40668 URL:
http://svn.reactos.org/svn/reactos?rev=40668&view=rev
Log: - Remove empty debug print. Modified: trunk/reactos/boot/freeldr/freeldr/arch/i386/i386vid.c Modified: trunk/reactos/boot/freeldr/freeldr/arch/i386/i386vid.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/boot/freeldr/freeldr/arch/…
============================================================================== --- trunk/reactos/boot/freeldr/freeldr/arch/i386/i386vid.c [iso-8859-1] (original) +++ trunk/reactos/boot/freeldr/freeldr/arch/i386/i386vid.c [iso-8859-1] Thu Apr 23 16:54:37 2009 @@ -244,7 +244,5 @@ // } //} - DPRINTM(DPRINT_UI, "\n"); - return SvgaInfo->VesaVersion; }
15 years, 9 months
1
0
0
0
[janderwald] 40667: - Revert my SHOpenWithDialog changes
by janderwald@svn.reactos.org
Author: janderwald Date: Thu Apr 23 16:51:59 2009 New Revision: 40667 URL:
http://svn.reactos.org/svn/reactos?rev=40667&view=rev
Log: - Revert my SHOpenWithDialog changes Modified: trunk/reactos/dll/win32/shell32/shlexec.c Modified: trunk/reactos/dll/win32/shell32/shlexec.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/shlexec.…
============================================================================== --- trunk/reactos/dll/win32/shell32/shlexec.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/shell32/shlexec.c [iso-8859-1] Thu Apr 23 16:51:59 2009 @@ -1431,8 +1431,6 @@ WCHAR msg[2048]; int error_code=GetLastError(); - //FIXME - // call SHOpenWithDialog if (retval == SE_ERR_NOASSOC) LoadStringW(shell32_hInstance, IDS_SHLEXEC_NOASSOC, msg, sizeof(msg)/sizeof(WCHAR)); else @@ -1597,9 +1595,7 @@ Info.pcszClass = NULL; Info.oaifInFlags = OAIF_ALLOW_REGISTRATION | OAIF_EXEC; - if (SHOpenWithDialog(sei_tmp.hwnd, &Info)) - retval = 33; //FIXME - else + //if (SHOpenWithDialog(sei_tmp.hwnd, &Info) != S_OK) do_error_dialog(retval, sei_tmp.hwnd); } HeapFree(GetProcessHeap(), 0, wszApplicationName); @@ -1827,9 +1823,7 @@ Info.pcszClass = NULL; Info.oaifInFlags = OAIF_ALLOW_REGISTRATION | OAIF_EXEC; - if (SHOpenWithDialog(sei_tmp.hwnd, &Info)) - retval = 33; //FIXME - else + //if (SHOpenWithDialog(sei_tmp.hwnd, &Info) != S_OK) do_error_dialog(retval, sei_tmp.hwnd); }
15 years, 9 months
1
0
0
0
[janderwald] 40666: - Call OpenWith dialog when no file association is found - Partial wine syncAlexandre Julliard <julliard@winehq.org> shell32: Add implementation of WOWShellExecute. The callback is probably not fully compatible, but apps are not supposed to use that function anyway. Vincent Povirk <madewokherd+8cd9@gmail.com> shell32: Add a message for opening files with no association. Marcus Meissner <marcus@jet.franken.de> shell32: Fixed potential buffer overwrite in execute_from_key (Cove
by janderwald@svn.reactos.org
Author: janderwald Date: Thu Apr 23 16:39:11 2009 New Revision: 40666 URL:
http://svn.reactos.org/svn/reactos?rev=40666&view=rev
Log: - Call OpenWith dialog when no file association is found - Partial wine syncAlexandre Julliard <julliard(a)winehq.org> shell32: Add implementation of WOWShellExecute. The callback is probably not fully compatible, but apps are not supposed to use that function anyway. Vincent Povirk <madewokherd+8cd9(a)gmail.com> shell32: Add a message for opening files with no association. Marcus Meissner <marcus(a)jet.franken.de> shell32: Fixed potential buffer overwrite in execute_from_key (Coverity). Vincent Povirk <vincent(a)codeweavers.com> shell32: Use the NO_UI flag in ShellExecute. In my testing on Windows, I wasn't able to make ShellExecute display any error dialogs. Paul Chitescu <paulc(a)voip.null.ro> shell32.dll: Return SE_ERR_FNF if file not found before checking for associations. Modified: trunk/reactos/dll/win32/shell32/shell32_main.h trunk/reactos/dll/win32/shell32/shlexec.c trunk/reactos/dll/win32/shell32/shresdef.h trunk/reactos/dll/win32/shell32/stubs.c Modified: trunk/reactos/dll/win32/shell32/shell32_main.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/shell32_…
============================================================================== --- trunk/reactos/dll/win32/shell32/shell32_main.h [iso-8859-1] (original) +++ trunk/reactos/dll/win32/shell32/shell32_main.h [iso-8859-1] Thu Apr 23 16:39:11 2009 @@ -213,7 +213,7 @@ #define HINSTANCE_16(h32) (LOWORD(h32)) typedef UINT_PTR (*SHELL_ExecuteW32)(const WCHAR *lpCmd, WCHAR *env, BOOL shWait, - LPSHELLEXECUTEINFOW sei, LPSHELLEXECUTEINFOW sei_out); + const SHELLEXECUTEINFOW *sei, LPSHELLEXECUTEINFOW sei_out); BOOL SHELL_execute(LPSHELLEXECUTEINFOW sei, SHELL_ExecuteW32 execfunc); Modified: trunk/reactos/dll/win32/shell32/shlexec.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/shlexec.…
============================================================================== --- trunk/reactos/dll/win32/shell32/shlexec.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/shell32/shlexec.c [iso-8859-1] Thu Apr 23 16:39:11 2009 @@ -165,7 +165,7 @@ case 'I': if (pidl) { INT chars = 0; - /* %p should not exceed 8, maybe 16 when looking foward to 64bit. + /* %p should not exceed 8, maybe 16 when looking forward to 64bit. * allowing a buffer of 100 should more than exceed all needs */ WCHAR buf[100]; LPVOID pv; @@ -191,7 +191,7 @@ */ /* Make sure that we have at least one more %.*/ - if (wcschr(fmt, '%')) + if (strchrW(fmt, '%')) { WCHAR tmpBuffer[1024]; PWSTR tmpB = tmpBuffer; @@ -275,7 +275,7 @@ * */ static UINT_PTR SHELL_ExecuteW(const WCHAR *lpCmd, WCHAR *env, BOOL shWait, - LPSHELLEXECUTEINFOW psei, LPSHELLEXECUTEINFOW psei_out) + const SHELLEXECUTEINFOW *psei, LPSHELLEXECUTEINFOW psei_out) { STARTUPINFOW startup; PROCESS_INFORMATION info; @@ -664,9 +664,7 @@ } else { - /* Truncate on first space, like Windows: - *
http://support.microsoft.com/?scid=kb%3Ben-us%3B140724
- */ + /* Truncate on first space */ WCHAR *p = lpResult; while (*p != ' ' && *p != '\0') p++; @@ -728,10 +726,10 @@ * launching an application and trying (#2) to connect to it * */ -static unsigned dde_connect(WCHAR* key, const WCHAR* start, WCHAR* ddeexec, +static unsigned dde_connect(const WCHAR* key, const WCHAR* start, WCHAR* ddeexec, const WCHAR* lpFile, WCHAR *env, LPCWSTR szCommandline, LPITEMIDLIST pidl, SHELL_ExecuteW32 execfunc, - LPSHELLEXECUTEINFOW psei, LPSHELLEXECUTEINFOW psei_out) + const SHELLEXECUTEINFOW *psei, LPSHELLEXECUTEINFOW psei_out) { static const WCHAR wApplication[] = {'\\','a','p','p','l','i','c','a','t','i','o','n',0}; static const WCHAR wTopic[] = {'\\','t','o','p','i','c',0}; @@ -771,7 +769,7 @@ else { LPWSTR p,space; - for (p=(LPWSTR)start; (space=wcschr(p, ' ')); p=space+1) + for (p=(LPWSTR)start; (space=strchrW(p, ' ')); p=space+1) { int idx = space-start; memcpy(command, start, idx*sizeof(WCHAR)); @@ -796,7 +794,7 @@ !wcscmp(ptr, wSo)) *ptr = 0; - ptr = wcschr(app, '.'); + ptr = strrchrW(app, '.'); assert(ptr); *ptr = 0; } @@ -843,7 +841,7 @@ SetLastError(ERROR_DDE_FAIL); return 30; /* whatever */ } - wcscpy(endkey, wIfexec); + strcpyW(endkey, wIfexec); ifexeclen = sizeof(ifexec); if (RegQueryValueW(HKEY_CLASSES_ROOT, regkey, ifexec, &ifexeclen) == ERROR_SUCCESS) { @@ -860,7 +858,7 @@ * error DMLERR_NOTPROCESSED on XTYP_EXECUTE request. */ if (unicode) - hDdeData = DdeClientTransaction((LPBYTE)res, (wcslen(res) + 1) * sizeof(WCHAR), hConv, 0L, 0, + hDdeData = DdeClientTransaction((LPBYTE)res, (strlenW(res) + 1) * sizeof(WCHAR), hConv, 0L, 0, XTYP_EXECUTE, 30000, &tid); else { @@ -888,7 +886,7 @@ /************************************************************************* * execute_from_key [Internal] */ -static UINT_PTR execute_from_key(LPWSTR key, LPCWSTR lpFile, WCHAR *env, LPCWSTR szCommandline, +static UINT_PTR execute_from_key(LPCWSTR key, LPCWSTR lpFile, WCHAR *env, LPCWSTR szCommandline, LPCWSTR executable_name, SHELL_ExecuteW32 execfunc, LPSHELLEXECUTEINFOW psei, LPSHELLEXECUTEINFOW psei_out) @@ -914,8 +912,8 @@ /* Is there a replace() function anywhere? */ cmdlen /= sizeof(WCHAR); - if (cmdlen >= sizeof(cmd)/sizeof(WCHAR)) - cmdlen = sizeof(cmd)/sizeof(WCHAR)-1; + if (cmdlen >= sizeof(cmd)/sizeof(WCHAR)) + cmdlen = sizeof(cmd)/sizeof(WCHAR)-1; cmd[cmdlen] = '\0'; SHELL_ArgifyW(param, sizeof(param)/sizeof(WCHAR), cmd, lpFile, psei->lpIDList, szCommandline, &resultLen); if (resultLen > sizeof(param)/sizeof(WCHAR)) @@ -924,14 +922,14 @@ /* Get the parameters needed by the application from the associated ddeexec key */ - tmp = wcsstr(key, wCommand); + tmp = strstrW(key, wCommand); assert(tmp); wcscpy(tmp, wDdeexec); if (RegQueryValueW(HKEY_CLASSES_ROOT, key, ddeexec, &ddeexeclen) == ERROR_SUCCESS) { TRACE("Got ddeexec %s => %s\n", debugstr_w(key), debugstr_w(ddeexec)); - if (!param[0]) wcscpy(param, executable_name); + if (!param[0]) strcpyW(param, executable_name); retval = dde_connect(key, param, ddeexec, lpFile, env, szCommandline, psei->lpIDList, execfunc, psei, psei_out); } else if (param[0]) @@ -1017,7 +1015,7 @@ } /* FIXME: is this already implemented somewhere else? */ -static HKEY ShellExecute_GetClassKey( LPSHELLEXECUTEINFOW sei ) +static HKEY ShellExecute_GetClassKey( const SHELLEXECUTEINFOW *sei ) { LPCWSTR ext = NULL, lpClass = NULL; LPWSTR cls = NULL; @@ -1078,10 +1076,11 @@ else { WCHAR fullpath[MAX_PATH]; + BOOL ret; fullpath[0] = 0; - r = GetFullPathNameW( sei->lpFile, MAX_PATH, fullpath, NULL ); - if (!r) + ret = GetFullPathNameW( sei->lpFile, MAX_PATH, fullpath, NULL ); + if (!ret) goto end; pidl = ILCreateFromPathW( fullpath ); @@ -1272,25 +1271,196 @@ return r; } +static UINT_PTR SHELL_execute_class( LPCWSTR wszApplicationName, LPSHELLEXECUTEINFOW psei, LPSHELLEXECUTEINFOW psei_out, SHELL_ExecuteW32 execfunc ) +{ + static const WCHAR wSpace[] = {' ',0}; + WCHAR execCmd[1024], wcmd[1024]; + /* launch a document by fileclass like 'WordPad.Document.1' */ + /* the Commandline contains 'c:\Path\wordpad.exe "%1"' */ + /* FIXME: wcmd should not be of a fixed size. Fixed to 1024, MAX_PATH is way too short! */ + ULONG cmask=(psei->fMask & SEE_MASK_CLASSALL); + DWORD resultLen; + BOOL done; + + HCR_GetExecuteCommandW((cmask == SEE_MASK_CLASSKEY) ? psei->hkeyClass : NULL, + (cmask == SEE_MASK_CLASSNAME) ? psei->lpClass: NULL, + psei->lpVerb, + execCmd, sizeof(execCmd)); + + /* FIXME: get the extension of lpFile, check if it fits to the lpClass */ + TRACE("SEE_MASK_CLASSNAME->%s, doc->%s\n", debugstr_w(execCmd), debugstr_w(wszApplicationName)); + + wcmd[0] = '\0'; + done = SHELL_ArgifyW(wcmd, sizeof(wcmd)/sizeof(WCHAR), execCmd, wszApplicationName, psei->lpIDList, NULL, &resultLen); + if (!done && wszApplicationName[0]) + { + strcatW(wcmd, wSpace); + strcatW(wcmd, wszApplicationName); + } + if (resultLen > sizeof(wcmd)/sizeof(WCHAR)) + ERR("Argify buffer not large enough... truncating\n"); + return execfunc(wcmd, NULL, FALSE, psei, psei_out); +} + +static BOOL SHELL_translate_idlist( LPSHELLEXECUTEINFOW sei, LPWSTR wszParameters, DWORD parametersLen, LPWSTR wszApplicationName, DWORD dwApplicationNameLen ) +{ + static const WCHAR wExplorer[] = {'e','x','p','l','o','r','e','r','.','e','x','e',0}; + WCHAR buffer[MAX_PATH]; + BOOL appKnownSingular = FALSE; + + /* last chance to translate IDList: now also allow CLSID paths */ + if (SUCCEEDED(SHELL_GetPathFromIDListForExecuteW(sei->lpIDList, buffer, sizeof(buffer)))) { + if (buffer[0]==':' && buffer[1]==':') { + /* open shell folder for the specified class GUID */ + if (strlenW(buffer) + 1 > parametersLen) + ERR("parameters len exceeds buffer size (%i > %i), truncating\n", + lstrlenW(buffer) + 1, parametersLen); + lstrcpynW(wszParameters, buffer, parametersLen); + if (strlenW(wExplorer) > dwApplicationNameLen) + ERR("application len exceeds buffer size (%i > %i), truncating\n", + lstrlenW(wExplorer) + 1, dwApplicationNameLen); + lstrcpynW(wszApplicationName, wExplorer, dwApplicationNameLen); + appKnownSingular = TRUE; + + sei->fMask &= ~SEE_MASK_INVOKEIDLIST; + } else { + WCHAR target[MAX_PATH]; + DWORD attribs; + DWORD resultLen; + /* Check if we're executing a directory and if so use the + handler for the Folder class */ + strcpyW(target, buffer); + attribs = GetFileAttributesW(buffer); + if (attribs != INVALID_FILE_ATTRIBUTES && + (attribs & FILE_ATTRIBUTE_DIRECTORY) && + HCR_GetExecuteCommandW(0, wszFolder, + sei->lpVerb, + buffer, sizeof(buffer))) { + SHELL_ArgifyW(wszApplicationName, dwApplicationNameLen, + buffer, target, sei->lpIDList, NULL, &resultLen); + if (resultLen > dwApplicationNameLen) + ERR("Argify buffer not large enough... truncating\n"); + appKnownSingular = FALSE; + } + sei->fMask &= ~SEE_MASK_INVOKEIDLIST; + } + } + return appKnownSingular; +} + +static UINT_PTR SHELL_quote_and_execute( LPCWSTR wcmd, LPCWSTR wszParameters, LPCWSTR lpstrProtocol, LPCWSTR wszApplicationName, LPWSTR env, LPSHELLEXECUTEINFOW psei, LPSHELLEXECUTEINFOW psei_out, SHELL_ExecuteW32 execfunc ) +{ + static const WCHAR wQuote[] = {'"',0}; + static const WCHAR wSpace[] = {' ',0}; + UINT_PTR retval; + DWORD len; + WCHAR *wszQuotedCmd; + + /* Length of quotes plus length of command plus NULL terminator */ + len = 2 + lstrlenW(wcmd) + 1; + if (wszParameters[0]) + { + /* Length of space plus length of parameters */ + len += 1 + lstrlenW(wszParameters); + } + wszQuotedCmd = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR)); + /* Must quote to handle case where cmd contains spaces, + * else security hole if malicious user creates executable file "C:\\Program" + */ + strcpyW(wszQuotedCmd, wQuote); + strcatW(wszQuotedCmd, wcmd); + strcatW(wszQuotedCmd, wQuote); + if (wszParameters[0]) { + strcatW(wszQuotedCmd, wSpace); + strcatW(wszQuotedCmd, wszParameters); + } + TRACE("%s/%s => %s/%s\n", debugstr_w(wszApplicationName), debugstr_w(psei->lpVerb), debugstr_w(wszQuotedCmd), debugstr_w(lpstrProtocol)); + if (*lpstrProtocol) + retval = execute_from_key(lpstrProtocol, wszApplicationName, env, psei->lpParameters, wcmd, execfunc, psei, psei_out); + else + retval = execfunc(wszQuotedCmd, env, FALSE, psei, psei_out); + HeapFree(GetProcessHeap(), 0, wszQuotedCmd); + return retval; +} + +static UINT_PTR SHELL_execute_url( LPCWSTR lpFile, LPCWSTR wFile, LPCWSTR wcmd, LPSHELLEXECUTEINFOW psei, LPSHELLEXECUTEINFOW psei_out, SHELL_ExecuteW32 execfunc ) +{ + static const WCHAR wShell[] = {'\\','s','h','e','l','l','\\',0}; + static const WCHAR wCommand[] = {'\\','c','o','m','m','a','n','d',0}; + UINT_PTR retval; + WCHAR *lpstrProtocol; + LPCWSTR lpstrRes; + INT iSize; + DWORD len; + + lpstrRes = strchrW(lpFile, ':'); + if (lpstrRes) + iSize = lpstrRes - lpFile; + else + iSize = strlenW(lpFile); + + TRACE("Got URL: %s\n", debugstr_w(lpFile)); + /* Looking for ...protocol\shell\lpOperation\command */ + len = iSize + lstrlenW(wShell) + lstrlenW(wCommand) + 1; + if (psei->lpVerb) + len += lstrlenW(psei->lpVerb); + else + len += lstrlenW(wszOpen); + lpstrProtocol = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR)); + memcpy(lpstrProtocol, lpFile, iSize*sizeof(WCHAR)); + lpstrProtocol[iSize] = '\0'; + strcatW(lpstrProtocol, wShell); + strcatW(lpstrProtocol, psei->lpVerb? psei->lpVerb: wszOpen); + strcatW(lpstrProtocol, wCommand); + + /* Remove File Protocol from lpFile */ + /* In the case file://path/file */ + if (!strncmpiW(lpFile, wFile, iSize)) + { + lpFile += iSize; + while (*lpFile == ':') lpFile++; + } + retval = execute_from_key(lpstrProtocol, lpFile, NULL, psei->lpParameters, + wcmd, execfunc, psei, psei_out); + HeapFree(GetProcessHeap(), 0, lpstrProtocol); + return retval; +} + +void do_error_dialog( UINT_PTR retval, HWND hwnd ) +{ + WCHAR msg[2048]; + int error_code=GetLastError(); + + //FIXME + // call SHOpenWithDialog + if (retval == SE_ERR_NOASSOC) + LoadStringW(shell32_hInstance, IDS_SHLEXEC_NOASSOC, msg, sizeof(msg)/sizeof(WCHAR)); + else + FormatMessageW(FORMAT_MESSAGE_FROM_SYSTEM, NULL, error_code, 0, msg, sizeof(msg)/sizeof(WCHAR), NULL); + + MessageBoxW(hwnd, msg, NULL, MB_ICONERROR); +} + /************************************************************************* * SHELL_execute [Internal] */ BOOL SHELL_execute( LPSHELLEXECUTEINFOW sei, SHELL_ExecuteW32 execfunc ) { - static const WCHAR wQuote[] = {'"',0}; static const WCHAR wSpace[] = {' ',0}; static const WCHAR wWww[] = {'w','w','w',0}; static const WCHAR wFile[] = {'f','i','l','e',0}; static const WCHAR wHttp[] = {'h','t','t','p',':','/','/',0}; - static const WCHAR wExplorer[] = {'e','x','p','l','o','r','e','r','.','e','x','e',0}; - //static const WCHAR wProperties[] = { 'p','r','o','p','e','r','t','i','e','s',0 }; static const DWORD unsupportedFlags = - SEE_MASK_INVOKEIDLIST | SEE_MASK_HOTKEY | - SEE_MASK_CONNECTNETDRV | SEE_MASK_FLAG_DDEWAIT | SEE_MASK_FLAG_NO_UI | + SEE_MASK_INVOKEIDLIST | SEE_MASK_ICON | SEE_MASK_HOTKEY | + SEE_MASK_CONNECTNETDRV | SEE_MASK_FLAG_DDEWAIT | SEE_MASK_UNICODE | SEE_MASK_ASYNCOK | SEE_MASK_HMONITOR; - WCHAR *wszApplicationName, wszParameters[1024], wszDir[MAX_PATH]; + WCHAR parametersBuffer[1024], dirBuffer[MAX_PATH], wcmdBuffer[1024]; + WCHAR *wszApplicationName, *wszParameters, *wszDir, *wcmd; DWORD dwApplicationNameLen = MAX_PATH+2; + DWORD parametersLen = sizeof(parametersBuffer) / sizeof(WCHAR); + DWORD dirLen = sizeof(dirBuffer) / sizeof(WCHAR); + DWORD wcmdLen = sizeof(wcmdBuffer) / sizeof(WCHAR); DWORD len; SHELLEXECUTEINFOW sei_tmp; /* modifiable copy of SHELLEXECUTEINFO struct */ WCHAR wfileName[MAX_PATH]; @@ -1298,13 +1468,10 @@ WCHAR lpstrProtocol[256]; LPCWSTR lpFile; UINT_PTR retval = SE_ERR_NOASSOC; - WCHAR wcmd[1024]; - WCHAR buffer[MAX_PATH]; - BOOL done; BOOL appKnownSingular = FALSE; /* make a local copy of the LPSHELLEXECUTEINFO structure and work with this from now on */ - memcpy(&sei_tmp, sei, sizeof(sei_tmp)); + sei_tmp = *sei; TRACE("mask=0x%08x hwnd=%p verb=%s file=%s parm=%s dir=%s show=0x%08x class=%s\n", sei_tmp.fMask, sei_tmp.hwnd, debugstr_w(sei_tmp.lpVerb), @@ -1323,7 +1490,7 @@ } else if (*sei_tmp.lpFile == '\"') { - DWORD l = wcslen(sei_tmp.lpFile+1); + DWORD l = strlenW(sei_tmp.lpFile+1); if(l >= dwApplicationNameLen) dwApplicationNameLen = l+1; wszApplicationName = HeapAlloc(GetProcessHeap(), 0, dwApplicationNameLen*sizeof(WCHAR)); memcpy(wszApplicationName, sei_tmp.lpFile+1, (l+1)*sizeof(WCHAR)); @@ -1332,19 +1499,37 @@ appKnownSingular = TRUE; TRACE("wszApplicationName=%s\n",debugstr_w(wszApplicationName)); } else { - DWORD l = wcslen(sei_tmp.lpFile)+1; + DWORD l = strlenW(sei_tmp.lpFile)+1; if(l > dwApplicationNameLen) dwApplicationNameLen = l+1; wszApplicationName = HeapAlloc(GetProcessHeap(), 0, dwApplicationNameLen*sizeof(WCHAR)); memcpy(wszApplicationName, sei_tmp.lpFile, l*sizeof(WCHAR)); } + wszParameters = parametersBuffer; if (sei_tmp.lpParameters) - wcscpy(wszParameters, sei_tmp.lpParameters); + { + len = lstrlenW(sei_tmp.lpParameters) + 1; + if (len > parametersLen) + { + wszParameters = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR)); + parametersLen = len; + } + strcpyW(wszParameters, sei_tmp.lpParameters); + } else *wszParameters = '\0'; + wszDir = dirBuffer; if (sei_tmp.lpDirectory) - wcscpy(wszDir, sei_tmp.lpDirectory); + { + len = lstrlenW(sei_tmp.lpDirectory) + 1; + if (len > dirLen) + { + wszDir = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR)); + dirLen = len; + } + strcpyW(wszDir, sei_tmp.lpDirectory); + } else *wszDir = '\0'; @@ -1367,12 +1552,16 @@ if (SUCCEEDED(hr)) { - hr = pSEH->lpVtbl->Execute(pSEH, &sei_tmp); - - pSEH->lpVtbl->Release(pSEH); + hr = IShellExecuteHookW_Execute(pSEH, &sei_tmp); + + IShellExecuteHookW_Release(pSEH); if (hr == S_OK) { HeapFree(GetProcessHeap(), 0, wszApplicationName); + if (wszParameters != parametersBuffer) + HeapFree(GetProcessHeap(), 0, wszParameters); + if (wszDir != dirBuffer) + HeapFree(GetProcessHeap(), 0, wszDir); return TRUE; } } @@ -1386,80 +1575,48 @@ { sei->hInstApp = (HINSTANCE) 33; HeapFree(GetProcessHeap(), 0, wszApplicationName); + if (wszParameters != parametersBuffer) + HeapFree(GetProcessHeap(), 0, wszParameters); + if (wszDir != dirBuffer) + HeapFree(GetProcessHeap(), 0, wszDir); return TRUE; } -#if 0 - if (sei_tmp.lpVerb && !wcscmp(sei_tmp.lpVerb, wProperties)) - { - SH_ShowPropertiesDialog(sei_tmp.lpFile); - sei->hInstApp = (HINSTANCE) 33; - return TRUE; - } -#endif + if (sei_tmp.fMask & SEE_MASK_CLASSALL) { - /* launch a document by fileclass like 'WordPad.Document.1' */ - /* the Commandline contains 'c:\Path\wordpad.exe "%1"' */ - /* FIXME: szCommandline should not be of a fixed size. Fixed to 1024, MAX_PATH is way too short! */ - ULONG cmask=(sei_tmp.fMask & SEE_MASK_CLASSALL); - DWORD resultLen; - HCR_GetExecuteCommandW((cmask == SEE_MASK_CLASSKEY) ? sei_tmp.hkeyClass : NULL, - (cmask == SEE_MASK_CLASSNAME) ? sei_tmp.lpClass: NULL, - sei_tmp.lpVerb, - wszParameters, sizeof(wszParameters)/sizeof(WCHAR)); - - /* FIXME: get the extension of lpFile, check if it fits to the lpClass */ - TRACE("SEE_MASK_CLASSNAME->%s, doc->%s\n", debugstr_w(wszParameters), debugstr_w(wszApplicationName)); - - wcmd[0] = '\0'; - done = SHELL_ArgifyW(wcmd, sizeof(wcmd)/sizeof(WCHAR), wszParameters, wszApplicationName, sei_tmp.lpIDList, NULL, &resultLen); - if (!done && wszApplicationName[0]) - { - wcscat(wcmd, wSpace); - wcscat(wcmd, wszApplicationName); - } - if (resultLen > sizeof(wcmd)/sizeof(WCHAR)) - ERR("Argify buffer not large enough... truncating\n"); - retval = execfunc(wcmd, NULL, FALSE, &sei_tmp, sei); - + retval = SHELL_execute_class( wszApplicationName, &sei_tmp, sei, + execfunc ); + if (retval <= 32 && !(sei_tmp.fMask & SEE_MASK_FLAG_NO_UI)) + { + OPENASINFO Info; + + //FIXME + // need full path + + Info.pcszFile = wszApplicationName; + Info.pcszClass = NULL; + Info.oaifInFlags = OAIF_ALLOW_REGISTRATION | OAIF_EXEC; + + if (SHOpenWithDialog(sei_tmp.hwnd, &Info)) + retval = 33; //FIXME + else + do_error_dialog(retval, sei_tmp.hwnd); + } HeapFree(GetProcessHeap(), 0, wszApplicationName); + if (wszParameters != parametersBuffer) + HeapFree(GetProcessHeap(), 0, wszParameters); + if (wszDir != dirBuffer) + HeapFree(GetProcessHeap(), 0, wszDir); return retval > 32; } /* Has the IDList not yet been translated? */ if (sei_tmp.fMask & SEE_MASK_IDLIST) { - /* last chance to translate IDList: now also allow CLSID paths */ - if (SUCCEEDED(SHELL_GetPathFromIDListForExecuteW(sei_tmp.lpIDList, buffer, sizeof(buffer)))) { - if (buffer[0]==':' && buffer[1]==':') { - /* open shell folder for the specified class GUID */ - wcscpy(wszParameters, buffer); - wcscpy(wszApplicationName, wExplorer); - appKnownSingular = TRUE; - - sei_tmp.fMask &= ~SEE_MASK_INVOKEIDLIST; - } else { - WCHAR target[MAX_PATH]; - DWORD attribs; - DWORD resultLen; - /* Check if we're executing a directory and if so use the - handler for the Folder class */ - wcscpy(target, buffer); - attribs = GetFileAttributesW(buffer); - if (attribs != INVALID_FILE_ATTRIBUTES && - (attribs & FILE_ATTRIBUTE_DIRECTORY) && - HCR_GetExecuteCommandW(0, wszFolder, - sei_tmp.lpVerb, - buffer, sizeof(buffer))) { - SHELL_ArgifyW(wszApplicationName, dwApplicationNameLen, - buffer, target, sei_tmp.lpIDList, NULL, &resultLen); - if (resultLen > dwApplicationNameLen) - ERR("Argify buffer not large enough... truncating\n"); - appKnownSingular = FALSE; - } - sei_tmp.fMask &= ~SEE_MASK_INVOKEIDLIST; - } - } + appKnownSingular = SHELL_translate_idlist( &sei_tmp, wszParameters, + parametersLen, + wszApplicationName, + dwApplicationNameLen ); } /* expand environment strings */ @@ -1487,10 +1644,11 @@ len++; buf = HeapAlloc(GetProcessHeap(),0,len*sizeof(WCHAR)); ExpandEnvironmentStringsW(sei_tmp.lpParameters, buf, len); - if (len > 1024) - ERR("Parameters exceeds buffer size (%i > 1024)\n",len); - lstrcpynW(wszParameters, buf, min(1024,len)); - HeapFree(GetProcessHeap(),0,buf); + if (wszParameters != parametersBuffer) + HeapFree(GetProcessHeap(), 0, wszParameters); + wszParameters = buf; + parametersLen = len; + sei_tmp.lpParameters = wszParameters; } } @@ -1503,10 +1661,10 @@ len++; buf = HeapAlloc(GetProcessHeap(),0,len*sizeof(WCHAR)); ExpandEnvironmentStringsW(sei_tmp.lpDirectory, buf, len); - if (len > 1024) - ERR("Directory exceeds buffer size (%i > 1024)\n",len); - lstrcpynW(wszDir, buf, min(1024,len)); - HeapFree(GetProcessHeap(),0,buf); + if (wszDir != dirBuffer) + HeapFree(GetProcessHeap(), 0, wszDir); + wszDir = buf; + sei_tmp.lpDirectory = wszDir; } } @@ -1536,7 +1694,7 @@ end = src; /* copy the parameter string to 'wszParameters' */ - wcscpy(wszParameters, src); + strcpyW(wszParameters, src); /* terminate previous command string after the quote character */ *end = '\0'; @@ -1549,114 +1707,142 @@ LPWSTR space, s; LPWSTR beg = wszApplicationName/*sei_tmp.lpFile*/; - for(s=beg; (space=wcschr(s, ' ')); s=space+1) { + for(s=beg; (space=strchrW(s, ' ')); s=space+1) { int idx = space-sei_tmp.lpFile; memcpy(buffer, sei_tmp.lpFile, idx * sizeof(WCHAR)); buffer[idx] = '\0'; /*FIXME This finds directory paths if the targeted file name contains spaces. */ - if (SearchPathW(*sei_tmp.lpDirectory? sei_tmp.lpDirectory: NULL, buffer, wszExe, sizeof(xlpFile), xlpFile, NULL)) + if (SearchPathW(*sei_tmp.lpDirectory? sei_tmp.lpDirectory: NULL, buffer, wszExe, sizeof(xlpFile)/sizeof(xlpFile[0]), xlpFile, NULL)) { /* separate out command from parameter string */ LPCWSTR p = space + 1; - while(iswspace(*p)) + while(isspaceW(*p)) ++p; - wcscpy(wszParameters, p); + strcpyW(wszParameters, p); *space = '\0'; break; } } - wcscpy(wfileName, sei_tmp.lpFile); + lstrcpynW(wfileName, sei_tmp.lpFile,sizeof(wfileName)/sizeof(WCHAR)); } } else - wcscpy(wfileName, sei_tmp.lpFile); + lstrcpynW(wfileName, sei_tmp.lpFile,sizeof(wfileName)/sizeof(WCHAR)); lpFile = wfileName; - wcscpy(wcmd, wszApplicationName); + wcmd = wcmdBuffer; + len = lstrlenW(wszApplicationName) + 1; + if (sei_tmp.lpParameters[0]) + len += 1 + lstrlenW(wszParameters); + if (len > wcmdLen) + { + wcmd = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR)); + wcmdLen = len; + } + strcpyW(wcmd, wszApplicationName); if (sei_tmp.lpParameters[0]) { - wcscat(wcmd, wSpace); - wcscat(wcmd, wszParameters); + strcatW(wcmd, wSpace); + strcatW(wcmd, wszParameters); } retval = execfunc(wcmd, NULL, FALSE, &sei_tmp, sei); if (retval > 32) { HeapFree(GetProcessHeap(), 0, wszApplicationName); + if (wszParameters != parametersBuffer) + HeapFree(GetProcessHeap(), 0, wszParameters); + if (wszDir != dirBuffer) + HeapFree(GetProcessHeap(), 0, wszDir); + if (wcmd != wcmdBuffer) + HeapFree(GetProcessHeap(), 0, wcmd); return TRUE; } /* Else, try to find the executable */ wcmd[0] = '\0'; - retval = SHELL_FindExecutable(sei_tmp.lpDirectory, lpFile, sei_tmp.lpVerb, wcmd, 1024, lpstrProtocol, &env, sei_tmp.lpIDList, sei_tmp.lpParameters); + retval = SHELL_FindExecutable(sei_tmp.lpDirectory, lpFile, sei_tmp.lpVerb, wcmd, wcmdLen, lpstrProtocol, &env, sei_tmp.lpIDList, sei_tmp.lpParameters); if (retval > 32) /* Found */ { - WCHAR wszQuotedCmd[MAX_PATH+2]; - /* Must quote to handle case where cmd contains spaces, - * else security hole if malicious user creates executable file "C:\\Program" - */ - wcscpy(wszQuotedCmd, wQuote); - wcscat(wszQuotedCmd, wcmd); - wcscat(wszQuotedCmd, wQuote); - if (wszParameters[0]) { - wcscat(wszQuotedCmd, wSpace); - wcscat(wszQuotedCmd, wszParameters); - } - TRACE("%s/%s => %s/%s\n", debugstr_w(wszApplicationName), debugstr_w(sei_tmp.lpVerb), debugstr_w(wszQuotedCmd), debugstr_w(lpstrProtocol)); - if (*lpstrProtocol) - retval = execute_from_key(lpstrProtocol, wszApplicationName, env, sei_tmp.lpParameters, wcmd, execfunc, &sei_tmp, sei); + retval = SHELL_quote_and_execute( wcmd, wszParameters, lpstrProtocol, + wszApplicationName, env, &sei_tmp, + sei, execfunc ); + HeapFree( GetProcessHeap(), 0, env ); + } + else if (PathIsDirectoryW(lpFile)) + { + static const WCHAR wExplorer[] = {'e','x','p','l','o','r','e','r',0}; + static const WCHAR wQuote[] = {'"',0}; + WCHAR wExec[MAX_PATH]; + WCHAR * lpQuotedFile = HeapAlloc( GetProcessHeap(), 0, sizeof(WCHAR) * (strlenW(lpFile) + 3) ); + + if (lpQuotedFile) + { + retval = SHELL_FindExecutable( sei_tmp.lpDirectory, wExplorer, + wszOpen, wExec, MAX_PATH, + NULL, &env, NULL, NULL ); + if (retval > 32) + { + strcpyW(lpQuotedFile, wQuote); + strcatW(lpQuotedFile, lpFile); + strcatW(lpQuotedFile, wQuote); + retval = SHELL_quote_and_execute( wExec, lpQuotedFile, + lpstrProtocol, + wszApplicationName, env, + &sei_tmp, sei, execfunc ); + HeapFree( GetProcessHeap(), 0, env ); + } + HeapFree( GetProcessHeap(), 0, lpQuotedFile ); + } else - retval = execfunc(wszQuotedCmd, env, FALSE, &sei_tmp, sei); - HeapFree( GetProcessHeap(), 0, env ); + retval = 0; /* Out of memory */ } else if (PathIsURLW(lpFile)) /* File not found, check for URL */ { - static const WCHAR wShell[] = {'\\','s','h','e','l','l','\\',0}; - static const WCHAR wCommand[] = {'\\','c','o','m','m','a','n','d',0}; - LPWSTR lpstrRes; - INT iSize; - - lpstrRes = wcschr(lpFile, ':'); - if (lpstrRes) - iSize = lpstrRes - lpFile; - else - iSize = wcslen(lpFile); - - TRACE("Got URL: %s\n", debugstr_w(lpFile)); - /* Looking for ...protocol\shell\lpOperation\command */ - memcpy(lpstrProtocol, lpFile, iSize*sizeof(WCHAR)); - lpstrProtocol[iSize] = '\0'; - wcscat(lpstrProtocol, wShell); - wcscat(lpstrProtocol, sei_tmp.lpVerb? sei_tmp.lpVerb: wszOpen); - wcscat(lpstrProtocol, wCommand); - - /* Remove File Protocol from lpFile */ - /* In the case file://path/file */ - if (!_wcsnicmp(lpFile, wFile, iSize)) - { - lpFile += iSize; - while (*lpFile == ':') lpFile++; - } - retval = execute_from_key(lpstrProtocol, lpFile, NULL, sei_tmp.lpParameters, wcmd, execfunc, &sei_tmp, sei); + retval = SHELL_execute_url( lpFile, wFile, wcmd, &sei_tmp, sei, execfunc ); } /* Check if file specified is in the form
www.??????.***
*/ - else if (!_wcsnicmp(lpFile, wWww, 3)) + else if (!strncmpiW(lpFile, wWww, 3)) { /* if so, append lpFile http:// and call ShellExecute */ WCHAR lpstrTmpFile[256]; - wcscpy(lpstrTmpFile, wHttp); - wcscat(lpstrTmpFile, lpFile); + strcpyW(lpstrTmpFile, wHttp); + strcatW(lpstrTmpFile, lpFile); retval = (UINT_PTR)ShellExecuteW(sei_tmp.hwnd, sei_tmp.lpVerb, lpstrTmpFile, NULL, NULL, 0); } TRACE("retval %lu\n", retval); + if (retval <= 32 && !(sei_tmp.fMask & SEE_MASK_FLAG_NO_UI)) + { + OPENASINFO Info; + + //FIXME + // need full path + + Info.pcszFile = wszApplicationName; + Info.pcszClass = NULL; + Info.oaifInFlags = OAIF_ALLOW_REGISTRATION | OAIF_EXEC; + + if (SHOpenWithDialog(sei_tmp.hwnd, &Info)) + retval = 33; //FIXME + else + do_error_dialog(retval, sei_tmp.hwnd); + } + HeapFree(GetProcessHeap(), 0, wszApplicationName); + if (wszParameters != parametersBuffer) + HeapFree(GetProcessHeap(), 0, wszParameters); + if (wszDir != dirBuffer) + HeapFree(GetProcessHeap(), 0, wszDir); + if (wcmd != wcmdBuffer) + HeapFree(GetProcessHeap(), 0, wcmd); sei->hInstApp = (HINSTANCE)(retval > 32 ? 33 : retval); + return retval > 32; } @@ -1673,7 +1859,7 @@ debugstr_a(lpParameters), debugstr_a(lpDirectory), iShowCmd); sei.cbSize = sizeof(sei); - sei.fMask = 0; + sei.fMask = SEE_MASK_FLAG_NO_UI; sei.hwnd = hWnd; sei.lpVerb = lpOperation; sei.lpFile = lpFile; @@ -1759,7 +1945,7 @@ TRACE("\n"); sei.cbSize = sizeof(sei); - sei.fMask = 0; + sei.fMask = SEE_MASK_FLAG_NO_UI; sei.hwnd = hwnd; sei.lpVerb = lpOperation; sei.lpFile = lpFile; @@ -1777,6 +1963,42 @@ } /************************************************************************* + * WOWShellExecute [SHELL32.@] + * + * FIXME: the callback function most likely doesn't work the same way on Windows. + */ +HINSTANCE WINAPI WOWShellExecute(HWND hWnd, LPCSTR lpOperation,LPCSTR lpFile, + LPCSTR lpParameters,LPCSTR lpDirectory, INT iShowCmd, void *callback) +{ + SHELLEXECUTEINFOW seiW; + WCHAR *wVerb = NULL, *wFile = NULL, *wParameters = NULL, *wDirectory = NULL; + HANDLE hProcess = 0; + + seiW.lpVerb = lpOperation ? __SHCloneStrAtoW(&wVerb, lpOperation) : NULL; + seiW.lpFile = lpFile ? __SHCloneStrAtoW(&wFile, lpFile) : NULL; + seiW.lpParameters = lpParameters ? __SHCloneStrAtoW(&wParameters, lpParameters) : NULL; + seiW.lpDirectory = lpDirectory ? __SHCloneStrAtoW(&wDirectory, lpDirectory) : NULL; + + seiW.cbSize = sizeof(seiW); + seiW.fMask = 0; + seiW.hwnd = hWnd; + seiW.nShow = iShowCmd; + seiW.lpIDList = 0; + seiW.lpClass = 0; + seiW.hkeyClass = 0; + seiW.dwHotKey = 0; + seiW.hProcess = hProcess; + + SHELL_execute( &seiW, callback ); + + SHFree(wVerb); + SHFree(wFile); + SHFree(wParameters); + SHFree(wDirectory); + return seiW.hInstApp; +} + +/************************************************************************* * OpenAs_RunDLLA [SHELL32.@] */ void WINAPI OpenAs_RunDLLA(HWND hwnd, HINSTANCE hinst, LPCSTR cmdline, int cmdshow) Modified: trunk/reactos/dll/win32/shell32/shresdef.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/shresdef…
============================================================================== --- trunk/reactos/dll/win32/shell32/shresdef.h [iso-8859-1] (original) +++ trunk/reactos/dll/win32/shell32/shresdef.h [iso-8859-1] Thu Apr 23 16:39:11 2009 @@ -135,6 +135,8 @@ #define IDS_LNK_FILE 170 #define IDS_SYS_FILE 171 #define IDS_EMPTY_BITBUCKET 172 +#define IDS_SHLEXEC_NOASSOC 173 + #define IDS_OPEN_VERB 300 #define IDS_RUNAS_VERB 301 #define IDS_EDIT_VERB 302 @@ -165,6 +167,7 @@ #define IDS_FORMATDRIVE 327 #define IDS_RENAME 328 #define IDS_INSERT 329 +#define IDS_DESCRIPTION 330 /* Note: this string is referenced from the registry */ #define IDS_RECYCLEBIN_FOLDER_NAME 8964 Modified: trunk/reactos/dll/win32/shell32/stubs.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/stubs.c?…
============================================================================== --- trunk/reactos/dll/win32/shell32/stubs.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/shell32/stubs.c [iso-8859-1] Thu Apr 23 16:39:11 2009 @@ -409,23 +409,6 @@ { FIXME("RealDriveTypeFlags() stub\n"); return 1; -} - -/* - * Unimplemented - */ -HINSTANCE -WINAPI -WOWShellExecute(HWND hwnd, - LPCWSTR lpOperation, - LPCWSTR lpFile, - LPCWSTR lpParameters, - LPCWSTR lpDirectory, - INT nShowCmd, - void *lpfnCBWinExec) -{ - FIXME("WOWShellExecute() stub\n"); - return NULL; } /*
15 years, 9 months
1
0
0
0
[janderwald] 40665: - Re-dispatch irp to the default handler
by janderwald@svn.reactos.org
Author: janderwald Date: Thu Apr 23 15:16:15 2009 New Revision: 40665 URL:
http://svn.reactos.org/svn/reactos?rev=40665&view=rev
Log: - Re-dispatch irp to the default handler Modified: trunk/reactos/drivers/wdm/audio/backpln/portcls/irp.c Modified: trunk/reactos/drivers/wdm/audio/backpln/portcls/irp.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/backpln/…
============================================================================== --- trunk/reactos/drivers/wdm/audio/backpln/portcls/irp.c [iso-8859-1] (original) +++ trunk/reactos/drivers/wdm/audio/backpln/portcls/irp.c [iso-8859-1] Thu Apr 23 15:16:15 2009 @@ -229,6 +229,12 @@ case IRP_MJ_POWER : return PortClsPower(DeviceObject, Irp); + case IRP_MJ_DEVICE_CONTROL: + return KsDispatchIrp(DeviceObject, Irp); + + case IRP_MJ_CLOSE: + return KsDispatchIrp(DeviceObject, Irp); + case IRP_MJ_SYSTEM_CONTROL : return PortClsSysControl(DeviceObject, Irp);
15 years, 9 months
1
0
0
0
[cgutman] 40664: - Zero the whole packet in other packet allocation routines - Set ValidCount TRUE because we don't have any buffers chained yet - Set the fPACKET_ALLOCATED_BY_NDIS flag (fixes storing media-specific data)
by cgutman@svn.reactos.org
Author: cgutman Date: Thu Apr 23 14:32:41 2009 New Revision: 40664 URL:
http://svn.reactos.org/svn/reactos?rev=40664&view=rev
Log: - Zero the whole packet in other packet allocation routines - Set ValidCount TRUE because we don't have any buffers chained yet - Set the fPACKET_ALLOCATED_BY_NDIS flag (fixes storing media-specific data) Modified: trunk/reactos/drivers/network/ndis/ndis/buffer.c Modified: trunk/reactos/drivers/network/ndis/ndis/buffer.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/network/ndis/ndis/…
============================================================================== --- trunk/reactos/drivers/network/ndis/ndis/buffer.c [iso-8859-1] (original) +++ trunk/reactos/drivers/network/ndis/ndis/buffer.c [iso-8859-1] Thu Apr 23 14:32:41 2009 @@ -426,6 +426,8 @@ RtlZeroMemory(Temp, sizeof(NDIS_PACKET)); Temp->Private.Pool = Pool; + Temp->Private.ValidCounts = TRUE; + Temp->Private.NdisPacketFlags = fPACKET_ALLOCATED_BY_NDIS; *Packet = Temp; *Status = NDIS_STATUS_SUCCESS; @@ -705,8 +707,10 @@ KeReleaseSpinLockFromDpcLevel(&Pool->SpinLock.SpinLock); - RtlZeroMemory(&Temp->Private, sizeof(NDIS_PACKET_PRIVATE)); + RtlZeroMemory(Temp, sizeof(NDIS_PACKET)); Temp->Private.Pool = Pool; + Temp->Private.ValidCounts = TRUE; + Temp->Private.NdisPacketFlags = fPACKET_ALLOCATED_BY_NDIS; *Packet = Temp; *Status = NDIS_STATUS_SUCCESS; @@ -752,8 +756,10 @@ Temp = Pool->FreeList; Pool->FreeList = (PNDIS_PACKET)Temp->Reserved[0]; - RtlZeroMemory(&Temp->Private, sizeof(NDIS_PACKET_PRIVATE)); + RtlZeroMemory(Temp, sizeof(NDIS_PACKET)); Temp->Private.Pool = Pool; + Temp->Private.ValidCounts = TRUE; + Temp->Private.NdisPacketFlags = fPACKET_ALLOCATED_BY_NDIS; *Packet = Temp; *Status = NDIS_STATUS_SUCCESS; @@ -1102,4 +1108,4 @@ *Buffer = NdisBuffer; } -/* EOF */ +/* EOF */
15 years, 9 months
1
0
0
0
[janderwald] 40663: - Once a create handler indicates success, leave creation handler
by janderwald@svn.reactos.org
Author: janderwald Date: Thu Apr 23 14:30:57 2009 New Revision: 40663 URL:
http://svn.reactos.org/svn/reactos?rev=40663&view=rev
Log: - Once a create handler indicates success, leave creation handler Modified: trunk/reactos/drivers/ksfilter/ks/irp.c Modified: trunk/reactos/drivers/ksfilter/ks/irp.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/ksfilter/ks/irp.c?…
============================================================================== --- trunk/reactos/drivers/ksfilter/ks/irp.c [iso-8859-1] (original) +++ trunk/reactos/drivers/ksfilter/ks/irp.c [iso-8859-1] Thu Apr 23 14:30:57 2009 @@ -746,6 +746,15 @@ /* set object create item */ KSCREATE_ITEM_IRP_STORAGE(Irp) = &DeviceHeader->ItemList[Index].CreateItem; Status = DeviceHeader->ItemList[Index].CreateItem.Create(DeviceObject, Irp); + + /* FIXME IoRegisterDeviceInterface does not support reference strings */ + /* FIXME Check the irp target with the create item's object class */ + if (NT_SUCCESS(Status)) + { + /* release lock */ + KeReleaseSpinLock(&DeviceHeader->ItemListLock, OldLevel); + return Status; + } } }
15 years, 9 months
1
0
0
0
[dchapyshev] 40662: - Fix build
by dchapyshev@svn.reactos.org
Author: dchapyshev Date: Thu Apr 23 14:07:55 2009 New Revision: 40662 URL:
http://svn.reactos.org/svn/reactos?rev=40662&view=rev
Log: - Fix build Modified: trunk/reactos/dll/cpl/desk/lang/sk-SK.rc Modified: trunk/reactos/dll/cpl/desk/lang/sk-SK.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/desk/lang/sk-SK.rc…
============================================================================== --- trunk/reactos/dll/cpl/desk/lang/sk-SK.rc [iso-8859-1] (original) +++ trunk/reactos/dll/cpl/desk/lang/sk-SK.rc [iso-8859-1] Thu Apr 23 14:07:55 2009 @@ -123,7 +123,6 @@ BS_AUTOCHECKBOX | WS_TABSTOP | WS_DISABLED, 10, 95, 285, 19 CONTROL "Zobrazova &obsah okna poèas presúvania",IDC_EFFAPPEARANCE_DRAGFULLWINDOWS,"button", BS_AUTOCHECKBOX | WS_TABSTOP | WS_DISABLED, 10, 110, 285, 19 - CONTROL "",IDC_EFFAPPEARANCE_KEYBOARDCUES,"button", CONTROL "&Skrýva podèiarknuté písmená (klávesové skratky) a do stlaèenia klávesu Alt",IDC_EFFAPPEARANCE_KEYBOARDCUES,"button", BS_AUTOCHECKBOX | WS_TABSTOP, 10, 125, 285, 19 PUSHBUTTON "Zrui", IDCANCEL, 226, 165, 50, 14
15 years, 9 months
1
0
0
0
[cwittich] 40661: remove wine's wintab32 which relies on x11 drivers
by cwittich@svn.reactos.org
Author: cwittich Date: Thu Apr 23 13:33:10 2009 New Revision: 40661 URL:
http://svn.reactos.org/svn/reactos?rev=40661&view=rev
Log: remove wine's wintab32 which relies on x11 drivers Removed: trunk/reactos/dll/win32/wintab32/ Modified: trunk/reactos/boot/bootdata/packages/reactos.dff trunk/reactos/dll/win32/win32.rbuild Modified: trunk/reactos/boot/bootdata/packages/reactos.dff URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/boot/bootdata/packages/rea…
============================================================================== --- trunk/reactos/boot/bootdata/packages/reactos.dff [iso-8859-1] (original) +++ trunk/reactos/boot/bootdata/packages/reactos.dff [iso-8859-1] Thu Apr 23 13:33:10 2009 @@ -437,7 +437,6 @@ dll\win32\winmm\winmm.dll 1 dll\win32\winspool\winspool.drv 1 dll\win32\winsta\winsta.dll 1 -dll\win32\wintab32\wintab32.dll 1 dll\win32\wlanapi\wlanapi.dll 1 dll\win32\wintrust\wintrust.dll 1 dll\win32\wldap32\wldap32.dll 1 Modified: trunk/reactos/dll/win32/win32.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/win32.rbuild?rev…
============================================================================== --- trunk/reactos/dll/win32/win32.rbuild [iso-8859-1] (original) +++ trunk/reactos/dll/win32/win32.rbuild [iso-8859-1] Thu Apr 23 13:33:10 2009 @@ -589,9 +589,6 @@ <directory name="winsta"> <xi:include href="winsta/winsta.rbuild" /> </directory> -<directory name="wintab32"> - <xi:include href="wintab32/wintab32.rbuild" /> -</directory> <directory name="wintrust"> <xi:include href="wintrust/wintrust.rbuild" /> </directory>
15 years, 9 months
1
0
0
0
[dreimer] 40660: Bug 4396: Slovak Translations Update by Mario Kacmar
by dreimer@svn.reactos.org
Author: dreimer Date: Thu Apr 23 12:16:43 2009 New Revision: 40660 URL:
http://svn.reactos.org/svn/reactos?rev=40660&view=rev
Log: Bug 4396: Slovak Translations Update by Mario Kacmar Modified: trunk/reactos/dll/cpl/desk/lang/sk-SK.rc trunk/reactos/dll/win32/netshell/lang/en-US.rc trunk/reactos/dll/win32/netshell/lang/sk-SK.rc Modified: trunk/reactos/dll/cpl/desk/lang/sk-SK.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/desk/lang/sk-SK.rc…
============================================================================== --- trunk/reactos/dll/cpl/desk/lang/sk-SK.rc [iso-8859-1] (original) +++ trunk/reactos/dll/cpl/desk/lang/sk-SK.rc [iso-8859-1] Thu Apr 23 12:16:43 2009 @@ -3,7 +3,7 @@ * PURPOSE: Slovak Language File for desk * TRANSLATOR: Mário Kaèmár aka Kario <kario(a)szm.sk> * DATE OF TR.: 15-09-2007 - * LAST CHANGE: 19-01-2009 + * LAST CHANGE: 18-04-2009 */ LANGUAGE LANG_SLOVAK, SUBLANG_DEFAULT @@ -63,7 +63,7 @@ WS_VISIBLE | WS_BORDER, 7, 7, 232, 120 LTEXT "&Farebná schéma:", IDC_STATIC, 7, 140, 64, 7 COMBOBOX IDC_APPEARANCE_COLORSCHEME, 7, 150, 134, 90 , CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "&Effects...", IDC_APPEARANCE_EFFECTS, 182, 150, 56, 15 + PUSHBUTTON "&Efekty...", IDC_APPEARANCE_EFFECTS, 182, 150, 56, 15 PUSHBUTTON "&Spresni", IDC_APPEARANCE_ADVANCED, 182, 170, 56, 15 END @@ -108,24 +108,25 @@ IDD_EFFAPPEARANCE DIALOGEX DISCARDABLE 0, 0, 285, 185 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_DLGMODALFRAME | WS_EX_WINDOWEDGE -CAPTION "Effects" -FONT 8, "MS Shell Dlg" -BEGIN - CONTROL "&Use the following transition effect for menus and tooltips:",IDC_EFFAPPEARANCE_ANIMATION,"button", +CAPTION "Efekty" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "&Pouíva nasledovný efekt prechodu pre ponuky a názvy tlaèidiel:",IDC_EFFAPPEARANCE_ANIMATION,"button", BS_AUTOCHECKBOX | WS_TABSTOP, 10, 5, 285, 19 COMBOBOX IDC_EFFAPPEARANCE_ANIMATIONTYPE, 20, 25, 80, 19 , CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_CHILD | WS_VSCROLL | WS_TABSTOP - CONTROL "U&se the following method to smooth edges of screen fonts:",IDC_EFFAPPEARANCE_SMOOTHING,"button", + CONTROL "Po&uíva nasledovnú metódu vyhladenia okrajov zobrazeného písma:",IDC_EFFAPPEARANCE_SMOOTHING,"button", BS_AUTOCHECKBOX | WS_TABSTOP | WS_DISABLED, 10, 42, 285, 19 COMBOBOX IDC_EFFAPPEARANCE_SMOOTHINGTYPE, 20, 62, 80, 19 , CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP | WS_DISABLED - CONTROL "Us&e large icons",IDC_EFFAPPEARANCE_LARGEICONS,"button", + CONTROL "Pouíva &ve¾ké ikony",IDC_EFFAPPEARANCE_LARGEICONS,"button", BS_AUTOCHECKBOX | WS_TABSTOP | WS_DISABLED, 10, 80, 285, 19 - CONTROL "Show sh&adows under menus",IDC_EFFAPPEARANCE_SETDROPSHADOW,"button", + CONTROL "&Zobrazova tiene pod ponukami",IDC_EFFAPPEARANCE_SETDROPSHADOW,"button", BS_AUTOCHECKBOX | WS_TABSTOP | WS_DISABLED, 10, 95, 285, 19 - CONTROL "Show &window contents while dragging",IDC_EFFAPPEARANCE_DRAGFULLWINDOWS,"button", + CONTROL "Zobrazova &obsah okna poèas presúvania",IDC_EFFAPPEARANCE_DRAGFULLWINDOWS,"button", BS_AUTOCHECKBOX | WS_TABSTOP | WS_DISABLED, 10, 110, 285, 19 - CONTROL "&Hide underlined letters for keyboard navigation until I press the Alt key",IDC_EFFAPPEARANCE_KEYBOARDCUES,"button", + CONTROL "",IDC_EFFAPPEARANCE_KEYBOARDCUES,"button", + CONTROL "&Skrýva podèiarknuté písmená (klávesové skratky) a do stlaèenia klávesu Alt",IDC_EFFAPPEARANCE_KEYBOARDCUES,"button", BS_AUTOCHECKBOX | WS_TABSTOP, 10, 125, 285, 19 - PUSHBUTTON "Cancel", IDCANCEL, 226, 165, 50, 14 + PUSHBUTTON "Zrui", IDCANCEL, 226, 165, 50, 14 DEFPUSHBUTTON "OK", IDOK, 172, 165, 50, 14 END @@ -188,13 +189,13 @@ STRINGTABLE DISCARDABLE BEGIN - IDS_SLIDEEFFECT "Slide effect" - IDS_FADEEFFECT "Fade effect" -END - -STRINGTABLE DISCARDABLE -BEGIN - IDS_STANDARDEFFECT "Standard" + IDS_SLIDEEFFECT "Posúvanie" //Slide effect + IDS_FADEEFFECT "Vytrácanie" //Fade effect +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_STANDARDEFFECT "tandardná" IDS_CLEARTYPEEFFECT "ClearType" END Modified: trunk/reactos/dll/win32/netshell/lang/en-US.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/netshell/lang/en…
============================================================================== --- trunk/reactos/dll/win32/netshell/lang/en-US.rc [iso-8859-1] (original) +++ trunk/reactos/dll/win32/netshell/lang/en-US.rc [iso-8859-1] Thu Apr 23 12:16:43 2009 @@ -5,23 +5,23 @@ CAPTION "General" FONT 8, "MS Shell Dlg" BEGIN - CONTROL "", IDC_COMPONENTSLIST, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_NOCOLUMNHEADER | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP, 9, 71, 230, 55 - LTEXT "Connect Using:", -1, 9,9,217,8 - EDITTEXT IDC_NETCARDNAME, 9, 21, 230, 12, WS_BORDER | WS_DISABLED | WS_TABSTOP - PUSHBUTTON "&Configure", IDC_CONFIGURE, 189, 38, 50, 14 - LTEXT "Components checked are used by this connection:", -1, 9, 59, 217, 8 - PUSHBUTTON "&Install", IDC_INSTALL, 9, 130, 65, 14, WS_DISABLED | WS_TABSTOP - PUSHBUTTON "&Uninstall", IDC_UNINSTALL, 90, 130, 65, 14, WS_DISABLED | WS_TABSTOP - PUSHBUTTON "&Properties", IDC_PROPERTIES, 174, 130, 65, 14 - GROUPBOX "Description", -1, 9, 153, 230, 46, BS_GROUPBOX - LTEXT "Component Description goes here...", IDC_DESCRIPTION, 15, 165, 217, 28, WS_GROUP - CHECKBOX "Show Icon in taskbar when connected", IDC_SHOWTASKBAR, 9, 206, 230, 12, BS_AUTOCHECKBOX | WS_TABSTOP - CHECKBOX "Notify me when this connection has limited or no connectivity", IDC_NOTIFYNOCONNECTION, 9, 220, 230, 12, BS_AUTOCHECKBOX | WS_TABSTOP + CONTROL "", IDC_COMPONENTSLIST, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_NOCOLUMNHEADER | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP, 9, 71, 230, 55 + LTEXT "Connect Using:", -1, 9,9,217,8 + EDITTEXT IDC_NETCARDNAME, 9, 21, 230, 12, WS_BORDER | WS_TABSTOP | ES_READONLY + PUSHBUTTON "&Configure", IDC_CONFIGURE, 189, 38, 50, 14 + LTEXT "Components checked are used by this connection:", -1, 9, 59, 217, 8 + PUSHBUTTON "&Install", IDC_INSTALL, 9, 130, 65, 14, WS_DISABLED | WS_TABSTOP + PUSHBUTTON "&Uninstall", IDC_UNINSTALL, 90, 130, 65, 14, WS_DISABLED | WS_TABSTOP + PUSHBUTTON "&Properties", IDC_PROPERTIES, 174, 130, 65, 14 + GROUPBOX "Description", -1, 9, 153, 230, 46, BS_GROUPBOX + LTEXT "Component Description goes here...", IDC_DESCRIPTION, 15, 165, 217, 28, WS_GROUP + CHECKBOX "&Show Icon in taskbar when connected", IDC_SHOWTASKBAR, 9, 206, 230, 12, BS_AUTOCHECKBOX | WS_TABSTOP + CHECKBOX "&Notify me when this connection has limited or no connectivity", IDC_NOTIFYNOCONNECTION, 9, 220, 230, 12, BS_AUTOCHECKBOX | WS_TABSTOP END IDD_STATUS DIALOGEX DISCARDABLE 0, 0, 200, 280 STYLE DS_SHELLFONT | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Allgemein" +CAPTION "General" FONT 8, "MS Shell Dlg" BEGIN END @@ -31,22 +31,22 @@ CAPTION "General" FONT 8, "MS Shell Dlg" BEGIN - GROUPBOX "Connection", -1, 9, 8, 182, 58, BS_GROUPBOX - LTEXT "Status:", -1, 19, 20, 60, 8 - LTEXT "Duration:", -1, 19, 34, 60, 8 - LTEXT "Speed:", -1, 19, 48, 60, 8 - GROUPBOX "Activity", -1, 9, 74, 182, 70, BS_GROUPBOX - RTEXT "Sent", -1, 26, 90, 60, 8 - ICON IDI_NETSTAT, -1, 110, 85, 32, 32 - LTEXT "Received", -1, 149, 90, 37, 8 - LTEXT "Bytes:", -1, 17, 115, 32, 8 - RTEXT "000.000.000", IDC_SEND, 63, 115, 44, 8 - RTEXT "000.000.000", IDC_RECEIVED, 139, 115, 44, 8 - PUSHBUTTON "&Properties", IDC_STATUS_PROPERTIES, 10, 150, 50, 14 - PUSHBUTTON "&Disable", IDC_ENDISABLE, 66, 150, 50, 14 - RTEXT "",IDC_STATUS,83,20,98,8 - RTEXT "",IDC_DURATION,83,34,98,8 - RTEXT "",IDC_SPEED,83,48,98,8 + GROUPBOX "Connection", -1, 9, 8, 182, 58, BS_GROUPBOX + LTEXT "Status:", -1, 19, 20, 60, 8 + LTEXT "Duration:", -1, 19, 34, 60, 8 + LTEXT "Speed:", -1, 19, 48, 60, 8 + GROUPBOX "Activity", -1, 9, 74, 182, 70, BS_GROUPBOX + RTEXT "Sent", -1, 26, 90, 60, 8 + ICON IDI_NETSTAT, -1, 110, 85, 32, 32 + LTEXT "Received", -1, 149, 90, 37, 8 + LTEXT "Bytes:", -1, 17, 115, 32, 8 + RTEXT "000.000.000", IDC_SEND, 63, 115, 44, 8 + RTEXT "000.000.000", IDC_RECEIVED, 139, 115, 44, 8 + PUSHBUTTON "&Properties", IDC_STATUS_PROPERTIES, 10, 150, 50, 14 + PUSHBUTTON "&Disable", IDC_ENDISABLE, 66, 150, 50, 14 + RTEXT "",IDC_STATUS,83,20,98,8 + RTEXT "",IDC_DURATION,83,34,98,8 + RTEXT "",IDC_SPEED,83,48,98,8 END IDD_LAN_NETSTATUSADVANCED DIALOGEX DISCARDABLE 0, 0, 200,180 @@ -54,18 +54,18 @@ CAPTION "Support" FONT 8, "MS Shell Dlg" BEGIN - GROUPBOX "Connection Status", -1, 9, 8, 200, 88, BS_GROUPBOX - LTEXT "Address type:", -1, 22, 20, 80, 8 - LTEXT "IP Address:", -1, 22, 34, 80, 8 - LTEXT "Subnet Mask:", -1, 22, 48, 80, 8 - LTEXT "Default Gateway:", -1, 22, 62, 80, 8 + GROUPBOX "Connection Status", -1, 9, 8, 200, 88, BS_GROUPBOX + LTEXT "Address type:", -1, 22, 20, 80, 8 + LTEXT "IP Address:", -1, 22, 34, 80, 8 + LTEXT "Subnet Mask:", -1, 22, 48, 80, 8 + LTEXT "Default Gateway:", -1, 22, 62, 80, 8 - RTEXT "N/A", IDC_DETAILSTYPE, 122, 20, 80, 8 - RTEXT "000.000.000.000", IDC_DETAILSIP, 122, 34, 80, 8 - RTEXT "000.000.000.000", IDC_DETAILSSUBNET, 122, 48, 80, 8 - RTEXT "", IDC_DETAILSGATEWAY, 122, 62, 80, 8 + RTEXT "N/A", IDC_DETAILSTYPE, 122, 20, 80, 8 + RTEXT "000.000.000.000", IDC_DETAILSIP, 122, 34, 80, 8 + RTEXT "000.000.000.000", IDC_DETAILSSUBNET, 122, 48, 80, 8 + RTEXT "", IDC_DETAILSGATEWAY, 122, 62, 80, 8 - PUSHBUTTON "&Details...", IDC_DETAILS, 22, 76, 62, 14 + PUSHBUTTON "&Details...", IDC_DETAILS, 22, 76, 62, 14 END IDD_LAN_NETSTATUSDETAILS DIALOGEX DISCARDABLE 0, 0, 200,200 @@ -73,54 +73,54 @@ CAPTION "Network Connection Details" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "Network Connection &Details:", -1, 15, 9, 170, 12 - CONTROL "", IDC_DETAILS, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP, 15, 25, 170, 130 - PUSHBUTTON "&Close", IDC_CLOSE, 125, 165, 62, 14 + LTEXT "Network Connection &Details:", -1, 15, 9, 170, 12 + CONTROL "", IDC_DETAILS, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP, 15, 25, 170, 130 + PUSHBUTTON "&Close", IDC_CLOSE, 125, 165, 62, 14 END STRINGTABLE DISCARDABLE BEGIN - IDS_PHYSICAL_ADDRESS "Physical Address" - IDS_IP_ADDRESS "IP Address" - IDS_SUBNET_MASK "Subnet Mask" - IDS_DEF_GATEWAY "Default Gateway" - IDS_DHCP_SERVER "DHCP Server" - IDS_LEASE_OBTAINED "Lease Obtained" - IDS_LEASE_EXPIRES "Lease Expires" - IDS_DNS_SERVERS "DNS Servers" - IDS_WINS_SERVERS "WINS Servers" - IDS_PROPERTY "Property" - IDS_VALUE "Value" - IDS_NETWORKCONNECTION "Network Connection" - IDS_SHV_COLUMN_NAME "Name" - IDS_SHV_COLUMN_TYPE "Type" - IDS_SHV_COLUMN_STATE "Status" - IDS_SHV_COLUMN_DEVNAME "Device Name" - IDS_SHV_COLUMN_PHONE "Phone # or Host Address" - IDS_SHV_COLUMN_OWNER "Owner" - IDS_TYPE_ETHERNET "LAN or High-Speed Internet" - IDS_STATUS_NON_OPERATIONAL "Disabled" - IDS_STATUS_UNREACHABLE "Not Connected" - IDS_STATUS_DISCONNECTED "Network cable unplugged" - IDS_STATUS_CONNECTING "Acquiring network address" - IDS_STATUS_CONNECTED "Connected" - IDS_STATUS_OPERATIONAL "Connected" + IDS_PHYSICAL_ADDRESS "Physical Address" + IDS_IP_ADDRESS "IP Address" + IDS_SUBNET_MASK "Subnet Mask" + IDS_DEF_GATEWAY "Default Gateway" + IDS_DHCP_SERVER "DHCP Server" + IDS_LEASE_OBTAINED "Lease Obtained" + IDS_LEASE_EXPIRES "Lease Expires" + IDS_DNS_SERVERS "DNS Servers" + IDS_WINS_SERVERS "WINS Servers" + IDS_PROPERTY "Property" + IDS_VALUE "Value" + IDS_NETWORKCONNECTION "Network Connection" + IDS_SHV_COLUMN_NAME "Name" + IDS_SHV_COLUMN_TYPE "Type" + IDS_SHV_COLUMN_STATE "Status" + IDS_SHV_COLUMN_DEVNAME "Device Name" + IDS_SHV_COLUMN_PHONE "Phone # or Host Address" + IDS_SHV_COLUMN_OWNER "Owner" + IDS_TYPE_ETHERNET "LAN or High-Speed Internet" + IDS_STATUS_NON_OPERATIONAL "Disabled" + IDS_STATUS_UNREACHABLE "Not Connected" + IDS_STATUS_DISCONNECTED "Network cable unplugged" + IDS_STATUS_CONNECTING "Acquiring network address" + IDS_STATUS_CONNECTED "Connected" + IDS_STATUS_OPERATIONAL "Connected" - IDS_NET_ACTIVATE "Enable" - IDS_NET_DEACTIVATE "Disable" - IDS_NET_STATUS "Status" - IDS_NET_REPAIR "Repair" - IDS_NET_CREATELINK "Create Shortcut" - IDS_NET_DELETE "Delete" - IDS_NET_PROPERTIES "Properties" + IDS_NET_ACTIVATE "Enable" + IDS_NET_DEACTIVATE "Disable" + IDS_NET_STATUS "Status" + IDS_NET_REPAIR "Repair" + IDS_NET_CREATELINK "Create Shortcut" + IDS_NET_DELETE "Delete" + IDS_NET_RENAME "Rename" + IDS_NET_PROPERTIES "Properties" - IDS_FORMAT_BIT "%u Bit/s" - IDS_FORMAT_KBIT "%u KBit/s" - IDS_FORMAT_MBIT "%u MBit/s" - IDS_FORMAT_GBIT "%u GBit/s" - IDS_DURATION_DAY "%d Day %s" - IDS_DURATION_DAYS "%d Days %s" - IDS_ASSIGNED_DHCP "Assigned by DHCP" - IDS_ASSIGNED_MANUAL "Manually configured" + IDS_FORMAT_BIT "%u Bit/s" + IDS_FORMAT_KBIT "%u KBit/s" + IDS_FORMAT_MBIT "%u MBit/s" + IDS_FORMAT_GBIT "%u GBit/s" + IDS_DURATION_DAY "%d Day %s" + IDS_DURATION_DAYS "%d Days %s" + IDS_ASSIGNED_DHCP "Assigned by DHCP" + IDS_ASSIGNED_MANUAL "Manually configured" END - Modified: trunk/reactos/dll/win32/netshell/lang/sk-SK.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/netshell/lang/sk…
============================================================================== --- trunk/reactos/dll/win32/netshell/lang/sk-SK.rc [iso-8859-1] (original) +++ trunk/reactos/dll/win32/netshell/lang/sk-SK.rc [iso-8859-1] Thu Apr 23 12:16:43 2009 @@ -1,6 +1,6 @@ /* TRANSLATOR : Mário Kaèmár /Mario Kacmar/ aka Kario (kario(a)szm.sk) * DATE OF TR.: 31-08-2008 - * LAST CHANGE: 23-10-2008 + * LAST CHANGE: 18-04-2009 */ LANGUAGE LANG_SLOVAK, SUBLANG_DEFAULT @@ -10,18 +10,18 @@ CAPTION "Veobecné" FONT 8, "MS Shell Dlg" BEGIN - CONTROL "", IDC_COMPONENTSLIST, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_NOCOLUMNHEADER | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP, 9, 71, 230, 55 - LTEXT "Pripoji pomocou:", -1, 9,9,217,8 - EDITTEXT IDC_NETCARDNAME, 9, 21, 230, 12, WS_BORDER | WS_TABSTOP | ES_READONLY - PUSHBUTTON "&Konfigurova...", IDC_CONFIGURE, 189, 38, 50, 14 - LTEXT "Components checked are used by this connection:", -1, 9, 59, 217, 8 - PUSHBUTTON "&Intalova", IDC_INSTALL, 9, 130, 65, 14, WS_DISABLED | WS_TABSTOP - PUSHBUTTON "O&dintalova", IDC_UNINSTALL, 90, 130, 65, 14, WS_DISABLED | WS_TABSTOP - PUSHBUTTON "Vl&astnosti", IDC_PROPERTIES, 174, 130, 65, 14 - GROUPBOX "Popis", -1, 9, 153, 230, 46, BS_GROUPBOX - LTEXT "Component Description goes here...", IDC_DESCRIPTION, 15, 165, 217, 28, WS_GROUP - CHECKBOX "&Show Icon in taskbar when connected", IDC_SHOWTASKBAR, 9, 206, 230, 12, BS_AUTOCHECKBOX | WS_TABSTOP - CHECKBOX "&Notify me when this connection has limited or no connectivity", IDC_NOTIFYNOCONNECTION, 9, 220, 230, 24, BS_AUTOCHECKBOX | WS_TABSTOP + CONTROL "", IDC_COMPONENTSLIST, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_NOCOLUMNHEADER | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP, 9, 71, 230, 55 + LTEXT "Pripoji pomocou:", -1, 9,9,217,8 + EDITTEXT IDC_NETCARDNAME, 9, 21, 230, 12, WS_BORDER | WS_TABSTOP | ES_READONLY + PUSHBUTTON "&Konfigurova...", IDC_CONFIGURE, 189, 38, 50, 14 + LTEXT "Components checked are used by this connection:", -1, 9, 59, 217, 8 + PUSHBUTTON "&Intalova", IDC_INSTALL, 9, 130, 65, 14, WS_DISABLED | WS_TABSTOP + PUSHBUTTON "O&dintalova", IDC_UNINSTALL, 90, 130, 65, 14, WS_DISABLED | WS_TABSTOP + PUSHBUTTON "Vl&astnosti", IDC_PROPERTIES, 174, 130, 65, 14 + GROUPBOX "Popis", -1, 9, 153, 230, 46, BS_GROUPBOX + LTEXT "Popis komponentu príde sem ...", IDC_DESCRIPTION, 15, 165, 217, 28, WS_GROUP + CHECKBOX "&Show Icon in taskbar when connected", IDC_SHOWTASKBAR, 9, 206, 230, 12, BS_AUTOCHECKBOX | WS_TABSTOP + CHECKBOX "&Notify me when this connection has limited or no connectivity", IDC_NOTIFYNOCONNECTION, 9, 220, 230, 24, BS_AUTOCHECKBOX | WS_TABSTOP END IDD_STATUS DIALOGEX DISCARDABLE 0, 0, 200,280 @@ -36,22 +36,22 @@ CAPTION "Veobecné" FONT 8, "MS Shell Dlg" BEGIN - GROUPBOX "Pripojenie", -1, 9, 8, 182, 58, BS_GROUPBOX - LTEXT "Stav:", -1, 19, 20, 60, 8 - LTEXT "Trvanie:", -1, 19, 34, 60, 8 - LTEXT "Rýchlos:", -1, 19, 48, 60, 8 - GROUPBOX "Èinnos", -1, 9, 74, 182, 70, BS_GROUPBOX - RTEXT "Odoslané", -1, 26, 90, 60, 8 - ICON "", IDC_NETSTAT, 110, 85, 18, 20 - LTEXT "Prijaté", -1, 149, 90, 37, 8 - LTEXT "Bajty:", -1, 17, 115, 32, 8 - RTEXT "000.000.000", IDC_SEND, 63, 115, 44, 8 - RTEXT "000.000.000", IDC_RECEIVED, 139, 115, 44, 8 - PUSHBUTTON "Vl&astnosti", IDC_STATUS_PROPERTIES, 10, 150, 50, 14 - PUSHBUTTON "Vyp&nú", IDC_ENDISABLE, 66, 150, 50, 14 - RTEXT "",IDC_STATUS,83,20,98,8 - RTEXT "",IDC_DURATION,83,34,98,8 - RTEXT "",IDC_SPEED,83,48,98,8 + GROUPBOX "Pripojenie", -1, 9, 8, 182, 58, BS_GROUPBOX + LTEXT "Stav:", -1, 19, 20, 60, 8 + LTEXT "Trvanie:", -1, 19, 34, 60, 8 + LTEXT "Rýchlos:", -1, 19, 48, 60, 8 + GROUPBOX "Èinnos", -1, 9, 74, 182, 70, BS_GROUPBOX + RTEXT "Odoslané", -1, 26, 90, 60, 8 + ICON "", IDC_NETSTAT, 110, 85, 18, 20 + LTEXT "Prijaté", -1, 149, 90, 37, 8 + LTEXT "Bajty:", -1, 17, 115, 32, 8 + RTEXT "000.000.000", IDC_SEND, 63, 115, 44, 8 + RTEXT "000.000.000", IDC_RECEIVED, 139, 115, 44, 8 + PUSHBUTTON "Vl&astnosti", IDC_STATUS_PROPERTIES, 10, 150, 50, 14 + PUSHBUTTON "Vyp&nú", IDC_ENDISABLE, 66, 150, 50, 14 + RTEXT "",IDC_STATUS,83,20,98,8 + RTEXT "",IDC_DURATION,83,34,98,8 + RTEXT "",IDC_SPEED,83,48,98,8 END IDD_LAN_NETSTATUSADVANCED DIALOGEX DISCARDABLE 0, 0, 200,180 @@ -59,18 +59,18 @@ CAPTION "Podpora" FONT 8, "MS Shell Dlg" BEGIN - GROUPBOX "Stav pripojenia", -1, 9, 8, 200, 88, BS_GROUPBOX - LTEXT "Typ adresy:", -1, 22, 20, 80, 8 - LTEXT "Adresa IP:", -1, 22, 34, 80, 8 - LTEXT "Maska podsiete:", -1, 22, 48, 80, 8 - LTEXT "Predvolená brána:", -1, 22, 62, 80, 8 + GROUPBOX "Stav pripojenia", -1, 9, 8, 200, 88, BS_GROUPBOX + LTEXT "Typ adresy:", -1, 22, 20, 80, 8 + LTEXT "Adresa IP:", -1, 22, 34, 80, 8 + LTEXT "Maska podsiete:", -1, 22, 48, 80, 8 + LTEXT "Predvolená brána:", -1, 22, 62, 80, 8 - RTEXT "N/A", IDC_DETAILSTYPE, 122, 20, 80, 8 - RTEXT "000.000.000.000", IDC_DETAILSIP, 122, 34, 80, 8 - RTEXT "000.000.000.000", IDC_DETAILSSUBNET, 122, 48, 80, 8 - RTEXT "", IDC_DETAILSGATEWAY, 122, 62, 80, 8 + RTEXT "Nie je k dispozícii", IDC_DETAILSTYPE, 122, 20, 80, 8 // N/A + RTEXT "000.000.000.000", IDC_DETAILSIP, 122, 34, 80, 8 + RTEXT "000.000.000.000", IDC_DETAILSSUBNET, 122, 48, 80, 8 + RTEXT "", IDC_DETAILSGATEWAY, 122, 62, 80, 8 - PUSHBUTTON "Po&drobnosti...", IDC_DETAILS, 22, 76, 62, 14 + PUSHBUTTON "Po&drobnosti...", IDC_DETAILS, 22, 76, 62, 14 END IDD_LAN_NETSTATUSDETAILS DIALOGEX DISCARDABLE 0, 0, 200,200 @@ -78,54 +78,54 @@ CAPTION "Podrobnosti sieového pripojenia" //Sieové pripojenie - podrobnosti FONT 8, "MS Shell Dlg" BEGIN - LTEXT "Po&drobnosti sieového pripojenia:", -1, 15, 9, 170, 12 - CONTROL "", IDC_DETAILS, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP, 15, 25, 170, 130 - PUSHBUTTON "&Zavrie", IDC_CLOSE, 125, 165, 62, 14 + LTEXT "Po&drobnosti sieového pripojenia:", -1, 15, 9, 170, 12 + CONTROL "", IDC_DETAILS, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP, 15, 25, 170, 130 + PUSHBUTTON "&Zavrie", IDC_CLOSE, 125, 165, 62, 14 END STRINGTABLE DISCARDABLE BEGIN - IDS_PHYSICAL_ADDRESS "Fyzická adresa" - IDS_IP_ADDRESS "Adresa IP" - IDS_SUBNET_MASK "Maska podsiete" - IDS_DEF_GATEWAY "Predvolená brána" - IDS_DHCP_SERVER "DHCP Server" - IDS_LEASE_OBTAINED "Lease Obtained" - IDS_LEASE_EXPIRES "Lease Expires" - IDS_DNS_SERVERS "Servery DNS" - IDS_WINS_SERVERS "Servery WINS" - IDS_PROPERTY "Vlastnos" - IDS_VALUE "Hodnota" - IDS_NETWORKCONNECTION "Sieové pripojenie" - IDS_SHV_COLUMN_NAME "Názov" - IDS_SHV_COLUMN_TYPE "Typ" - IDS_SHV_COLUMN_STATE "Stav" - IDS_SHV_COLUMN_DEVNAME "Názov zariadenia" - IDS_SHV_COLUMN_PHONE "Telefónne èíslo alebo adresa hostite¾a" - IDS_SHV_COLUMN_OWNER "Vlastník" - IDS_TYPE_ETHERNET "Lokálna sie alebo vysokorýchlostný Internet" - IDS_STATUS_NON_OPERATIONAL "Vypnuté" - IDS_STATUS_UNREACHABLE "Nepripojené" - IDS_STATUS_DISCONNECTED "Sieový kábel je odpojený" - IDS_STATUS_CONNECTING "Získavanie sieovej adresy" - IDS_STATUS_CONNECTED "Pripojené" - IDS_STATUS_OPERATIONAL "Pripojené" + IDS_PHYSICAL_ADDRESS "Fyzická adresa" + IDS_IP_ADDRESS "Adresa IP" + IDS_SUBNET_MASK "Maska podsiete" + IDS_DEF_GATEWAY "Predvolená brána" + IDS_DHCP_SERVER "DHCP Server" + IDS_LEASE_OBTAINED "Lease Obtained" + IDS_LEASE_EXPIRES "Lease Expires" + IDS_DNS_SERVERS "Servery DNS" + IDS_WINS_SERVERS "Servery WINS" + IDS_PROPERTY "Vlastnos" + IDS_VALUE "Hodnota" + IDS_NETWORKCONNECTION "Sieové pripojenie" + IDS_SHV_COLUMN_NAME "Názov" + IDS_SHV_COLUMN_TYPE "Typ" + IDS_SHV_COLUMN_STATE "Stav" + IDS_SHV_COLUMN_DEVNAME "Názov zariadenia" + IDS_SHV_COLUMN_PHONE "Telefónne èíslo alebo adresa hostite¾a" + IDS_SHV_COLUMN_OWNER "Vlastník" + IDS_TYPE_ETHERNET "Lokálna sie alebo vysokorýchlostný Internet" + IDS_STATUS_NON_OPERATIONAL "Vypnuté" + IDS_STATUS_UNREACHABLE "Nepripojené" + IDS_STATUS_DISCONNECTED "Sieový kábel je odpojený" + IDS_STATUS_CONNECTING "Získavanie sieovej adresy" + IDS_STATUS_CONNECTED "Pripojené" + IDS_STATUS_OPERATIONAL "Pripojené" - IDS_NET_ACTIVATE "Zapnú" - IDS_NET_DEACTIVATE "Vypnú" - IDS_NET_STATUS "Stav" - IDS_NET_REPAIR "Opravi" - IDS_NET_CREATELINK "Vytvori odkaz" - IDS_NET_DELETE "Odstráni" - IDS_NET_RENAME "Premenova" - IDS_NET_PROPERTIES "Vlastnosti" + IDS_NET_ACTIVATE "Zapnú" + IDS_NET_DEACTIVATE "Vypnú" + IDS_NET_STATUS "Stav" + IDS_NET_REPAIR "Opravi" + IDS_NET_CREATELINK "Vytvori odkaz" + IDS_NET_DELETE "Odstráni" + IDS_NET_RENAME "Premenova" + IDS_NET_PROPERTIES "Vlastnosti" - IDS_FORMAT_BIT "%u Bitov/s" - IDS_FORMAT_KBIT "%u KBitov/s" - IDS_FORMAT_MBIT "%u MBitov/s" - IDS_FORMAT_GBIT "%u GBitov/s" - IDS_DURATION_DAY "%d deò %s" - IDS_DURATION_DAYS "%d dní %s" - IDS_ASSIGNED_DHCP "Pridelená DHCP serverom" - IDS_ASSIGNED_MANUAL "Nakonfigurovaná manuálne" + IDS_FORMAT_BIT "%u Bitov/s" + IDS_FORMAT_KBIT "%u KBitov/s" + IDS_FORMAT_MBIT "%u MBitov/s" + IDS_FORMAT_GBIT "%u GBitov/s" + IDS_DURATION_DAY "%d deò %s" + IDS_DURATION_DAYS "%d dní %s" + IDS_ASSIGNED_DHCP "Pridelená DHCP serverom" + IDS_ASSIGNED_MANUAL "Nakonfigurovaná manuálne" END
15 years, 9 months
1
0
0
0
[cwittich] 40659: fix some msvcrt string winetests
by cwittich@svn.reactos.org
Author: cwittich Date: Thu Apr 23 00:40:07 2009 New Revision: 40659 URL:
http://svn.reactos.org/svn/reactos?rev=40659&view=rev
Log: fix some msvcrt string winetests Modified: trunk/reactos/dll/win32/msvcrt/msvcrt.def trunk/reactos/lib/sdk/crt/mbstring/jistojms.c trunk/reactos/lib/sdk/crt/string/wcs.c Modified: trunk/reactos/dll/win32/msvcrt/msvcrt.def URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msvcrt/msvcrt.de…
============================================================================== --- trunk/reactos/dll/win32/msvcrt/msvcrt.def [iso-8859-1] (original) +++ trunk/reactos/dll/win32/msvcrt/msvcrt.def [iso-8859-1] Thu Apr 23 00:40:07 2009 @@ -848,6 +848,7 @@ wscanf @842 _mbsnbcpy_s + wcscpy_s wcsncpy_s _ftol2=_ftol _ftol2_sse=_ftol Modified: trunk/reactos/lib/sdk/crt/mbstring/jistojms.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/lib/sdk/crt/mbstring/jisto…
============================================================================== --- trunk/reactos/lib/sdk/crt/mbstring/jistojms.c [iso-8859-1] (original) +++ trunk/reactos/lib/sdk/crt/mbstring/jistojms.c [iso-8859-1] Thu Apr 23 00:40:07 2009 @@ -1,29 +1,60 @@ +/* + * MSVCRT string functions + * + * Copyright 1996,1998 Marcus Meissner + * Copyright 1996 Jukka Iivonen + * Copyright 1997,2000 Uwe Bonnes + * Copyright 2000 Jon Griffiths + * + * 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 <precomp.h> #include <mbstring.h> +#include <locale.h> /* * @implemented */ unsigned int _mbcjistojms(unsigned int c) { - int c1, c2; + /* Conversion takes place only when codepage is 932. + In all other cases, c is returned unchanged */ + if(MSVCRT___lc_codepage == 932) + { + if(HIBYTE(c) >= 0x21 && HIBYTE(c) <= 0x7e && + LOBYTE(c) >= 0x21 && LOBYTE(c) <= 0x7e) + { + if(HIBYTE(c) % 2) + c += 0x1f; + else + c += 0x7d; - c2 = (unsigned char)c; - c1 = c >> 8; - if (c1 >= 0x21 && c1 <= 0x7e && c2 >= 0x21 && c2 <= 0x7e) { - if (c1 & 0x01) { - c2 += 0x1f; - if (c2 >= 0x7f) - c2 ++; - } else { - c2 += 0x7e; + if(LOBYTE(c) > 0x7F) + c += 0x1; + + c = (((HIBYTE(c) - 0x21)/2 + 0x81) << 8) | LOBYTE(c); + + if(HIBYTE(c) > 0x9f) + c += 0x4000; } - c1 += 0xe1; - c1 >>= 1; - if (c1 >= 0xa0) - c1 += 0x40; - return ((c1 << 8) | c2); + else + return 0; /* Codepage is 932, but c can't be converted */ } - return 0; + + return c; } + Modified: trunk/reactos/lib/sdk/crt/string/wcs.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/lib/sdk/crt/string/wcs.c?r…
============================================================================== --- trunk/reactos/lib/sdk/crt/string/wcs.c [iso-8859-1] (original) +++ trunk/reactos/lib/sdk/crt/string/wcs.c [iso-8859-1] Thu Apr 23 00:40:07 2009 @@ -1106,6 +1106,8 @@ return isxdigitW( wc ); } +#endif + /********************************************************************* * wcscpy_s (MSVCRT.@) */ @@ -1137,7 +1139,6 @@ return 0; } -#endif /****************************************************************** * wcsncpy_s (MSVCRT.@)
15 years, 9 months
1
0
0
0
← Newer
1
...
7
8
9
10
11
12
13
...
48
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
Results per page:
10
25
50
100
200