ReactOS 0.4.16-dev-2279-gc890759
localeansi.c File Reference
#include <k32.h>
Include dependency graph for localeansi.c:

Go to the source code of this file.

Functions

INT WINAPI FoldStringA (DWORD dwFlags, LPCSTR src, INT srclen, LPSTR dst, INT dstlen)
 

Function Documentation

◆ FoldStringA()

INT WINAPI FoldStringA ( DWORD  dwFlags,
LPCSTR  src,
INT  srclen,
LPSTR  dst,
INT  dstlen 
)

Definition at line 44 of file localeansi.c.

46{
47 INT ret = 0, srclenW = 0;
48 WCHAR *srcW = NULL, *dstW = NULL;
49
50 if (!src || !srclen || dstlen < 0 || (dstlen && !dst) || src == dst)
51 {
53 return 0;
54 }
55
57 src, srclen, NULL, 0);
58 srcW = HeapAlloc(GetProcessHeap(), 0, srclenW * sizeof(WCHAR));
59
60 if (!srcW)
61 {
63 goto FoldStringA_exit;
64 }
65
67 src, srclen, srcW, srclenW);
68
69 dwFlags = (dwFlags & ~MAP_PRECOMPOSED) | MAP_FOLDCZONE;
70
71 ret = FoldStringW(dwFlags, srcW, srclenW, NULL, 0);
72 if (ret && dstlen)
73 {
74 dstW = HeapAlloc(GetProcessHeap(), 0, ret * sizeof(WCHAR));
75
76 if (!dstW)
77 {
79 goto FoldStringA_exit;
80 }
81
82 ret = FoldStringW(dwFlags, srcW, srclenW, dstW, ret);
83 if (!WideCharToMultiByte(CP_ACP, 0, dstW, ret, dst, dstlen, NULL, NULL))
84 {
85 ret = 0;
87 }
88 }
89
90 HeapFree(GetProcessHeap(), 0, dstW);
91
92FoldStringA_exit:
93 HeapFree(GetProcessHeap(), 0, srcW);
94 return ret;
95}
#define ERROR_NOT_ENOUGH_MEMORY
Definition: dderror.h:7
#define ERROR_INSUFFICIENT_BUFFER
Definition: dderror.h:10
#define NULL
Definition: types.h:112
#define GetProcessHeap()
Definition: compat.h:736
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
#define CP_ACP
Definition: compat.h:109
#define SetLastError(x)
Definition: compat.h:752
#define HeapAlloc
Definition: compat.h:733
#define HeapFree(x, y, z)
Definition: compat.h:735
#define WideCharToMultiByte
Definition: compat.h:111
#define MultiByteToWideChar
Definition: compat.h:110
INT WINAPI FoldStringW(DWORD dwFlags, LPCWSTR src, INT srclen, LPWSTR dst, INT dstlen)
Definition: locale.c:3911
return ret
Definition: mutex.c:146
GLenum src
Definition: glext.h:6340
GLenum GLenum dst
Definition: glext.h:6340
#define MB_COMPOSITE
Definition: unicode.h:40
static DWORD LPDWORD LPCSTR DWORD srclen
Definition: directory.c:52
static DWORD dstlen
Definition: directory.c:51
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
Definition: netsh.h:141
int32_t INT
Definition: typedefs.h:58
#define MAP_COMPOSITE
Definition: winnls.h:234
#define MAP_FOLDCZONE
Definition: winnls.h:231
__wchar_t WCHAR
Definition: xmlstorage.h:180

Referenced by test_FoldStringA().