moved non-win32 CharNextExA implementation to util.cpp
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@5208 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
parent
9d1ab6f1ae
commit
3e9377d5b2
3 changed files with 19 additions and 16 deletions
|
@ -466,22 +466,7 @@ int CEXEBuild::preprocess_string(char *out, const char *in, WORD codepage/*=CP_A
|
||||||
const char *p=in;
|
const char *p=in;
|
||||||
while (*p)
|
while (*p)
|
||||||
{
|
{
|
||||||
const char *np;
|
const char *np = CharNextExA(codepage, p, 0);
|
||||||
#ifdef _WIN32
|
|
||||||
np = CharNextExA(codepage, p, 0);
|
|
||||||
#else
|
|
||||||
{
|
|
||||||
char buf[1024];
|
|
||||||
snprintf(buf, 1024, "CP%d", codepage);
|
|
||||||
setlocale(LC_CTYPE, buf);
|
|
||||||
int len = mblen(p, strlen(p));
|
|
||||||
if (len > 0)
|
|
||||||
np = p + len;
|
|
||||||
else
|
|
||||||
np = p + 1;
|
|
||||||
setlocale(LC_CTYPE, "");
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
if (np - p > 1) // multibyte char
|
if (np - p > 1) // multibyte char
|
||||||
{
|
{
|
||||||
int l = np - p;
|
int l = np - p;
|
||||||
|
|
|
@ -413,6 +413,23 @@ char *CharNext(const char *s) {
|
||||||
return (char *) s + l;
|
return (char *) s + l;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char *CharNextExA(WORD codepage, const char *s, int flags) {
|
||||||
|
char buf[1024];
|
||||||
|
snprintf(buf, 1024, "CP%d", codepage);
|
||||||
|
setlocale(LC_CTYPE, buf);
|
||||||
|
|
||||||
|
const char* np;
|
||||||
|
int len = mblen(s, strlen(s));
|
||||||
|
if (len > 0)
|
||||||
|
np = s + len;
|
||||||
|
else
|
||||||
|
np = s + 1;
|
||||||
|
|
||||||
|
setlocale(LC_CTYPE, "");
|
||||||
|
|
||||||
|
return (char *) np;
|
||||||
|
}
|
||||||
|
|
||||||
int wsprintf(char *s, const char *format, ...) {
|
int wsprintf(char *s, const char *format, ...) {
|
||||||
va_list val;
|
va_list val;
|
||||||
va_start(val, format);
|
va_start(val, format);
|
||||||
|
|
|
@ -65,6 +65,7 @@ int sane_system(const char *command);
|
||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
char *CharPrev(const char *s, const char *p);
|
char *CharPrev(const char *s, const char *p);
|
||||||
char *CharNext(const char *s);
|
char *CharNext(const char *s);
|
||||||
|
char *CharNextExA(WORD codepage, const char *s, int flags);
|
||||||
int wsprintf(char *s, const char *format, ...);
|
int wsprintf(char *s, const char *format, ...);
|
||||||
int WideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr,
|
int WideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr,
|
||||||
int cchWideChar, LPSTR lpMultiByteStr, int cbMultiByte, LPCSTR lpDefaultChar,
|
int cchWideChar, LPSTR lpMultiByteStr, int cbMultiByte, LPCSTR lpDefaultChar,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue