[v3 PATCH 1/4] shcore: Implement a bunch of string conversion functions.
Nikolay Sivov
nsivov at codeweavers.com
Thu Nov 29 03:41:31 CST 2018
On 11/29/18 12:22 PM, Dmitry Timoshkov wrote:
> This still looks unnecessarily complicative IMO.
>
> Nikolay Sivov <nsivov at codeweavers.com> wrote:
>
>> +DWORD WINAPI SHAnsiToAnsi(const char *src, char *dest, int dest_len)
>> +{
>> + DWORD ret;
>> +
>> + TRACE("(%s, %p, %d)\n", debugstr_a(src), dest, dest_len);
>> +
>> + if (!src || !dest || dest_len <= 0)
>> + return 0;
>> +
>> + lstrcpynA(dest, src, dest_len);
>> + ret = strlen(dest);
>> +
>> + return src[ret] ? 0 : ret + 1;
>> +}
> lstrcpynA(dest, src, dest_len);
> ret = strlen(dest);
> if (ret) ret++;
> return ret;
It won't pass the tests.
>
>> +DWORD WINAPI SHUnicodeToAnsi(const WCHAR *src, char *dest, int dest_len)
>> +{
>> + int ret = 1;
>> +
>> + TRACE("(%s, %p, %d)\n", debugstr_w(src), dest, dest_len);
>> +
>> + if (!dest || !dest_len)
>> + return 0;
>> +
>> + if (src)
>> + {
>> + ret = WideCharToMultiByte(CP_ACP, 0, src, -1, dest, dest_len, NULL, NULL);
>> + if (!ret)
>> + {
>> + dest[dest_len - 1] = 0;
>> + ret = dest_len;
>> + }
>> + }
>> + else
>> + dest[0] = 0;
>> +
>> + return ret;
>> +}
> if (!src)
> {
> *dst = 0;
> return 1;
> }
>
> if (!WideCharToMultiByte(CP_ACP, 0, src, -1, dest, dest_len, NULL, NULL))
> dest[dest_len - 1] = 0;
> return dest_len;
This does the same thing.
More information about the wine-devel
mailing list