#include "UtilityCommon.h" namespace util { ////////////////////////////////////////////////////////////////////////// //void * SafeNCopy(char * pszDest, const char * pszSource, size_t Size ) //{ //#ifdef _DEBUG // if (IsBadWritePtr((VOID *)pszDest, Size) || IsBadReadPtr(pszDest, Size) || // IsBadWritePtr((VOID *)pszSource, Size) || IsBadReadPtr(pszSource, Size)) // { // __debugbreak(); // } //#endif // // memset(pszDest, 0, Size); // memcpy(pszDest, pszSource, Size); // // return pszDest; //} char * SafeNCopy(char * pszDest, const char * pszSource, size_t Size) { #ifdef _DEBUG if (IsBadWritePtr((VOID *)pszDest, Size) || IsBadReadPtr(pszDest, Size) ) { __debugbreak(); } #endif memset(pszDest, 0, Size); // ÀÌ ºÎºÐ¿¡ ´ëÇØ¼­ ´õ ÁöÄѺ¸ÀÚ. strncpy( pszDest, pszSource, Size ); return pszDest; } wchar_t * SafeNCopy(wchar_t * pszDest, const wchar_t * pszSource, size_t Size) { #ifdef _DEBUG if (IsBadWritePtr((VOID *)pszDest, Size) || IsBadReadPtr(pszDest, Size) ) { __debugbreak(); } #endif memset(pszDest, 0, Size * sizeof(wchar_t)); // ÀÌ ºÎºÐ¿¡ ´ëÇØ¼­ ´õ ÁöÄѺ¸ÀÚ. wcsncpy( pszDest, pszSource, Size ); return pszDest; } // // ÇØ¿Ü ¹öÀü¿¡µµ »ó°ü¾ø°Ô CompareStringÀ¸·Î ¹Ù²ÙÀÚ. // char * GetToken(char * pszString, char * OUT pszGetToken, char * pszTokenEnd) { int iLen = static_cast(strlen(pszString)); int iTokenLen = static_cast(strlen(pszTokenEnd)); if (iLen == 0) { return NULL; } if (iLen < iTokenLen) { return NULL; } pszGetToken[0] = NULL; //int iCurLen = 0; char * pszPos1 = NULL; if ( CSTR_EQUAL == CompareStringA( LOCALE_USER_DEFAULT, 0, pszString, iTokenLen, pszTokenEnd, iTokenLen) ) { pszPos1 = &pszString[iTokenLen]; } else { pszPos1 = pszString; } static char util_szToken[512] = {0,}; memset(util_szToken, 0, strlen(util_szToken) * sizeof(char)); for (int i = 0; i < iLen; i++) { if (i != 0 && ( 0 == strncmp(pszPos1, pszTokenEnd, iTokenLen ) || *pszPos1 == NULL)) { SafeNCopy( pszGetToken, util_szToken, i+1); return pszPos1; } util_szToken[i] = (*pszPos1); pszPos1++; } // ? return NULL; } // // ÇØ¿Ü ¹öÀü¿¡µµ »ó°ü¾ø°Ô CompareStringÀ¸·Î ¹Ù²ÙÀÚ. // wchar_t * GetToken(wchar_t * pszString, wchar_t * OUT pszGetToken, wchar_t * pszTokenEnd) { int iLen = static_cast(wcslen(pszString)); int iTokenLen = static_cast(wcslen(pszTokenEnd)); if (iLen <= 0) { return NULL; } if (iLen < iTokenLen) { return NULL; } pszGetToken[0] = NULL; //int iCurLen = 0; wchar_t * pszPos1 = NULL; if ( CSTR_EQUAL == CompareStringW( LOCALE_USER_DEFAULT, 0, pszString, iTokenLen, pszTokenEnd, iTokenLen) ) { pszPos1 = &pszString[iTokenLen]; } else { pszPos1 = pszString; } static wchar_t util_szToken[512] = {0,}; memset(util_szToken, 0, wcslen(util_szToken) * sizeof(wchar_t)); for (int i = 0; i < iLen; i++) { if (i != 0 && ( 0 == wcsncmp(pszPos1, pszTokenEnd, iTokenLen ) || *pszPos1 == NULL)) { SafeNCopy( pszGetToken, util_szToken, i+1); return pszPos1; } util_szToken[i] = (*pszPos1); pszPos1++; } // ? return NULL; } ////////////////////////////////////////////////////////////////////////// } //void * _strncpy(char * pszDest, const char * pszSource, size_t Size ) //{ // return util::SafeNCopy(pszDest, pszSource, Size); //} //---------------------------------------------------------------------------- /** */ char * _strncpy(char * pszDest, const char * pszSource, size_t Size ) { return util::SafeNCopy(pszDest, pszSource, Size); } //---------------------------------------------------------------------------- /** */ wchar_t * _strncpy(wchar_t * pszDest, const wchar_t * pszSource, size_t Size ) { return util::SafeNCopy(pszDest, pszSource, Size); } //---------------------------------------------------------------------------- /** */ BOOL _Strncmp(char * pszComp1, int iLen1, char * pszComp2, int iLen2 ) { if ( CSTR_EQUAL == CompareStringA( LOCALE_USER_DEFAULT, NULL, pszComp1, iLen1, pszComp2, iLen2) ) { return TRUE; } else { return FALSE; } }; //---------------------------------------------------------------------------- /** */ BOOL _Strncmp(wchar_t * pszComp1, int iLen1, wchar_t * pszComp2, int iLen2 ) { if ( CSTR_EQUAL == CompareStringW( LOCALE_USER_DEFAULT, NULL, pszComp1, iLen1, pszComp2, iLen2) ) { return TRUE; } else { return FALSE; } }; //---------------------------------------------------------------------------- /** */ BOOL _Strincmp(char * pszComp1, int iLen1, char * pszComp2, int iLen2 ) { if ( CSTR_EQUAL == CompareStringA( LOCALE_USER_DEFAULT, NORM_IGNORECASE, pszComp1, iLen1, pszComp2, iLen2) ) { return TRUE; } else { return FALSE; } }; //---------------------------------------------------------------------------- /** */ BOOL _Strincmp(wchar_t * pszComp1, int iLen1, wchar_t * pszComp2, int iLen2 ) { if ( CSTR_EQUAL == CompareStringW( LOCALE_USER_DEFAULT, NORM_IGNORECASE, pszComp1, iLen1, pszComp2, iLen2) ) { return TRUE; } else { return FALSE; } };