added qse_httpd_getserveroptstd() and qse_httpd_setserveroptstd().
added an output length parameter to qse_mbstowcsdup() and similar functions
This commit is contained in:
@ -332,9 +332,9 @@ static QSE_INLINE int insert_wcs (
|
||||
qse_mchar_t* namedup, * valuedup[2];
|
||||
int n;
|
||||
|
||||
namedup = qse_wcstombsdup (name, env->mmgr); /* TODO: ignore mbwcerr */
|
||||
namedup = qse_wcstombsdup (name, QSE_NULL, env->mmgr); /* TODO: ignore mbwcerr */
|
||||
if (namedup == QSE_NULL) return -1;
|
||||
valuedup[0] = qse_wcsatombsdup (value, env->mmgr); /* TODO: ignore mbwcerr */
|
||||
valuedup[0] = qse_wcsatombsdup (value, QSE_NULL, env->mmgr); /* TODO: ignore mbwcerr */
|
||||
if (valuedup == QSE_NULL)
|
||||
{
|
||||
QSE_MMGR_FREE (env->mmgr, namedup);
|
||||
@ -357,9 +357,9 @@ static QSE_INLINE int insert_mbs (
|
||||
qse_wchar_t* namedup, * valuedup[2];
|
||||
int n;
|
||||
|
||||
namedup = qse_mbstowcsalldup (name, env->mmgr);
|
||||
namedup = qse_mbstowcsalldup (name, QSE_NULL, env->mmgr);
|
||||
if (namedup == QSE_NULL) return -1;
|
||||
valuedup[0] = qse_mbsatowcsalldup (value, env->mmgr);
|
||||
valuedup[0] = qse_mbsatowcsalldup (value, QSE_NULL, env->mmgr);
|
||||
if (valuedup[0] == QSE_NULL)
|
||||
{
|
||||
QSE_MMGR_FREE (env->mmgr, namedup);
|
||||
@ -495,7 +495,7 @@ static int insert_sys_wcs (qse_env_t* env, const qse_wchar_t* name)
|
||||
qse_mchar_t* namedup;
|
||||
int ret = -1;
|
||||
|
||||
namedup = qse_wcstombsdup (name, env->mmgr); /* TODO: ignore mbwcerr */
|
||||
namedup = qse_wcstombsdup (name, QSE_NULL, env->mmgr); /* TODO: ignore mbwcerr */
|
||||
if (namedup)
|
||||
{
|
||||
ret = insert_sys_mbs (env, namedup);
|
||||
@ -513,7 +513,7 @@ static int insert_sys_mbs (qse_env_t* env, const qse_mchar_t* name)
|
||||
qse_wchar_t* namedup;
|
||||
int ret = -1;
|
||||
|
||||
namedup = qse_mbstowcsdup (name, env->mmgr); /* TODO: ignroe mbwcerr */
|
||||
namedup = qse_mbstowcsdup (name, QSE_NULL, env->mmgr); /* TODO: ignore mbwcerr */
|
||||
if (namedup)
|
||||
{
|
||||
ret = insert_sys_wcs (env, namedup);
|
||||
@ -672,7 +672,7 @@ int qse_env_deletewcs (qse_env_t* env, const qse_wchar_t* name)
|
||||
qse_mchar_t* namedup;
|
||||
int n;
|
||||
|
||||
namedup = qse_wcstombsdup (name, env->mmgr); /* TODO: ignore mbwcerr */
|
||||
namedup = qse_wcstombsdup (name, QSE_NULL, env->mmgr); /* TODO: ignore mbwcerr */
|
||||
if (namedup == QSE_NULL) return -1;
|
||||
|
||||
n = deletem (env, namedup);
|
||||
@ -689,7 +689,7 @@ int qse_env_deletembs (qse_env_t* env, const qse_mchar_t* name)
|
||||
qse_wchar_t* namedup;
|
||||
int n;
|
||||
|
||||
namedup = qse_mbstowcsalldup (name, env->mmgr);
|
||||
namedup = qse_mbstowcsalldup (name, QSE_NULL, env->mmgr);
|
||||
if (namedup == QSE_NULL) return -1;
|
||||
|
||||
n = deletew (env, namedup);
|
||||
|
@ -451,7 +451,7 @@ int qse_fio_init (
|
||||
{
|
||||
/* the static buffer is too small.
|
||||
* dynamically allocate a buffer */
|
||||
path_mb = qse_wcstombsdup (path, mmgr);
|
||||
path_mb = qse_wcstombsdup (path, QSE_NULL, mmgr);
|
||||
if (path_mb == QSE_NULL)
|
||||
{
|
||||
fio->errnum = QSE_FIO_ENOMEM;
|
||||
@ -574,7 +574,7 @@ int qse_fio_init (
|
||||
px = qse_wcstombs (path, &wl, path_mb, &ml);
|
||||
if (px == -2)
|
||||
{
|
||||
path_mb = qse_wcstombsdup (path, mmgr);
|
||||
path_mb = qse_wcstombsdup (path, QSE_NULL, mmgr);
|
||||
if (path_mb == QSE_NULL)
|
||||
{
|
||||
fio->errnum = QSE_FIO_ENOMEM;
|
||||
@ -784,7 +784,7 @@ int qse_fio_init (
|
||||
{
|
||||
/* the static buffer is too small.
|
||||
* allocate a buffer */
|
||||
path_mb = qse_wcstombsdup (path, mmgr);
|
||||
path_mb = qse_wcstombsdup (path, QSE_NULL, mmgr);
|
||||
if (path_mb == QSE_NULL)
|
||||
{
|
||||
fio->errnum = QSE_FIO_ENOMEM;
|
||||
|
@ -106,8 +106,8 @@ int qse_fs_move (
|
||||
fop.old_path = oldpath;
|
||||
fop.new_path = newpath;
|
||||
#else
|
||||
fop.old_path = qse_wcstombsdup (oldpath, fs->mmgr);
|
||||
fop.new_path = qse_wcstombsdup (newpath, fs->mmgr);
|
||||
fop.old_path = qse_wcstombsdup (oldpath, QSE_NULL, fs->mmgr);
|
||||
fop.new_path = qse_wcstombsdup (newpath, QSE_NULL, fs->mmgr);
|
||||
if (fop.old_path == QSE_NULL || fop.old_path == QSE_NULL)
|
||||
{
|
||||
fs->errnum = QSE_FS_ENOMEM;
|
||||
@ -156,8 +156,8 @@ int qse_fs_move (
|
||||
fop.old_path = oldpath;
|
||||
fop.new_path = newpath;
|
||||
#else
|
||||
fop.old_path = qse_wcstombsdup (oldpath, fs->mmgr);
|
||||
fop.new_path = qse_wcstombsdup (newpath, fs->mmgr);
|
||||
fop.old_path = qse_wcstombsdup (oldpath, QSE_NULL, fs->mmgr);
|
||||
fop.new_path = qse_wcstombsdup (newpath, QSE_NULL, fs->mmgr);
|
||||
if (fop.old_path == QSE_NULL || fop.old_path == QSE_NULL)
|
||||
{
|
||||
fs->errnum = QSE_FS_ENOMEM;
|
||||
@ -201,8 +201,8 @@ int qse_fs_move (
|
||||
fop.old_path = oldpath;
|
||||
fop.new_path = newpath;
|
||||
#else
|
||||
fop.old_path = qse_wcstombsdup (oldpath, fs->mmgr);
|
||||
fop.new_path = qse_wcstombsdup (newpath, fs->mmgr);
|
||||
fop.old_path = qse_wcstombsdup (oldpath, QSE_NULL, fs->mmgr);
|
||||
fop.new_path = qse_wcstombsdup (newpath, QSE_NULL, fs->mmgr);
|
||||
if (fop.old_path == QSE_NULL || fop.old_path == QSE_NULL)
|
||||
{
|
||||
fs->errnum = QSE_FS_ENOMEM;
|
||||
@ -272,7 +272,7 @@ int qse_fs_move (
|
||||
#if defined(QSE_CHAR_IS_MCHAR)
|
||||
fop.new_path2 = qse_stradup (arr, QSE_NULL, fs->mmgr);
|
||||
#else
|
||||
fop.new_path2 = qse_wcsatombsdup (arr, fs->mmgr);
|
||||
fop.new_path2 = qse_wcsatombsdup (arr, QSE_NULL, fs->mmgr);
|
||||
#endif
|
||||
if (fop.new_path2 == QSE_NULL)
|
||||
{
|
||||
@ -392,7 +392,7 @@ int qse_fs_delete (qse_fs_t* fs, const qse_char_t* path)
|
||||
#if defined(QSE_CHAR_IS_MCHAR)
|
||||
dop.path = path;
|
||||
#else
|
||||
dop.path = qse_wcstombsdup (path, fs->mmgr);
|
||||
dop.path = qse_wcstombsdup (path, QSE_NULL, fs->mmgr);
|
||||
if (dop.path == QSE_NULL)
|
||||
{
|
||||
fs->errnum = QSE_FS_ENOMEM;
|
||||
@ -435,7 +435,7 @@ oops:
|
||||
#if defined(QSE_CHAR_IS_MCHAR)
|
||||
dop.path = path;
|
||||
#else
|
||||
dop.path = qse_wcstombsdup (path, fs->mmgr);
|
||||
dop.path = qse_wcstombsdup (path, QSE_NULL, fs->mmgr);
|
||||
if (dop.path == QSE_NULL)
|
||||
{
|
||||
fs->errnum = QSE_FS_ENOMEM;
|
||||
@ -477,7 +477,7 @@ oops:
|
||||
#if defined(QSE_CHAR_IS_MCHAR)
|
||||
dop.path = path;
|
||||
#else
|
||||
dop.path = qse_wcstombsdup (path, fs->mmgr);
|
||||
dop.path = qse_wcstombsdup (path, QSE_NULL, fs->mmgr);
|
||||
if (dop.path == QSE_NULL)
|
||||
{
|
||||
fs->errnum = QSE_FS_ENOMEM;
|
||||
|
@ -272,7 +272,7 @@ int qse_fs_chdir (qse_fs_t* fs, const qse_char_t* name)
|
||||
#if defined(QSE_CHAR_IS_MCHAR)
|
||||
mfsname = fsname;
|
||||
#else
|
||||
mfsname = qse_wcstombsdup (fsname, fs->mmgr);
|
||||
mfsname = qse_wcstombsdup (fsname, QSE_NULL, fs->mmgr);
|
||||
if (mfsname == QSE_NULL)
|
||||
{
|
||||
fs->errnum = QSE_FS_ENOMEM;
|
||||
|
@ -43,7 +43,7 @@ int qse_runmain (
|
||||
|
||||
for (i = 0; i < argc; i++)
|
||||
{
|
||||
v[i]= qse_mbstowcsalldup (argv[i], mmgr);
|
||||
v[i]= qse_mbstowcsalldup (argv[i], QSE_NULL, mmgr);
|
||||
if (v[i] == QSE_NULL)
|
||||
{
|
||||
ret = -1;
|
||||
@ -93,7 +93,7 @@ int qse_runmainwithenv (
|
||||
else if (i == argc) continue;
|
||||
else x = envp[i - argc - 1];
|
||||
|
||||
v[i]= qse_mbstowcsalldup (x, mmgr);
|
||||
v[i]= qse_mbstowcsalldup (x, QSE_NULL, mmgr);
|
||||
if (v[i] == QSE_NULL)
|
||||
{
|
||||
ret = -1;
|
||||
|
@ -246,45 +246,47 @@ int qse_mbsntowcsnuptowithcmgr (
|
||||
}
|
||||
|
||||
static qse_wchar_t* mbs_to_wcs_dup_with_cmgr (
|
||||
const qse_mchar_t* mbs, qse_mmgr_t* mmgr, qse_cmgr_t* cmgr, int all)
|
||||
const qse_mchar_t* mbs, qse_size_t* wcslen, qse_mmgr_t* mmgr, qse_cmgr_t* cmgr, int all)
|
||||
{
|
||||
qse_size_t mbslen, wcslen;
|
||||
qse_size_t ml, wl;
|
||||
qse_wchar_t* wcs;
|
||||
|
||||
if (mbs_to_wcs_with_cmgr (
|
||||
mbs, &mbslen, QSE_NULL, &wcslen, cmgr, all) <= -1) return QSE_NULL;
|
||||
mbs, &ml, QSE_NULL, &wl, cmgr, all) <= -1) return QSE_NULL;
|
||||
|
||||
wcslen++; /* for terminating null */
|
||||
wcs = QSE_MMGR_ALLOC (mmgr, wcslen * QSE_SIZEOF(*wcs));
|
||||
wl++; /* for terminating null */
|
||||
wcs = QSE_MMGR_ALLOC (mmgr, wl * QSE_SIZEOF(*wcs));
|
||||
if (wcs == QSE_NULL) return QSE_NULL;
|
||||
|
||||
mbs_to_wcs_with_cmgr (mbs, &mbslen, wcs, &wcslen, cmgr, all);
|
||||
mbs_to_wcs_with_cmgr (mbs, &ml, wcs, &wl, cmgr, all);
|
||||
|
||||
if (wcslen) *wcslen = wl;
|
||||
return wcs;
|
||||
}
|
||||
|
||||
qse_wchar_t* qse_mbstowcsdupwithcmgr (
|
||||
const qse_mchar_t* mbs, qse_mmgr_t* mmgr, qse_cmgr_t* cmgr)
|
||||
const qse_mchar_t* mbs, qse_size_t* wcslen, qse_mmgr_t* mmgr, qse_cmgr_t* cmgr)
|
||||
{
|
||||
return mbs_to_wcs_dup_with_cmgr (mbs, mmgr, cmgr, 0);
|
||||
return mbs_to_wcs_dup_with_cmgr (mbs, wcslen, mmgr, cmgr, 0);
|
||||
}
|
||||
|
||||
qse_wchar_t* qse_mbstowcsalldupwithcmgr (
|
||||
const qse_mchar_t* mbs, qse_mmgr_t* mmgr, qse_cmgr_t* cmgr)
|
||||
const qse_mchar_t* mbs, qse_size_t* wcslen, qse_mmgr_t* mmgr, qse_cmgr_t* cmgr)
|
||||
{
|
||||
return mbs_to_wcs_dup_with_cmgr (mbs, mmgr, cmgr, 1);
|
||||
return mbs_to_wcs_dup_with_cmgr (mbs, wcslen, mmgr, cmgr, 1);
|
||||
}
|
||||
|
||||
static qse_wchar_t* mbsa_to_wcs_dup_with_cmgr (
|
||||
const qse_mchar_t* mbs[], qse_mmgr_t* mmgr, qse_cmgr_t* cmgr, int all)
|
||||
const qse_mchar_t* mbs[], qse_size_t* wcslen, qse_mmgr_t* mmgr, qse_cmgr_t* cmgr, int all)
|
||||
{
|
||||
qse_wchar_t* buf, * ptr;
|
||||
qse_wchar_t* buf;
|
||||
qse_size_t i;
|
||||
qse_size_t capa = 0;
|
||||
qse_size_t capa, pos;
|
||||
qse_size_t wl, ml;
|
||||
|
||||
QSE_ASSERT (mmgr != QSE_NULL);
|
||||
|
||||
for (i = 0; mbs[i]; i++)
|
||||
for (capa = 0, i = 0; mbs[i]; i++)
|
||||
{
|
||||
if (mbs_to_wcs_with_cmgr (mbs[i], &ml, QSE_NULL, &wl, cmgr, all) <= -1)
|
||||
return QSE_NULL;
|
||||
@ -295,28 +297,29 @@ static qse_wchar_t* mbsa_to_wcs_dup_with_cmgr (
|
||||
mmgr, (capa + 1) * QSE_SIZEOF(*buf));
|
||||
if (buf == QSE_NULL) return QSE_NULL;
|
||||
|
||||
ptr = buf;
|
||||
for (i = 0; mbs[i]; i++)
|
||||
for (pos = 0, i = 0; mbs[i]; i++)
|
||||
{
|
||||
wl = capa + 1;
|
||||
mbs_to_wcs_with_cmgr (mbs[i], &ml, ptr, &wl, cmgr, all);
|
||||
ptr += wl;
|
||||
capa -= wl;
|
||||
wl = capa - pos + 1;
|
||||
mbs_to_wcs_with_cmgr (mbs[i], &ml, &buf[pos], &wl, cmgr, all);
|
||||
pos += wl;
|
||||
}
|
||||
|
||||
QSE_ASSERT (pos == capa);
|
||||
|
||||
if (wcslen) *wcslen = capa;
|
||||
return buf;
|
||||
}
|
||||
|
||||
qse_wchar_t* qse_mbsatowcsdupwithcmgr (
|
||||
const qse_mchar_t* mbs[], qse_mmgr_t* mmgr, qse_cmgr_t* cmgr)
|
||||
const qse_mchar_t* mbs[], qse_size_t* wcslen, qse_mmgr_t* mmgr, qse_cmgr_t* cmgr)
|
||||
{
|
||||
return mbsa_to_wcs_dup_with_cmgr (mbs, mmgr, cmgr, 0);
|
||||
return mbsa_to_wcs_dup_with_cmgr (mbs, wcslen, mmgr, cmgr, 0);
|
||||
}
|
||||
|
||||
qse_wchar_t* qse_mbsatowcsalldupwithcmgr (
|
||||
const qse_mchar_t* mbs[], qse_mmgr_t* mmgr, qse_cmgr_t* cmgr)
|
||||
const qse_mchar_t* mbs[], qse_size_t* wcslen, qse_mmgr_t* mmgr, qse_cmgr_t* cmgr)
|
||||
{
|
||||
return mbsa_to_wcs_dup_with_cmgr (mbs, mmgr, cmgr, 1);
|
||||
return mbsa_to_wcs_dup_with_cmgr (mbs, wcslen, mmgr, cmgr, 1);
|
||||
}
|
||||
|
||||
/* ======================================================================== */
|
||||
@ -473,64 +476,99 @@ int qse_wcsntombsnwithcmgr (
|
||||
return ret;
|
||||
}
|
||||
|
||||
qse_mchar_t* qse_wcstombsdupwithcmgr (const qse_wchar_t* wcs, qse_mmgr_t* mmgr, qse_cmgr_t* cmgr)
|
||||
qse_mchar_t* qse_wcstombsdupwithcmgr (
|
||||
const qse_wchar_t* wcs, qse_size_t* mbslen, qse_mmgr_t* mmgr, qse_cmgr_t* cmgr)
|
||||
{
|
||||
qse_size_t wcslen, mbslen;
|
||||
qse_mchar_t* mbs;
|
||||
|
||||
if (qse_wcstombswithcmgr (wcs, &wcslen, QSE_NULL, &mbslen, cmgr) <= -1) return QSE_NULL;
|
||||
|
||||
mbslen++; /* for the terminating null character */
|
||||
|
||||
mbs = QSE_MMGR_ALLOC (mmgr, mbslen * QSE_SIZEOF(*mbs));
|
||||
if (mbs == QSE_NULL) return QSE_NULL;
|
||||
|
||||
qse_wcstombswithcmgr (wcs, &wcslen, mbs, &mbslen, cmgr);
|
||||
return mbs;
|
||||
}
|
||||
|
||||
qse_mchar_t* qse_wcsntombsdupwithcmgr (const qse_wchar_t* wcs, qse_size_t len, qse_mmgr_t* mmgr, qse_cmgr_t* cmgr)
|
||||
{
|
||||
qse_size_t mbslen;
|
||||
qse_mchar_t* mbs;
|
||||
|
||||
if (qse_wcsntombsnwithcmgr (wcs, &len, QSE_NULL, &mbslen, cmgr) <= -1) return QSE_NULL;
|
||||
|
||||
mbs = QSE_MMGR_ALLOC (mmgr, (mbslen + 1) * QSE_SIZEOF(*mbs));
|
||||
if (mbs == QSE_NULL) return QSE_NULL;
|
||||
|
||||
qse_wcsntombsnwithcmgr (wcs, &len, mbs, &mbslen, cmgr);
|
||||
mbs[mbslen] = QSE_MT('\0');
|
||||
return mbs;
|
||||
}
|
||||
|
||||
qse_mchar_t* qse_wcsatombsdupwithcmgr (const qse_wchar_t* wcs[], qse_mmgr_t* mmgr, qse_cmgr_t* cmgr)
|
||||
{
|
||||
qse_mchar_t* buf, * ptr;
|
||||
qse_size_t i;
|
||||
qse_size_t wl, ml;
|
||||
qse_size_t capa = 0;
|
||||
qse_mchar_t* mbs;
|
||||
|
||||
if (qse_wcstombswithcmgr (wcs, &wl, QSE_NULL, &ml, cmgr) <= -1) return QSE_NULL;
|
||||
|
||||
ml++; /* for the terminating null character */
|
||||
|
||||
mbs = QSE_MMGR_ALLOC (mmgr, ml * QSE_SIZEOF(*mbs));
|
||||
if (mbs == QSE_NULL) return QSE_NULL;
|
||||
|
||||
qse_wcstombswithcmgr (wcs, &wl, mbs, &ml, cmgr);
|
||||
|
||||
if (mbslen) *mbslen = ml;
|
||||
return mbs;
|
||||
}
|
||||
|
||||
qse_mchar_t* qse_wcsntombsdupwithcmgr (
|
||||
const qse_wchar_t* wcs, qse_size_t wcslen,
|
||||
qse_size_t* mbslen, qse_mmgr_t* mmgr, qse_cmgr_t* cmgr)
|
||||
{
|
||||
qse_size_t ml;
|
||||
qse_mchar_t* mbs;
|
||||
|
||||
if (qse_wcsntombsnwithcmgr (wcs, &wcslen, QSE_NULL, &ml, cmgr) <= -1) return QSE_NULL;
|
||||
|
||||
mbs = QSE_MMGR_ALLOC (mmgr, (ml + 1) * QSE_SIZEOF(*mbs));
|
||||
if (mbs == QSE_NULL) return QSE_NULL;
|
||||
|
||||
qse_wcsntombsnwithcmgr (wcs, &wcslen, mbs, &ml, cmgr);
|
||||
mbs[ml] = QSE_MT('\0');
|
||||
|
||||
if (mbslen) *mbslen = ml;
|
||||
return mbs;
|
||||
}
|
||||
|
||||
qse_mchar_t* qse_wcsatombsdupwithcmgr (
|
||||
const qse_wchar_t* wcs[], qse_size_t* mbslen, qse_mmgr_t* mmgr, qse_cmgr_t* cmgr)
|
||||
{
|
||||
qse_size_t wl, ml, capa, pos, i;
|
||||
qse_mchar_t* mbs;
|
||||
|
||||
QSE_ASSERT (mmgr != QSE_NULL);
|
||||
|
||||
for (i = 0; wcs[i]; i++)
|
||||
for (capa = 0, i = 0; wcs[i]; i++)
|
||||
{
|
||||
if (qse_wcstombswithcmgr (wcs[i], &wl, QSE_NULL, &ml, cmgr) <= -1) return QSE_NULL;
|
||||
capa += ml;
|
||||
}
|
||||
|
||||
buf = (qse_mchar_t*) QSE_MMGR_ALLOC (
|
||||
mmgr, (capa + 1) * QSE_SIZEOF(*buf));
|
||||
if (buf == QSE_NULL) return QSE_NULL;
|
||||
mbs = (qse_mchar_t*) QSE_MMGR_ALLOC (mmgr, (capa + 1) * QSE_SIZEOF(*mbs));
|
||||
if (mbs == QSE_NULL) return QSE_NULL;
|
||||
|
||||
ptr = buf;
|
||||
for (i = 0; wcs[i]; i++)
|
||||
for (pos = 0, i = 0; wcs[i]; i++)
|
||||
{
|
||||
ml = capa + 1;
|
||||
qse_wcstombswithcmgr (wcs[i], &wl, ptr, &ml, cmgr);
|
||||
ptr += ml;
|
||||
capa -= ml;
|
||||
ml = capa - pos + 1;
|
||||
qse_wcstombswithcmgr (wcs[i], &wl, &mbs[pos], &ml, cmgr);
|
||||
pos += ml;
|
||||
}
|
||||
|
||||
return buf;
|
||||
if (mbslen) *mbslen = capa;
|
||||
return mbs;
|
||||
}
|
||||
|
||||
qse_mchar_t* qse_wcsnatombsdupwithcmgr (
|
||||
const qse_wcstr_t wcs[], qse_size_t* mbslen, qse_mmgr_t* mmgr, qse_cmgr_t* cmgr)
|
||||
{
|
||||
qse_size_t wl, ml, capa, pos, i;
|
||||
qse_mchar_t* mbs;
|
||||
|
||||
for (capa = 0, i = 0; wcs[i].ptr; i++)
|
||||
{
|
||||
wl = wcs[i].len;
|
||||
if (qse_wcsntombsnwithcmgr (wcs[i].ptr, &wl, QSE_NULL, &ml, cmgr) <= -1) return QSE_NULL;
|
||||
capa += ml;
|
||||
}
|
||||
|
||||
mbs = QSE_MMGR_ALLOC (mmgr, (capa + 1) * QSE_SIZEOF(*mbs));
|
||||
if (mbs == QSE_NULL) return QSE_NULL;
|
||||
|
||||
for (pos = 0, i = 0; wcs[i].ptr; i++)
|
||||
{
|
||||
wl = wcs[i].len;
|
||||
ml = capa - pos + 1;
|
||||
qse_wcsntombsnwithcmgr (wcs[i].ptr, &wl, &mbs[pos], &ml, cmgr);
|
||||
pos += ml;
|
||||
}
|
||||
mbs[pos] = QSE_MT('\0');
|
||||
|
||||
QSE_ASSERT (pos == capa);
|
||||
|
||||
if (mbslen) *mbslen = capa;
|
||||
return mbs;
|
||||
}
|
||||
|
@ -171,24 +171,28 @@ int qse_mbsntowcsnupto (
|
||||
mbs, mbslen, wcs, wcslen, stopper, dfl_cmgr);
|
||||
}
|
||||
|
||||
qse_wchar_t* qse_mbstowcsdup (const qse_mchar_t* mbs, qse_mmgr_t* mmgr)
|
||||
qse_wchar_t* qse_mbstowcsdup (
|
||||
const qse_mchar_t* mbs, qse_size_t* wcslen, qse_mmgr_t* mmgr)
|
||||
{
|
||||
return qse_mbstowcsdupwithcmgr (mbs, mmgr, dfl_cmgr);
|
||||
return qse_mbstowcsdupwithcmgr (mbs, wcslen, mmgr, dfl_cmgr);
|
||||
}
|
||||
|
||||
qse_wchar_t* qse_mbstowcsalldup (const qse_mchar_t* mbs, qse_mmgr_t* mmgr)
|
||||
qse_wchar_t* qse_mbstowcsalldup (
|
||||
const qse_mchar_t* mbs, qse_size_t* wcslen, qse_mmgr_t* mmgr)
|
||||
{
|
||||
return qse_mbstowcsalldupwithcmgr (mbs, mmgr, dfl_cmgr);
|
||||
return qse_mbstowcsalldupwithcmgr (mbs, wcslen, mmgr, dfl_cmgr);
|
||||
}
|
||||
|
||||
qse_wchar_t* qse_mbsatowcsdup (const qse_mchar_t* mbs[], qse_mmgr_t* mmgr)
|
||||
qse_wchar_t* qse_mbsatowcsdup (
|
||||
const qse_mchar_t* mbs[], qse_size_t* wcslen, qse_mmgr_t* mmgr)
|
||||
{
|
||||
return qse_mbsatowcsdupwithcmgr (mbs, mmgr, dfl_cmgr);
|
||||
return qse_mbsatowcsdupwithcmgr (mbs, wcslen, mmgr, dfl_cmgr);
|
||||
}
|
||||
|
||||
qse_wchar_t* qse_mbsatowcsalldup (const qse_mchar_t* mbs[], qse_mmgr_t* mmgr)
|
||||
qse_wchar_t* qse_mbsatowcsalldup (
|
||||
const qse_mchar_t* mbs[], qse_size_t* wcslen, qse_mmgr_t* mmgr)
|
||||
{
|
||||
return qse_mbsatowcsalldupwithcmgr (mbs, mmgr, dfl_cmgr);
|
||||
return qse_mbsatowcsalldupwithcmgr (mbs, wcslen, mmgr, dfl_cmgr);
|
||||
}
|
||||
|
||||
/* -------------------------------------------------------------- */
|
||||
@ -207,18 +211,27 @@ int qse_wcsntombsn (
|
||||
return qse_wcsntombsnwithcmgr (wcs, wcslen, mbs, mbslen, dfl_cmgr);
|
||||
}
|
||||
|
||||
qse_mchar_t* qse_wcstombsdup (const qse_wchar_t* wcs, qse_mmgr_t* mmgr)
|
||||
qse_mchar_t* qse_wcstombsdup (
|
||||
const qse_wchar_t* wcs, qse_size_t* mbslen, qse_mmgr_t* mmgr)
|
||||
{
|
||||
return qse_wcstombsdupwithcmgr (wcs, mmgr, dfl_cmgr);
|
||||
return qse_wcstombsdupwithcmgr (wcs, mbslen, mmgr, dfl_cmgr);
|
||||
}
|
||||
|
||||
qse_mchar_t* qse_wcsntombsdup (const qse_wchar_t* wcs, qse_size_t len, qse_mmgr_t* mmgr)
|
||||
qse_mchar_t* qse_wcsntombsdup (
|
||||
const qse_wchar_t* wcs, qse_size_t wcslen,
|
||||
qse_size_t* mbslen, qse_mmgr_t* mmgr)
|
||||
{
|
||||
return qse_wcsntombsdupwithcmgr (wcs, len, mmgr, dfl_cmgr);
|
||||
return qse_wcsntombsdupwithcmgr (wcs, wcslen, mbslen, mmgr, dfl_cmgr);
|
||||
}
|
||||
|
||||
qse_mchar_t* qse_wcsatombsdup (const qse_wchar_t* wcs[], qse_mmgr_t* mmgr)
|
||||
qse_mchar_t* qse_wcsatombsdup (
|
||||
const qse_wchar_t* wcs[], qse_size_t* mbslen, qse_mmgr_t* mmgr)
|
||||
{
|
||||
return qse_wcsatombsdupwithcmgr (wcs, mmgr, dfl_cmgr);
|
||||
return qse_wcsatombsdupwithcmgr (wcs, mbslen, mmgr, dfl_cmgr);
|
||||
}
|
||||
|
||||
qse_mchar_t* qse_wcsnatombsdup (
|
||||
const qse_wcstr_t wcs[], qse_size_t* mbslen, qse_mmgr_t* mmgr)
|
||||
{
|
||||
return qse_wcsnatombsdupwithcmgr (wcs, mbslen, mmgr, dfl_cmgr);
|
||||
}
|
||||
|
@ -756,7 +756,7 @@ create_process:
|
||||
x[0] = mcmdname[create_retried];
|
||||
x[1] = (const qse_mchar_t*)cmd;
|
||||
x[2] = QSE_NULL;
|
||||
dupcmd = qse_mbsatowcsdup (x, mmgr);
|
||||
dupcmd = qse_mbsatowcsdup (x, QSE_NULL, mmgr);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -771,7 +771,7 @@ create_process:
|
||||
#if defined(QSE_CHAR_IS_WCHAR)
|
||||
if (flags & QSE_PIO_MBSCMD)
|
||||
{
|
||||
dupcmd = qse_mbstowcsdup ((const qse_mchar_t*)cmd, mmgr);
|
||||
dupcmd = qse_mbstowcsdup ((const qse_mchar_t*)cmd, QSE_NULL, mmgr);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -389,8 +389,8 @@ QSE_FILE* qse_fopen (const qse_char_t* path, const qse_char_t* mode)
|
||||
qse_mchar_t* path_mb;
|
||||
qse_mchar_t* mode_mb;
|
||||
|
||||
path_mb = qse_wcstombsdup (path, QSE_MMGR_GETDFL());
|
||||
mode_mb = qse_wcstombsdup (mode, QSE_MMGR_GETDFL());
|
||||
path_mb = qse_wcstombsdup (path, QSE_NULL, QSE_MMGR_GETDFL());
|
||||
mode_mb = qse_wcstombsdup (mode, QSE_NULL, QSE_MMGR_GETDFL());
|
||||
|
||||
if (path_mb && mode_mb)
|
||||
{
|
||||
@ -428,7 +428,7 @@ QSE_FILE* qse_popen (const qse_char_t* cmd, const qse_char_t* mode)
|
||||
QSE_FILE* fp = QSE_NULL;
|
||||
qse_mchar_t* cmd_mb;
|
||||
|
||||
cmd_mb = qse_wcstombsdup (cmd, QSE_MMGR_GETDFL());
|
||||
cmd_mb = qse_wcstombsdup (cmd, QSE_NULL, QSE_MMGR_GETDFL());
|
||||
if (cmd_mb)
|
||||
{
|
||||
char mode_mb[3];
|
||||
|
Reference in New Issue
Block a user