mirror of
https://github.com/SoftEtherVPN/SoftEtherVPN.git
synced 2024-11-13 05:00:41 +03:00
844dcdb0af
strtok() and wcstok() are considered unsafe functions. A segmentation fault caused by the use of strtok() was recently reported. Co-authored-by: Takuho NAKANO <takotakot@users.noreply.github.com>
128 lines
4.8 KiB
C
128 lines
4.8 KiB
C
// SoftEther VPN Source Code - Developer Edition Master Branch
|
|
// Mayaqua Kernel
|
|
|
|
|
|
// Internat.h
|
|
// Header of Internat.c
|
|
|
|
#ifndef INTERNAT_H
|
|
#define INTERNAT_H
|
|
|
|
// String token
|
|
struct UNI_TOKEN_LIST
|
|
{
|
|
UINT NumTokens;
|
|
wchar_t **Token;
|
|
};
|
|
|
|
UINT UniStrLen(wchar_t *str);
|
|
UINT UniStrSize(wchar_t *str);
|
|
UINT UniStrCpy(wchar_t *dst, UINT size, wchar_t *src);
|
|
UINT UniStrCat(wchar_t *dst, UINT size, wchar_t *src);
|
|
wchar_t UniToLower(wchar_t c);
|
|
wchar_t UniToUpper(wchar_t c);
|
|
void UniStrLower(wchar_t *str);
|
|
void UniStrUpper(wchar_t *str);
|
|
int UniStrCmp(wchar_t *str1, wchar_t *str2);
|
|
int UniStrCmpi(wchar_t *str1, wchar_t *str2);
|
|
int UniSoftStrCmp(wchar_t *str1, wchar_t *str2);
|
|
void UniFormat(wchar_t *buf, UINT size, wchar_t *fmt, ...);
|
|
wchar_t *CopyUniFormat(wchar_t *fmt, ...);
|
|
void UniFormatArgs(wchar_t *buf, UINT size, wchar_t *fmt, va_list args);
|
|
void UniDebugArgs(wchar_t *fmt, va_list args);
|
|
void UniDebug(wchar_t *fmt, ...);
|
|
void UniPrint(wchar_t *fmt, ...);
|
|
void UniPrintArgs(wchar_t *fmt, va_list args);
|
|
void UniPrintStr(wchar_t *string);
|
|
void UniToStri(wchar_t *str, int i);
|
|
void UniToStru(wchar_t *str, UINT i);
|
|
UINT UniToInt(wchar_t *str);
|
|
void UniToStrForSingleChars(char *dst, UINT dst_size, wchar_t *src);
|
|
void UniTrim(wchar_t *str);
|
|
void UniTrimLeft(wchar_t *str);
|
|
void UniTrimRight(wchar_t *str);
|
|
void UniTrimCrlf(wchar_t *str);
|
|
bool UniGetLine(wchar_t *str, UINT size);
|
|
bool UniGetLineWin32(wchar_t *str, UINT size);
|
|
bool UniGetLineUnix(wchar_t *str, UINT size);
|
|
void UniFreeToken(UNI_TOKEN_LIST *tokens);
|
|
UNI_TOKEN_LIST *UniParseToken(wchar_t *src, wchar_t *separator);
|
|
UINT UniSearchStrEx(wchar_t *string, wchar_t *keyword, UINT start, bool case_sensitive);
|
|
UINT UniSearchStr(wchar_t *string, wchar_t *keyword, UINT start);
|
|
UINT UniCalcReplaceStrEx(wchar_t *string, wchar_t *old_keyword, wchar_t *new_keyword, bool case_sensitive);
|
|
UINT UniReplaceStrEx(wchar_t *dst, UINT size, wchar_t *string, wchar_t *old_keyword, wchar_t *new_keyword, bool case_sensitive);
|
|
UINT UniReplaceStr(wchar_t *dst, UINT size, wchar_t *string, wchar_t *old_keyword, wchar_t *new_keyword);
|
|
UINT GetUniType(wchar_t c);
|
|
UINT GetUtf8Type(BYTE *s, UINT size, UINT offset);
|
|
UINT CalcUniToUtf8(wchar_t *s);
|
|
UINT UniToUtf8(BYTE *u, UINT size, wchar_t *s);
|
|
UINT Utf8Len(BYTE *u, UINT size);
|
|
UINT CalcUtf8ToUni(BYTE *u, UINT u_size);
|
|
UINT Utf8ToUni(wchar_t *s, UINT size, BYTE *u, UINT u_size);
|
|
UINT CalcStrToUni(char *str);
|
|
UINT StrToUni(wchar_t *s, UINT size, char *str);
|
|
UINT CalcUniToStr(wchar_t *s);
|
|
UINT UniToStr(char *str, UINT size, wchar_t *s);
|
|
bool IsSafeUniStr(wchar_t *str);
|
|
bool IsSafeUniChar(wchar_t c);
|
|
wchar_t *CopyUniStr(wchar_t *str);
|
|
wchar_t *CopyStrToUni(char *str);
|
|
UINT UtfToUni(wchar_t *unistr, UINT size, char *utfstr);
|
|
char *CopyUniToUtf(wchar_t *unistr);
|
|
char *CopyUniToStr(wchar_t *unistr);
|
|
wchar_t *CopyUtfToUni(char *utfstr);
|
|
UINT64 UniToInt64(wchar_t *str);
|
|
UNI_TOKEN_LIST *UniParseCmdLine(wchar_t *str);
|
|
UNI_TOKEN_LIST *UniCopyToken(UNI_TOKEN_LIST *src);
|
|
wchar_t *UniCopyStr(wchar_t *str);
|
|
TOKEN_LIST *UniTokenListToTokenList(UNI_TOKEN_LIST *src);
|
|
UNI_TOKEN_LIST *TokenListToUniTokenList(TOKEN_LIST *src);
|
|
UNI_TOKEN_LIST *UniNullToken();
|
|
bool UniIsNum(wchar_t *str);
|
|
bool IsEmptyUniStr(wchar_t *str);
|
|
bool UniIsEmptyStr(wchar_t *str);
|
|
void InitInternational();
|
|
void FreeInternational();
|
|
USHORT *WideToUtf16(wchar_t *str);
|
|
wchar_t *Utf16ToWide(USHORT *str);
|
|
wchar_t *InternalFormatArgs(wchar_t *fmt, va_list args, bool ansi_mode);
|
|
UINT UniStrWidth(wchar_t *str);
|
|
UNI_TOKEN_LIST *UnixUniParseToken(wchar_t *src, wchar_t *separator);
|
|
void UniToStr3(wchar_t *str, UINT size, UINT64 value);
|
|
bool UniEndWith(wchar_t *str, wchar_t *key);
|
|
bool UniStartWith(wchar_t *str, wchar_t *key);
|
|
wchar_t *UniNormalizeCrlf(wchar_t *str);
|
|
void UniFreeStrList(LIST *o);
|
|
UNI_TOKEN_LIST *UniListToTokenList(LIST *o);
|
|
bool UniIsSafeChar(wchar_t c);
|
|
BUF *UniStrToBin(wchar_t *str);
|
|
bool UniInStr(wchar_t *str, wchar_t *keyword);
|
|
bool UniInStrEx(wchar_t *str, wchar_t *keyword, bool case_sensitive);
|
|
void ClearUniStr(wchar_t *str, UINT str_size);
|
|
bool UniInChar(wchar_t *string, wchar_t c);
|
|
UNI_TOKEN_LIST *UniGetLines(wchar_t *str);
|
|
wchar_t *UniDefaultTokenSplitChars();
|
|
bool UniIsCharInStr(wchar_t *str, wchar_t c);
|
|
UNI_TOKEN_LIST *UniParseTokenWithNullStr(wchar_t *str, wchar_t *split_chars);
|
|
UNI_TOKEN_LIST *UniParseTokenWithoutNullStr(wchar_t *str, wchar_t *split_chars);
|
|
|
|
|
|
#ifdef OS_UNIX
|
|
void GetCurrentCharSet(char *name, UINT size);
|
|
UINT UnixCalcStrToUni(char *str);
|
|
UINT UnixStrToUni(wchar_t *s, UINT size, char *str);
|
|
UINT UnixCalcUniToStr(wchar_t *s);
|
|
UINT UnixUniToStr(char *str, UINT size, wchar_t *s);
|
|
void *IconvWideToStr();
|
|
void *IconvStrToWide();
|
|
int IconvFree(void *d);
|
|
void *IconvWideToStrInternal();
|
|
void *IconvStrToWideInternal();
|
|
int IconvFreeInternal(void *d);
|
|
#endif // OS_UNIX
|
|
|
|
#endif // INTERNAT_H
|
|
|
|
|
|
|