23 #include "wine/port.h" 30 #define NONAMELESSUNION 34 #define NO_SHLWAPI_REG 35 #define NO_SHLWAPI_STREAM 42 #include "wine/unicode.h" 56 LPWSTR thousand_buffer,
int thousand_bufwlen)
66 fmt->lpThousandSep = thousand_buffer;
67 fmt->lpDecimalSep = decimal_buffer;
75 for (
c = grouping; *
c;
c++)
76 if (*
c >=
'0' && *
c <
'9')
79 fmt->Grouping += *
c -
'0';
82 if (
fmt->Grouping % 10 == 0)
99 WCHAR decimal[8], thousand[8];
102 BOOL neg = (qdwValue < 0);
105 thousand,
sizeof thousand /
sizeof (
WCHAR));
111 *(--
c) =
'0' + (qdwValue%10);
113 }
while (qdwValue > 0);
131 static const WCHAR flfmt[] = {
'%',
'f',0};
134 WCHAR decimal[8], thousand[8];
139 thousand,
sizeof thousand /
sizeof (
WCHAR));
140 fmt.NumDigits = decimals;
159 char str1[3], str2[3];
207 TRACE(
"(%d,%d)\n", ch1, ch2);
245 return (
LPSTR)lpszStr;
264 lpszRet =
strchrW(lpszStr, ch);
291 return (
LPSTR)lpszStr;
330 while (*lpszStr &&
cchMax-- > 0)
456 if (lpszStr && lpszSrc)
488 if (lpszCat && ichAt <
cchMax)
491 while (ichAt <
cchMax - 1 && *lpszCat)
493 *lpszStr++ = *lpszCat++;
518 if (lpszStr && lpszSrc)
567 if (!lpszStr || !lpszSearch || !*lpszSearch)
570 iLen =
strlen(lpszSearch);
573 while (lpszStr + iLen <=
end)
575 if (!pStrCmpFn(lpszStr, lpszSearch, iLen))
576 return (
LPSTR)lpszStr;
610 if (!lpszStr || !lpszSearch || !*lpszSearch)
return NULL;
611 return strstrW( lpszStr, lpszSearch );
635 if (!lpszStr || !lpszSearch || !*lpszSearch)
639 ch1 = *lpszSearch << 8 | (
UCHAR)lpszSearch[1];
645 lpszEnd = lpszStr +
lstrlenA(lpszStr);
649 while (lpszStr + iLen <= lpszEnd && *lpszStr)
654 if (!
StrCmpNIA(lpszStr, lpszSearch, iLen))
655 lpszRet = (
LPSTR)lpszStr;
674 if (!lpszStr || !lpszSearch || !*lpszSearch)
680 lpszEnd = lpszStr +
strlenW(lpszStr);
684 while (lpszStr + iLen <= lpszEnd && *lpszStr)
686 if (!
ChrCmpIW(*lpszSearch, *lpszStr))
688 if (!
StrCmpNIW(lpszStr, lpszSearch, iLen))
689 lpszRet = (
LPWSTR)lpszStr;
727 if (!lpszStr || !lpszSearch || !*lpszSearch)
733 while (lpszStr + iLen <=
end)
735 if (!
StrCmpNIW(lpszStr, lpszSearch, iLen))
762 if (!lpFirst || !lpSrch || !*lpSrch || !
cchMax)
767 for (
i =
cchMax; *lpFirst && (
i > 0);
i--, lpFirst++)
797 if (!lpFirst || !lpSrch || !*lpSrch || !
cchMax)
802 for (
i =
cchMax; *lpFirst && (
i > 0);
i--, lpFirst++)
834 WARN(
"Invalid lpszStr would crash under Win32!\n");
838 if (*lpszStr ==
'-' ||
isdigit(*lpszStr))
856 WARN(
"Invalid lpszStr would crash under Win32!\n");
860 if (*lpszStr ==
'-' ||
isdigitW(*lpszStr))
894 if (bRes) *lpiRet =
li;
910 if (!lpszStr || !lpiRet)
912 WARN(
"Invalid parameter would crash under Win32!\n");
926 else if (*lpszStr ==
'+')
930 *lpszStr ==
'0' &&
tolower(lpszStr[1]) ==
'x')
942 iRet += (*lpszStr -
'0');
944 iRet += 10 + (
tolower(*lpszStr) -
'a');
958 iRet += (*lpszStr -
'0');
961 *lpiRet = bNegative ? -iRet : iRet;
978 if (bRes) *lpiRet =
li;
994 if (!lpszStr || !lpiRet)
996 WARN(
"Invalid parameter would crash under Win32!\n");
1002 while (
isspaceW(*lpszStr)) lpszStr++;
1004 if (*lpszStr ==
'-')
1009 else if (*lpszStr ==
'+')
1013 *lpszStr ==
'0' &&
tolowerW(lpszStr[1]) ==
'x')
1025 iRet += (*lpszStr -
'0');
1027 iRet += 10 + (
tolowerW(*lpszStr) -
'a');
1041 iRet += (*lpszStr -
'0');
1044 *lpiRet = bNegative ? -iRet : iRet;
1071 iLen = lpszStr ?
strlen(lpszStr) + 1 : 1;
1077 memcpy(lpszRet, lpszStr, iLen);
1096 iLen = (lpszStr ?
strlenW(lpszStr) + 1 : 1) *
sizeof(
WCHAR);
1102 memcpy(lpszRet, lpszStr, iLen);
1118 LPCSTR lpszRead = lpszStr;
1119 if (lpszStr && *lpszStr && lpszMatch)
1123 LPCSTR lpszTest = pStrChrFn(lpszMatch, *lpszRead);
1132 return lpszRead - lpszStr;
1163 if (!lpszStr || !lpszMatch)
return 0;
1164 return strspnW( lpszStr, lpszMatch );
1195 if (!lpszStr || !lpszMatch)
return 0;
1196 return strcspnW( lpszStr, lpszMatch );
1231 if (lpszStr && *lpszStr && lpszMatch)
1235 if (
StrChrIW(lpszMatch, *lpszRead))
break;
1239 return lpszRead - lpszStr;
1259 if (lpszStr && lpszMatch && *lpszMatch)
1263 if (
StrChrA(lpszMatch, *lpszStr))
1264 return (
LPSTR)lpszStr;
1278 if (!lpszStr || !lpszMatch)
return NULL;
1279 return strpbrkW( lpszStr, lpszMatch );
1298 lpszEnd = lpszStr +
lstrlenA(lpszStr);
1300 while (*lpszStr && lpszStr <= lpszEnd)
1302 ch2 =
IsDBCSLeadByte(*lpszStr)? *lpszStr << 8 | lpszStr[1] : *lpszStr;
1304 if (!pChrCmpFn(ch, ch2))
1309 return (
LPSTR)lpszRet;
1419 WARN(
"Invalid lpszStr would crash under Win32!\n");
1444 WARN(
"Invalid lpszStr would crash under Win32!\n");
1484 WARN(
"Invalid lpStrRet would crash under Win32!\n");
1511 FIXME(
"unknown type!\n");
1531 WARN(
"Invalid lpStrRet would crash under Win32!\n");
1539 switch (
src->uType) {
1542 if (!
src->u.pOleStr)
1571 FIXME(
"unknown type!\n");
1596 switch (lpStrRet->
uType)
1627 switch (lpStrRet->
uType)
1690 switch (lpStrRet->
uType)
1745 static const WCHAR kb[] = {
' ',
'K',
'B',0};
1746 LONGLONG llKB = (llBytes + 1023) >> 10;
1780 LPSTR lpszRet = lpszStr;
1786 WARN(
"Invalid lpszStr would crash under Win32!\n");
1801 LPWSTR lpszRet = lpszStr;
1807 WARN(
"Invalid lpszStr would crash under Win32\n");
1831 LPSTR lpszRead = lpszStr;
1836 if (lpszRead && *lpszRead)
1838 while (*lpszRead &&
StrChrA(lpszTrim, *lpszRead))
1841 dwLen =
strlen(lpszRead);
1843 if (lpszRead != lpszStr)
1845 memmove(lpszStr, lpszRead, dwLen + 1);
1850 lpszRead = lpszStr + dwLen;
1851 while (
StrChrA(lpszTrim, lpszRead[-1]))
1852 lpszRead =
CharPrevA(lpszStr, lpszRead);
1854 if (lpszRead != lpszStr + dwLen)
1872 LPWSTR lpszRead = lpszStr;
1877 if (lpszRead && *lpszRead)
1879 while (*lpszRead &&
StrChrW(lpszTrim, *lpszRead)) lpszRead++;
1883 if (lpszRead != lpszStr)
1885 memmove(lpszStr, lpszRead, (dwLen + 1) *
sizeof(
WCHAR));
1890 lpszRead = lpszStr + dwLen;
1891 while (
StrChrW(lpszTrim, lpszRead[-1]))
1894 if (lpszRead != lpszStr + dwLen)
2039 DWORD dwNextDigit = dwNum % 10;
2040 *lpszOut-- =
'0' + dwNextDigit;
2041 dwNum = (dwNum - dwNextDigit) / 10;
2042 }
while (dwNum > 0);
2058 if (--dwDigits == 0)
2074 UINT uClassStringId,
int iDigits)
2076 WCHAR szBuff[64], *szOut = szBuff + 32;
2122 TRACE(
"(%p,%d,%d,%d)\n", lpszStr,
cchMax, dwMS, iDigits);
2144 TRACE(
"(%p,%d,%d,%d)\n", lpszStr,
cchMax, dwMS, iDigits);
2149 DWORD dwHours, dwMinutes;
2151 if (!iDigits ||
cchMax == 1)
2158 dwMS = (dwMS + 500) / 1000;
2159 dwHours = dwMS / 3600;
2160 dwMS -= dwHours * 3600;
2161 dwMinutes = dwMS / 60;
2162 dwMS -= dwMinutes * 60;
2169 if (dwMinutes && iDigits)
2201 TRACE(
"(%d,%s,%s,%d)\n", bCase,
2223 TRACE(
"(%d,%s,%s,%d)\n", bCase,
2253 if (
lpszDest && lpszSrc && iLen > 0)
2255 while ((iLen-- > 1) && *lpszSrc)
2272 if (
lpszDest && lpszSrc && iLen > 0)
2274 while ((iLen-- > 1) && *lpszSrc)
2302 if (lpszStr && lpszComp)
2321 else if (iStr > iComp)
2334 iDiff =
ChrCmpIW(*lpszStr,*lpszComp);
2382 #define KB ((ULONGLONG)1024) 2384 #define GB (KB*KB*KB) 2385 #define TB (KB*KB*KB*KB) 2386 #define PB (KB*KB*KB*KB*KB) 2391 { 10*
KB, 10.24, 100.0, 2, IDS_KB_FORMAT },
2392 { 100*
KB, 102.4, 10.0, 1, IDS_KB_FORMAT },
2393 { 1000*
KB, 1024.0, 1.0, 0, IDS_KB_FORMAT },
2394 { 10*
MB, 10485.76, 100.0, 2, IDS_MB_FORMAT },
2395 { 100*
MB, 104857.6, 10.0, 1, IDS_MB_FORMAT },
2396 { 1000*
MB, 1048576.0, 1.0, 0, IDS_MB_FORMAT },
2397 { 10*
GB, 10737418.24, 100.0, 2, IDS_GB_FORMAT },
2398 { 100*
GB, 107374182.4, 10.0, 1, IDS_GB_FORMAT },
2399 { 1000*
GB, 1073741824.0, 1.0, 0, IDS_GB_FORMAT },
2400 { 10*
TB, 10485.76, 100.0, 2, IDS_TB_FORMAT },
2401 { 100*
TB, 104857.6, 10.0, 1, IDS_TB_FORMAT },
2402 { 1000*
TB, 1048576.0, 1.0, 0, IDS_TB_FORMAT },
2403 { 10*
PB, 10737418.24, 100.00, 2, IDS_PB_FORMAT },
2404 { 100*
PB, 107374182.4, 10.00, 1, IDS_PB_FORMAT },
2405 { 1000*
PB, 1073741824.0, 1.00, 0, IDS_PB_FORMAT },
2406 { 0, 10995116277.76, 100.00, 2, IDS_EB_FORMAT }
2408 { 10*
KB, 10.24, 100.0, 2,
'K' },
2409 { 100*
KB, 102.4, 10.0, 1,
'K' },
2410 { 1000*
KB, 1024.0, 1.0, 0,
'K' },
2411 { 10*
MB, 10485.76, 100.0, 2,
'M' },
2412 { 100*
MB, 104857.6, 10.0, 1,
'M' },
2413 { 1000*
MB, 1048576.0, 1.0, 0,
'M' },
2414 { 10*
GB, 10737418.24, 100.0, 2,
'G' },
2415 { 100*
GB, 107374182.4, 10.0, 1,
'G' },
2416 { 1000*
GB, 1073741824.0, 1.0, 0,
'G' },
2417 { 10*
TB, 10485.76, 100.0, 2,
'T' },
2418 { 100*
TB, 104857.6, 10.0, 1,
'T' },
2419 { 1000*
TB, 1048576.0, 1.0, 0,
'T' },
2420 { 10*
PB, 10737418.24, 100.00, 2,
'P' },
2421 { 100*
PB, 107374182.4, 10.00, 1,
'P' },
2422 { 1000*
PB, 1073741824.0, 1.00, 0,
'P' },
2423 { 0, 10995116277.76, 100.00, 2,
'E' }
2427 WCHAR szBuff[40], wszFormat[40];
2429 WCHAR wszAdd[] = {
' ',
'?',
'B',0};
2441 WCHAR wszBytesFormat[64];
2452 if (llBytes < bfFormats[
i].dLimit)
2463 dBytes = (
double)(llBytes >> 20) + 0.001;
2465 dBytes = (
double)llBytes + 0.00001;
2542 while(lpStr < lastByte)
2569 LPSTR lpszIter, lpszTmp;
2576 if ((lpszIter =
StrChrA(lpszStr,
'&')))
2581 if (*lpszTmp !=
'&')
2598 LPWSTR lpszIter, lpszTmp;
2605 if ((lpszIter =
StrChrW(lpszStr,
'&')))
2607 lpszTmp = lpszIter + 1;
2610 if (*lpszTmp !=
'&')
2690 if (!lpDstStr || !
dstlen)
2717 lpDstStr[needed] =
'\0';
2733 if (reqLen > 0)
memcpy(lpDstStr,
mem, reqLen-1);
2760 lpDstStr[reqLen-1] =
'\0';
2808 lpszRet =
StrCpyNXA(lpszDst, lpszSrc, iLen);
2809 return lpszRet - lpszDst + 1;
2823 lpszRet =
StrCpyNXW(lpszDst, lpszSrc, iLen);
2824 return lpszRet - lpszDst + 1;
2866 return !
strcmpW(lpSrcStr, szBuff);
2891 index_str =
strchrW(dllname,
',');
2893 if(!index_str)
goto end;
2912 FIXME(
"can't handle non-negative indices (%d)\n",
index);
BOOL WINAPI StrToInt64ExA(LPCSTR lpszStr, DWORD dwFlags, LONGLONG *lpiRet)
LPWSTR WINAPI StrFormatByteSizeW(LONGLONG llBytes, LPWSTR lpszDest, UINT cchMax)
char WINAPI SHStripMneumonicA(LPCSTR lpszStr)
LPWSTR WINAPI StrPBrkW(LPCWSTR lpszStr, LPCWSTR lpszMatch)
#define memmove(s1, s2, n)
WCHAR WINAPI SHStripMneumonicW(LPCWSTR lpszStr)
LPWSTR WINAPI StrCatW(LPWSTR lpszStr, LPCWSTR lpszSrc)
static BOOL WINAPI SHLWAPI_ChrCmpA(WORD ch1, WORD ch2)
BOOL WINAPI StrToIntExA(LPCSTR lpszStr, DWORD dwFlags, LPINT lpiRet)
VOID WINAPI CoTaskMemFree(LPVOID ptr)
WINE_UNICODE_INLINE unsigned int strlenW(const WCHAR *str)
INT WINAPI StrCmpNW(LPCWSTR lpszStr, LPCWSTR lpszComp, INT iLen)
LPWSTR WINAPI StrNCatW(LPWSTR lpszStr, LPCWSTR lpszCat, INT cchMax)
INT WINAPI StrFromTimeIntervalA(LPSTR lpszStr, UINT cchMax, DWORD dwMS, int iDigits)
#define WideCharToMultiByte
LPSTR WINAPI StrRStrIA(LPCSTR lpszStr, LPCSTR lpszEnd, LPCSTR lpszSearch)
static BOOL SHLWAPI_ChrCmpHelperA(WORD ch1, WORD ch2, DWORD dwFlags)
ACPI_SIZE strlen(const char *String)
LPWSTR WINAPI StrCpyNXW(LPWSTR lpszDest, LPCWSTR lpszSrc, int iLen)
static HRESULT _SHStrDupAToBSTR(LPCSTR src, BSTR *pBstrOut)
LPSTR WINAPI StrFormatByteSize64A(LONGLONG llBytes, LPSTR lpszDest, UINT cchMax)
LPWSTR WINAPI StrCatBuffW(LPWSTR lpszStr, LPCWSTR lpszCat, INT cchMax)
WINE_UNICODE_INLINE WCHAR * strchrW(const WCHAR *str, WCHAR ch)
HRESULT WINAPI StrRetToBufW(LPSTRRET src, const ITEMIDLIST *pidl, LPWSTR dest, UINT len)
#define LOCALE_USER_DEFAULT
WINE_UNICODE_INLINE int isspaceW(WCHAR wc)
GLuint GLuint GLsizei count
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryExW(LPCWSTR lpLibFileName, HANDLE hFile, DWORD dwFlags)
LPSTR WINAPI StrChrIA(LPCSTR lpszStr, WORD ch)
LPWSTR WINAPI StrCpyNW(LPWSTR dst, LPCWSTR src, int count)
LPWSTR WINAPI StrChrNW(LPCWSTR lpszStr, WCHAR ch, UINT cchMax)
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
static HRESULT _SHStrDupAW(LPCWSTR, LPSTR *)
DWORD WINAPI SHUnicodeToUnicode(LPCWSTR lpszSrc, LPWSTR lpszDst, int iLen)
DWORD WINAPI StrCatChainW(LPWSTR lpszStr, DWORD cchMax, DWORD ichAt, LPCWSTR lpszCat)
DWORD WINAPI GetLastError(VOID)
LPSTR WINAPI StrFormatKBSizeA(LONGLONG llBytes, LPSTR lpszDest, UINT cchMax)
INT WINAPI StrFromTimeIntervalW(LPWSTR lpszStr, UINT cchMax, DWORD dwMS, int iDigits)
LPWSTR WINAPI StrRStrIW(LPCWSTR lpszStr, LPCWSTR lpszEnd, LPCWSTR lpszSearch)
static void FillNumberFmt(NUMBERFMTW *fmt, LPWSTR decimal_buffer, int decimal_bufwlen, LPWSTR thousand_buffer, int thousand_bufwlen)
WINE_UNICODE_INLINE size_t strcspnW(const WCHAR *str, const WCHAR *reject)
HRESULT WINAPI SHStrDupW(LPCWSTR src, LPWSTR *dest)
BOOL WINAPI IsCharSpaceW(WCHAR wc)
static int SHLWAPI_StrSpnHelperA(LPCSTR lpszStr, LPCSTR lpszMatch, LPSTR(WINAPI *pStrChrFn)(LPCSTR, WORD), BOOL bInvert)
int WINAPI StrSpnW(LPCWSTR lpszStr, LPCWSTR lpszMatch)
LPSTR WINAPI CharNextA(_In_ LPCSTR)
LPWSTR WINAPI StrDupW(LPCWSTR lpszStr)
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
#define IDS_TIME_INTERVAL_SECONDS
WINE_UNICODE_INLINE int strncmpW(const WCHAR *str1, const WCHAR *str2, int n)
#define LOCALE_INEGNUMBER
int WINAPI StrCSpnIA(LPCSTR lpszStr, LPCSTR lpszMatch)
HRESULT WINAPI SHStrDupA(LPCSTR lpszStr, LPWSTR *lppszDest)
INT WINAPI GetLocaleInfoW(LCID lcid, LCTYPE lctype, LPWSTR buffer, INT len)
BOOL WINAPI StrToInt64ExW(LPCWSTR lpszStr, DWORD dwFlags, LONGLONG *lpiRet)
GLenum GLuint GLenum GLsizei const GLchar * buf
static HRESULT _SHStrDupAA(LPCSTR, LPSTR *)
struct tagSHLWAPI_BYTEFORMATS SHLWAPI_BYTEFORMATS
WINE_UNICODE_INLINE size_t strspnW(const WCHAR *str, const WCHAR *accept)
BOOL WINAPI GetStringTypeA(LCID locale, DWORD type, LPCSTR src, INT count, LPWORD chartype)
LPSTR WINAPI StrChrA(LPCSTR lpszStr, WORD ch)
LPWSTR WINAPI StrStrIW(LPCWSTR lpszStr, LPCWSTR lpszSearch)
BOOL WINAPI StrIsIntlEqualA(BOOL bCase, LPCSTR lpszStr, LPCSTR lpszComp, int iLen)
BOOL WINAPI StrTrimA(LPSTR lpszStr, LPCSTR lpszTrim)
static const char mbstate_t *static wchar_t const char mbstate_t *static const wchar_t int *static double
LPSTR WINAPI StrPBrkA(LPCSTR lpszStr, LPCSTR lpszMatch)
LPSTR WINAPI StrRChrA(LPCSTR lpszStr, LPCSTR lpszEnd, WORD ch)
DWORD WINAPI SHTruncateString(LPSTR lpStr, DWORD size)
LPSTR WINAPI StrStrA(LPCSTR lpszStr, LPCSTR lpszSearch)
BSTR WINAPI SysAllocString(LPCOLESTR str)
LPWSTR WINAPI StrStrNW(LPCWSTR lpFirst, LPCWSTR lpSrch, UINT cchMax)
BOOL WINAPI IsDBCSLeadByte(BYTE TestByte)
LCID WINAPI GetSystemDefaultLCID(void)
static LPSTR SHLWAPI_StrStrHelperA(LPCSTR lpszStr, LPCSTR lpszSearch, INT(WINAPI *pStrCmpFn)(LPCSTR, LPCSTR, INT))
static int SHLWAPI_FormatSignificant(LPWSTR lpszNum, int dwDigits)
#define IDS_TIME_INTERVAL_HOURS
WINE_UNICODE_INLINE WCHAR toupperW(WCHAR ch)
BOOL WINAPI ChrCmpIA(WORD ch1, WORD ch2)
INT WINAPI CompareStringA(LCID lcid, DWORD flags, LPCSTR str1, INT len1, LPCSTR str2, INT len2)
HRESULT WINAPI StrRetToStrA(LPSTRRET lpStrRet, const ITEMIDLIST *pidl, LPSTR *ppszName)
INT WINAPI CompareStringW(LCID lcid, DWORD flags, LPCWSTR str1, INT len1, LPCWSTR str2, INT len2)
static int SHLWAPI_WriteTimeClass(LPWSTR lpszOut, DWORD dwValue, UINT uClassStringId, int iDigits)
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
LPSTR WINAPI StrCpyNXA(LPSTR lpszDest, LPCSTR lpszSrc, int iLen)
WINE_DEFAULT_DEBUG_CHANNEL(commctrl)
BOOL WINAPI GetStringTypeW(DWORD type, LPCWSTR src, INT count, LPWORD chartype)
WINE_UNICODE_INLINE WCHAR * strpbrkW(const WCHAR *str, const WCHAR *accept)
WINE_UNICODE_INLINE WCHAR tolowerW(WCHAR ch)
DWORD WINAPI SHAnsiToUnicode(LPCSTR lpSrcStr, LPWSTR lpDstStr, int iLen)
INT WINAPI StrCmpNIA(LPCSTR lpszStr, LPCSTR lpszComp, INT iLen)
INT WINAPI StrCmpNA(LPCSTR lpszStr, LPCSTR lpszComp, INT iLen)
LPSTR WINAPI StrStrIA(LPCSTR lpszStr, LPCSTR lpszSearch)
BOOL WINAPI StrIsIntlEqualW(BOOL bCase, LPCWSTR lpszStr, LPCWSTR lpszComp, int iLen)
DWORD WINAPI SHAnsiToUnicodeCP(DWORD dwCp, LPCSTR lpSrcStr, LPWSTR lpDstStr, int iLen)
BOOL WINAPI StrToIntExW(LPCWSTR lpszStr, DWORD dwFlags, LPINT lpiRet)
LPSTR WINAPI StrNCatA(LPSTR lpszStr, LPCSTR lpszCat, INT cchMax)
LPSTR WINAPI StrDupA(LPCSTR lpszStr)
WINE_UNICODE_INLINE int isxdigitW(WCHAR wc)
LPSTR WINAPI StrRChrIA(LPCSTR lpszStr, LPCSTR lpszEnd, WORD ch)
INT WINAPI StrCmpLogicalW(LPCWSTR lpszStr, LPCWSTR lpszComp)
LPWSTR WINAPI StrChrIW(LPCWSTR lpszStr, WCHAR ch)
int WINAPI StrSpnA(LPCSTR lpszStr, LPCSTR lpszMatch)
LPWSTR WINAPI StrRChrIW(LPCWSTR str, LPCWSTR end, WORD ch)
LPWSTR WINAPI StrFormatKBSizeW(LONGLONG llBytes, LPWSTR lpszDest, UINT cchMax)
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
#define memcpy(s1, s2, n)
INT WINAPI SHUnicodeToAnsi(LPCWSTR lpSrcStr, LPSTR lpDstStr, INT iLen)
DWORD WINAPI SHUnicodeToAnsiCP(UINT CodePage, LPCWSTR lpSrcStr, LPSTR lpDstStr, int dstlen)
LPWSTR WINAPI StrCpyW(LPWSTR lpszStr, LPCWSTR lpszSrc)
#define E_NOT_SUFFICIENT_BUFFER
HRESULT WINAPI StrRetToBSTR(STRRET *lpStrRet, LPCITEMIDLIST pidl, BSTR *pBstrOut)
LPSTR WINAPI CharPrevA(_In_ LPCSTR, _In_ LPCSTR)
int WINAPI StrCSpnW(LPCWSTR lpszStr, LPCWSTR lpszMatch)
static PEXPLICIT_ACCESSW *static HMODULE hmod
HRESULT WINAPI SHLoadIndirectString(LPCWSTR src, LPWSTR dst, UINT dst_len, void **reserved)
LPWSTR WINAPI StrStrW(LPCWSTR lpszStr, LPCWSTR lpszSearch)
#define LOAD_LIBRARY_AS_DATAFILE
static int FormatDouble(double value, int decimals, LPWSTR pszBuf, int cchBuf)
LPSTR WINAPI StrCatBuffA(LPSTR lpszStr, LPCSTR lpszCat, INT cchMax)
int WINAPI StrCmpW(LPCWSTR lpszStr, LPCWSTR lpszComp)
WINE_UNICODE_INLINE WCHAR * strcpyW(WCHAR *dst, const WCHAR *src)
int WINAPI lstrlenA(LPCSTR lpString)
static const WCHAR emptyW[]
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
static LPSTR SHLWAPI_StrRChrHelperA(LPCSTR lpszStr, LPCSTR lpszEnd, WORD ch, BOOL(WINAPI *pChrCmpFn)(WORD, WORD))
BOOL WINAPI DoesStringRoundTripA(LPCSTR lpSrcStr, LPSTR lpDst, INT iLen)
int WINAPI StrCSpnIW(LPCWSTR lpszStr, LPCWSTR lpszMatch)
void shell(int argc, const char *argv[])
HLOCAL NTAPI LocalFree(HLOCAL hMem)
WINE_UNICODE_INLINE WCHAR * strcatW(WCHAR *dst, const WCHAR *src)
WINE_UNICODE_INLINE int isdigitW(WCHAR wc)
LPWSTR WINAPI StrChrW(LPCWSTR lpszStr, WCHAR ch)
HINSTANCE shlwapi_hInstance
INT WINAPI StrToIntW(LPCWSTR lpString)
#define MultiByteToWideChar
LPWSTR WINAPI StrStrNIW(LPCWSTR lpFirst, LPCWSTR lpSrch, UINT cchMax)
BOOL WINAPI StrTrimW(LPWSTR lpszStr, LPCWSTR lpszTrim)
BOOL WINAPI IsCharSpaceA(CHAR c)
BOOL WINAPI DoesStringRoundTripW(LPCWSTR lpSrcStr, LPSTR lpDst, INT iLen)
static CONVERTINETUNICODETOMULTIBYTE ConvertINetUnicodeToMultiByte
DWORD WINAPI SHAnsiToAnsi(LPCSTR lpszSrc, LPSTR lpszDst, int iLen)
WINE_UNICODE_INLINE int strcmpW(const WCHAR *str1, const WCHAR *str2)
HRESULT WINAPI StrRetToBufA(LPSTRRET src, const ITEMIDLIST *pidl, LPSTR dest, UINT len)
static __inline const char * wine_dbgstr_longlong(ULONGLONG ll)
HLOCAL NTAPI LocalAlloc(UINT uFlags, SIZE_T dwBytes)
INT WINAPI StrToIntA(LPCSTR lpszStr)
static LPWSTR SHLWAPI_WriteReverseNum(LPWSTR lpszOut, DWORD dwNum)
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
_Check_return_ _CRTIMP double __cdecl floor(_In_ double x)
LPWSTR WINAPI StrRChrW(LPCWSTR str, LPCWSTR end, WORD ch)
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
#define HeapFree(x, y, z)
int WINAPI StrCSpnA(LPCSTR lpszStr, LPCSTR lpszMatch)
int WINAPI StrCmpIW(LPCWSTR lpszStr, LPCWSTR lpszComp)
static int FormatInt(LONGLONG qdwValue, LPWSTR pszBuf, int cchBuf)
LCID WINAPI GetThreadLocale(void)
LPSTR WINAPI StrFormatByteSizeA(DWORD dwBytes, LPSTR lpszDest, UINT cchMax)
HRESULT WINAPI StrRetToStrW(LPSTRRET lpStrRet, const ITEMIDLIST *pidl, LPWSTR *ppszName)
WINE_UNICODE_INLINE int atoiW(const WCHAR *str)
BOOL WINAPI ChrCmpIW(WCHAR ch1, WCHAR ch2)
#define IDS_TIME_INTERVAL_MINUTES
#define ERROR_INSUFFICIENT_BUFFER
INT WINAPI StrCmpNIW(LPCWSTR lpszStr, LPCWSTR lpszComp, INT iLen)