added qse_stradup() and related functions

coded qse_dir_change() for win32
This commit is contained in:
2011-10-15 23:18:55 +00:00
parent 23ee1f7f51
commit 38500b97d6
8 changed files with 331 additions and 87 deletions

View File

@ -72,6 +72,27 @@ qse_mchar_t* qse_mbsxdup2 (
return tmp;
}
qse_mchar_t* qse_mbsadup (const qse_mchar_t* str[], qse_mmgr_t* mmgr)
{
qse_mchar_t* buf, * ptr;
qse_size_t i;
qse_size_t capa = 0;
QSE_ASSERT (mmgr != QSE_NULL);
for (i = 0; str[i]; i++) capa += qse_mbslen(str[i]);
buf = (qse_mchar_t*) QSE_MMGR_ALLOC (mmgr, (capa+1)*QSE_SIZEOF(*buf));
if (buf == QSE_NULL) return QSE_NULL;
ptr = buf;
for (i = 0; str[i]; i++) ptr += qse_mbscpy (ptr, str[i]);
return buf;
}
/* --------------------------------------------------------------- */
qse_wchar_t* qse_wcsdup (const qse_wchar_t* str, qse_mmgr_t* mmgr)
{
qse_wchar_t* tmp;
@ -124,3 +145,23 @@ qse_wchar_t* qse_wcsxdup2 (
qse_wcsncpy (tmp + len1, str2, len2);
return tmp;
}
qse_wchar_t* qse_wcsadup (const qse_wchar_t* str[], qse_mmgr_t* mmgr)
{
qse_wchar_t* buf, * ptr;
qse_size_t i;
qse_size_t capa = 0;
QSE_ASSERT (mmgr != QSE_NULL);
for (i = 0; str[i]; i++) capa += qse_wcslen(str[i]);
buf = (qse_wchar_t*) QSE_MMGR_ALLOC (mmgr, (capa+1)*QSE_SIZEOF(*buf));
if (buf == QSE_NULL) return QSE_NULL;
ptr = buf;
for (i = 0; str[i]; i++) ptr += qse_wcscpy (ptr, str[i]);
return buf;
}