} END_TEST START_TEST(check_Mem_CopyString) { char *test = Mem_CopyString("test"); ck_assert(Mem_Size() == strlen(test) + 1); Mem_Free(test); ck_assert(Mem_Size() == 0); } END_TEST
BOOL ECP_GetString(LPTSTR *pszDst, LPTSTR pszSrc, BOOL bRecurse) { LPTSTR psz; if (*pszDst == NULL) { psz = *pszDst = (LPTSTR)Mem_AllocStr(_tcslen(pszSrc) + SZ); } else { psz = *pszDst = (LPTSTR)Mem_ReAllocStr(*pszDst, _tcslen(*pszDst) + _tcslen(pszSrc) + SZ); ZeroMemory(psz + _tcslen(*pszDst), Mem_Size(*pszDst) - _tcslen(*pszDst)); } if (pszSrc[0] == _T('\"') || bRecurse) { if (pszSrc[0] == _T('\"') && !bRecurse) pszSrc++; psz += _tcslen(*pszDst); while (*pszSrc != _T('\0')) { if (*pszSrc == _T('\\') && *(pszSrc + 1) == _T('\\')) { *(psz++) = *(++pszSrc); pszSrc++; } else if (*pszSrc == _T('\\') && *(pszSrc + 1) == _T('\"')) { *(psz++) = *(++pszSrc); pszSrc++; } else if (*pszSrc == _T('\\') && *(pszSrc + 1) == _T('n')) { *(psz++) = _T('\n'); pszSrc += 2; } else if (*pszSrc == _T('\"')) { *pszDst = (LPTSTR)Mem_ReAllocStr(*pszDst, _tcslen(*pszDst) + SZ); return (TRUE); } else if (*pszSrc == _T('\r')) { *(psz++) = _T('\n'); pszSrc++; } else { *(psz++) = *(pszSrc++); } } return (FALSE); } else { while (*pszSrc != _T('\0') && *pszSrc != _T(' ') && *pszSrc != _T('\t')) { if (*pszSrc == _T('\\') && *(pszSrc + 1) == _T('\\')) { *(psz++) = *(++pszSrc); pszSrc++; } else if (*pszSrc == _T('\\') && *(pszSrc + 1) == _T('\"')) { *(psz++) = *(++pszSrc); pszSrc++; } else if (*pszSrc == _T('\\') && *(pszSrc + 1) == _T('n')) { *(psz++) = _T('\n'); pszSrc += 2; } else if (*pszSrc == _T('\r')) { *(psz++) = _T('\n'); pszSrc++; } else { *(psz++) = *(pszSrc++); } } } *psz = _T('\0'); *pszDst = (LPTSTR)Mem_ReAllocStr(*pszDst, _tcslen(*pszDst) + SZ); return (TRUE); }