From 792e09f6e562ac05d32b80e9aa9aa61b67010731 Mon Sep 17 00:00:00 2001 From: Andreas Mohr Date: Thu, 24 May 2001 18:41:56 +0000 Subject: [PATCH] - add stubs SHLWAPI_294, UrlApplySchemeW - correct SHLWAPI_151 parameters - implemented StrTrimA --- dlls/shlwapi/ordinal.c | 40 ++++++++++++++++++++++++++++++++------- dlls/shlwapi/reg.c | 2 +- dlls/shlwapi/shlwapi.spec | 8 ++++---- dlls/shlwapi/string.c | 25 ++++++++++++++++++++++++ dlls/shlwapi/url.c | 13 +++++++++++++ 5 files changed, 76 insertions(+), 12 deletions(-) diff --git a/dlls/shlwapi/ordinal.c b/dlls/shlwapi/ordinal.c index 5ddcff4c792..dd46da5f47c 100644 --- a/dlls/shlwapi/ordinal.c +++ b/dlls/shlwapi/ordinal.c @@ -187,10 +187,12 @@ INT WINAPI SHLWAPI_74(HWND hWnd, INT nItem, LPWSTR lpsDest,INT nDestLen) /************************************************************************* * SHLWAPI_151 [SHLWAPI.151] + * + * pStr "HTTP/1.1", dw1 0x5 */ -DWORD WINAPI SHLWAPI_151(void) +DWORD WINAPI SHLWAPI_151(LPSTR pStr, LPVOID ptr, DWORD dw1) { - FIXME(": stub\n"); + FIXME("('%s', %p, %08lx): stub\n", pStr, ptr, dw1); return 0; } @@ -213,9 +215,9 @@ DWORD WINAPI SHLWAPI_152(LPWSTR str1, LPWSTR str2, INT len) /************************************************************************* * SHLWAPI_153 [SHLWAPI.153] */ -DWORD WINAPI SHLWAPI_153(DWORD dw1, DWORD dw2, DWORD dw3) +DWORD WINAPI SHLWAPI_153(LPSTR str1, LPSTR str2, DWORD dw3) { - FIXME("%08lx %08lx %08lx - stub\n", dw1, dw2, dw3); + FIXME("'%s' '%s' %08lx - stub\n", str1, str2, dw3); return 0; } @@ -456,10 +458,10 @@ INT WINAPI SHLWAPI_217(LPCWSTR lpSrcStr, LPSTR lpDstStr, LPINT lpnMultiCharCount HRESULT WINAPI SHLWAPI_219 ( LPVOID w, /* [???] NOTE: returned by LocalAlloc, 0x450 bytes, iface */ LPVOID x, - REFIID riid, + REFIID riid, /* e.g. IWebBrowser2 */ LPWSTR z) /* [???] NOTE: OUT: path */ { - FIXME("(%p %p %s %p)stub\n",w,x,debugstr_guid(riid),z); + FIXME("(%p %s %s %p)stub\n",w,debugstr_a(x),debugstr_guid(riid),z); return 0xabba1252; } @@ -638,6 +640,30 @@ BOOL WINAPI SHLWAPI_289(LPCWSTR pszSound, HMODULE hmod, DWORD fdwSound) return pfnFunc(pszSound, hmod, fdwSound); } +/************************************************************************* + * SHLWAPI_294 [SHLWAPI.294] + */ +BOOL WINAPI SHLWAPI_294(LPSTR str1, LPSTR str2, LPSTR pStr, DWORD some_len, LPCSTR lpStr2) +{ + /* + * str1: "I" "I" pushl esp+0x20 + * str2: "U" "I" pushl 0x77c93810 + * (is "I" and "U" "integer" and "unsigned" ??) + * + * pStr: "" "" pushl eax + * some_len: 0x824 0x104 pushl 0x824 + * lpStr2: "%l" "%l" pushl esp+0xc + * + * shlwapi. StrCpyNW(lpStr2, irrelevant_var, 0x104); + * LocalAlloc(0x00, some_len) -> irrelevant_var + * LocalAlloc(0x40, irrelevant_len) -> pStr + * shlwapi.294(str1, str2, pStr, some_len, lpStr2); + * shlwapi.PathRemoveBlanksW(pStr); + */ + ERR("('%s', '%s', '%s', %08lx, '%s'): stub!\n", str1, str2, pStr, some_len, lpStr2); + return TRUE; +} + /************************************************************************* * SHLWAPI_313 [SHLWAPI.313] * @@ -991,7 +1017,7 @@ DWORD WINAPI SHLWAPI_431 (DWORD x) * SHLWAPI_437 [SHLWAPI.437] * * NOTES - * In the real shlwapi, One time initilisation calls GetVersionEx and reads + * In the real shlwapi, One time initialisation calls GetVersionEx and reads * the registry to determine what O/S & Service Pack level is running, and * therefore which functions are available. Currently we always run as NT, * since this means that we don't need extra code to emulate Unicode calls, diff --git a/dlls/shlwapi/reg.c b/dlls/shlwapi/reg.c index e6e9e387f70..2d3ccc4a418 100644 --- a/dlls/shlwapi/reg.c +++ b/dlls/shlwapi/reg.c @@ -59,7 +59,7 @@ LONG WINAPI SHRegGetUSValueW( /************************************************************************* * SHRegOpenUSKeyA [SHLWAPI.@] * - * Openss a user-specific registry key + * Opens a user-specific registry key */ LONG WINAPI SHRegOpenUSKeyA( LPCSTR Path, diff --git a/dlls/shlwapi/shlwapi.spec b/dlls/shlwapi/shlwapi.spec index ca90a48f28f..dbacf33ed6b 100644 --- a/dlls/shlwapi/shlwapi.spec +++ b/dlls/shlwapi/shlwapi.spec @@ -160,7 +160,7 @@ debug_channels (shell) 148 forward @ user32.VkKeyScanW 149 forward @ user32.WinHelpW 150 forward @ user32.wvsprintfW -151 stdcall @() SHLWAPI_151 +151 stdcall @(str ptr long) SHLWAPI_151 152 stdcall @(wstr wstr long) SHLWAPI_152 153 stdcall @(long long long) SHLWAPI_153 154 stub @ @@ -303,7 +303,7 @@ debug_channels (shell) 291 stub @ 292 stub @ 293 stub @ -294 stub @ +294 stdcall @(long long long long long) SHLWAPI_294 295 stub @ 296 stub @ 297 stub @ @@ -659,10 +659,10 @@ debug_channels (shell) @ stdcall StrToIntExA(str long ptr) StrToIntExA @ stdcall StrToIntExW(wstr long ptr) StrToIntExW @ stdcall StrToIntW(wstr)StrToIntW -@ stub StrTrimA +@ stdcall StrTrimA(str str) StrTrimA @ stub StrTrimW @ stub UrlApplySchemeA -@ stub UrlApplySchemeW +@ stdcall UrlApplySchemeW(str ptr ptr long) UrlApplySchemeW @ stdcall UrlCanonicalizeA(str ptr ptr long) UrlCanonicalizeA @ stdcall UrlCanonicalizeW(wstr ptr ptr long) UrlCanonicalizeW @ stub UrlCombineA diff --git a/dlls/shlwapi/string.c b/dlls/shlwapi/string.c index 3cc575f7eaf..d3fd48cd772 100644 --- a/dlls/shlwapi/string.c +++ b/dlls/shlwapi/string.c @@ -503,6 +503,31 @@ LPWSTR WINAPI StrNCatW(LPWSTR front, LPCWSTR back, INT cchMax) return (front); } +/************************************************************************* + * StrTrimA [SHLWAPI] + */ +BOOL WINAPI StrTrimA(LPSTR pszSource, LPCSTR pszTrimChars) +{ + BOOL trimmed = FALSE; + LPSTR pSrc; + LPCSTR pTrim; + + TRACE("('%s', '%s');\n", pszSource, pszTrimChars); + for (pTrim = pszTrimChars; *pTrim; pTrim++) + { + for (pSrc = pszSource; *pSrc; pSrc++) + if (*pSrc == *pTrim) + { + /* match -> remove this char. + * strlen(pSrc) equiv. to the correct strlen(pSrc+1)+1 */ + memmove(pSrc, pSrc+1, strlen(pSrc)); + trimmed = TRUE; + } + } + TRACE("<- '%s'\n", pszSource); + return trimmed; +} + /************************************************************************* * wnsprintfA [SHLWAPI] */ diff --git a/dlls/shlwapi/url.c b/dlls/shlwapi/url.c index 96bf4428c04..44f14586448 100644 --- a/dlls/shlwapi/url.c +++ b/dlls/shlwapi/url.c @@ -8,6 +8,7 @@ #include "windef.h" #include "winbase.h" #include "winerror.h" +#include "wine/unicode.h" #include "shlwapi.h" #include "debugtools.h" @@ -360,3 +361,15 @@ HRESULT WINAPI UrlHashA(LPCSTR pszUrl, unsigned char *lpDest, INT nDestLen) return NOERROR; } +/************************************************************************* + * UrlApplySchemeW [SHLWAPI] + */ +HRESULT WINAPI UrlApplySchemeW(LPCWSTR pszIn, LPWSTR pszOut, LPDWORD pcchOut, DWORD dwFlags) +{ + HRESULT err = NOERROR; + FIXME("(%s %p %p %08lx): stub !\n", debugstr_w(pszIn), pszOut, pcchOut, dwFlags); + strcpyW(pszOut, pszIn); + *pcchOut = (err != E_POINTER) ? strlenW(pszOut) : 0; + return err; +} +