You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
551 lines
14 KiB
551 lines
14 KiB
3 years ago
|
/*
|
||
|
* MINICRT.H
|
||
|
*
|
||
|
* Header file for minicrt based applications. Function prototypes and
|
||
|
* appropriate #defines to default to their use and define Unicode-
|
||
|
* conditional functions.
|
||
|
*
|
||
|
* Copyright (c) 2014-2017 Malcolm J. Smith
|
||
|
*
|
||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||
|
* of this software and associated documentation files (the "Software"), to deal
|
||
|
* in the Software without restriction, including without limitation the rights
|
||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||
|
* copies of the Software, and to permit persons to whom the Software is
|
||
|
* furnished to do so, subject to the following conditions:
|
||
|
*
|
||
|
* The above copyright notice and this permission notice shall be included in
|
||
|
* all copies or substantial portions of the Software.
|
||
|
*
|
||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||
|
* THE SOFTWARE.
|
||
|
*/
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
#ifndef HAVE_MINICRT_FILE
|
||
|
|
||
|
#undef FILE
|
||
|
|
||
|
typedef struct _minicrt_file {
|
||
|
HANDLE hFile;
|
||
|
} minicrt_file, *pminicrt_file;
|
||
|
|
||
|
#define FILE minicrt_file
|
||
|
#define HAVE_MINICRT_FILE 1
|
||
|
#endif
|
||
|
|
||
|
void * mini_memcpy(void * dest, void * src, unsigned int len);
|
||
|
int mini_memcmp(const void * buf1, const void * buf2, unsigned int len);
|
||
|
void * mini_memmove(void * dest, void * src, unsigned int len);
|
||
|
void * mini_memset(void * dest, char c, unsigned int len);
|
||
|
|
||
|
void mini_srand(unsigned int seed);
|
||
|
int mini_rand();
|
||
|
|
||
|
void mini_searchenvex_s(const char * filename, const char * env, char * buffer, unsigned int len, int * component);
|
||
|
void mini_wsearchenvex_s(const wchar_t * filename, const wchar_t * env, wchar_t * buffer, unsigned int len, int * component);
|
||
|
void mini_searchenv_s(const char * filename, const char * env, char * buffer, unsigned int len);
|
||
|
void mini_wsearchenv_s(const wchar_t * filename, const wchar_t * env, wchar_t * buffer, unsigned int len);
|
||
|
void mini_searchenv(const char * filename, const char * env, char * buffer);
|
||
|
void mini_wsearchenv(const wchar_t * filename, const wchar_t * env, wchar_t * buffer);
|
||
|
|
||
|
FILE * mini_fopen(char * filename, char * mode);
|
||
|
FILE * mini_wfopen(wchar_t * filename, wchar_t * mode);
|
||
|
|
||
|
char * mini_fgets(char * string, int n, FILE * fp);
|
||
|
wchar_t * mini_fgetws(wchar_t * string, int n, FILE * fp);
|
||
|
|
||
|
int mini_fclose(FILE * fp);
|
||
|
|
||
|
int mini_atoi(char * str);
|
||
|
int mini_wtoi(wchar_t * str);
|
||
|
|
||
|
char * mini_strncat(char * dest, const char * src, unsigned int len);
|
||
|
wchar_t * mini_wcsncat(wchar_t * dest, const wchar_t * src, unsigned int len);
|
||
|
|
||
|
char * mini_strcat_s(char * dest, unsigned int len, const char * src);
|
||
|
wchar_t * mini_wcscat_s(wchar_t * dest, unsigned int len, const wchar_t * src);
|
||
|
|
||
|
char * mini_strchr(const char * str, char ch);
|
||
|
wchar_t * mini_wcschr(const wchar_t * str, wchar_t ch);
|
||
|
|
||
|
char * mini_strstr(const char * str, char * search);
|
||
|
wchar_t * mini_wcsstr(const wchar_t * str, wchar_t * search);
|
||
|
|
||
|
char * mini_strrchr(const char * str, char ch);
|
||
|
wchar_t * mini_wcsrchr(const wchar_t * str, wchar_t ch);
|
||
|
|
||
|
char * mini_strupr(char * str);
|
||
|
wchar_t * mini_wcsupr(wchar_t * str);
|
||
|
|
||
|
char * mini_strlwr(char * str);
|
||
|
wchar_t * mini_wcslwr(wchar_t * str);
|
||
|
|
||
|
int mini_strcmp(const char * str1, const char * str2);
|
||
|
int mini_wcscmp(const wchar_t * str1, const wchar_t * str2);
|
||
|
|
||
|
int mini_stricmp(const char * str1, const char * str2);
|
||
|
int mini_wcsicmp(const wchar_t * str1, const wchar_t * str2);
|
||
|
|
||
|
int mini_strncmp(const char * str1, const char * str2, unsigned int count);
|
||
|
int mini_wcsncmp(const wchar_t * str1, const wchar_t * str2, unsigned int count);
|
||
|
|
||
|
int mini_strnicmp(const char * str1, const char * str2, unsigned int count);
|
||
|
int mini_wcsnicmp(const wchar_t * str1, const wchar_t * str2, unsigned int count);
|
||
|
|
||
|
int mini_strspn(char * str, char * chars);
|
||
|
int mini_wcsspn(wchar_t * str, wchar_t * chars);
|
||
|
|
||
|
int mini_strcspn(char * str, char * chars);
|
||
|
int mini_wcscspn(wchar_t * str, wchar_t * chars);
|
||
|
|
||
|
char * mini_strtok_s(char * str, char * match, char ** context);
|
||
|
wchar_t * mini_wcstok_s(wchar_t * str, wchar_t * match, wchar_t ** context);
|
||
|
|
||
|
char * mini_strtok(char * str, char * match);
|
||
|
wchar_t * mini_wcstok(wchar_t * str, wchar_t * match);
|
||
|
|
||
|
int mini_strlen(const char * str);
|
||
|
int mini_wcslen(const wchar_t * str);
|
||
|
|
||
|
int mini_vsprintf_s(char * szDest, unsigned int len, const char * szFmt, va_list marker);
|
||
|
int mini_vswprintf_s(wchar_t * szDest, unsigned int len, const wchar_t * szFmt, va_list marker);
|
||
|
|
||
|
int mini_vsprintf_size(const char * szFmt, va_list marker);
|
||
|
int mini_vswprintf_size(const wchar_t * szFmt, va_list marker);
|
||
|
|
||
|
int mini_sprintf_s(char * szDest, unsigned int len, const char * szFmt, ...);
|
||
|
int mini_swprintf_s(wchar_t * szDest, unsigned int len, const wchar_t * szFmt, ...);
|
||
|
|
||
|
int mini_sprintf(char * szDest, const char * szFmt, ...);
|
||
|
int mini_swprintf(wchar_t * szDest, const wchar_t * szFmt, ...);
|
||
|
|
||
|
int mini_fprintf(FILE * fp, const char * szFmt, ...);
|
||
|
int mini_fwprintf(FILE * fp, const wchar_t * szFmt, ...);
|
||
|
|
||
|
int mini_printf(const char * szFmt, ...);
|
||
|
int mini_wprintf(const wchar_t * szFmt, ...);
|
||
|
|
||
|
//
|
||
|
// Map tchar versions to the correct place
|
||
|
//
|
||
|
|
||
|
#ifdef UNICODE
|
||
|
#define mini_tsearchenv mini_wsearchenv
|
||
|
#define mini_tsearchenv_s mini_wsearchenv_s
|
||
|
#define mini_tsearchenvex_s mini_wsearchenvex_s
|
||
|
#define mini_ftopen mini_wfopen
|
||
|
#define mini_ftgets mini_fgetws
|
||
|
#define mini_ttoi mini_wtoi
|
||
|
#define mini_tcsncat mini_wcsncat
|
||
|
#define mini_tcscat_s mini_wcscat_s
|
||
|
#define mini_tcschr mini_wcschr
|
||
|
#define mini_tcsrchr mini_wcsrchr
|
||
|
#define mini_tcsstr mini_wcsstr
|
||
|
#define mini_tcsupr mini_wcsupr
|
||
|
#define mini_tcslwr mini_wcslwr
|
||
|
#define mini_tcscmp mini_wcscmp
|
||
|
#define mini_tcsncmp mini_wcsncmp
|
||
|
#define mini_tcsicmp mini_wcsicmp
|
||
|
#define mini_tcsnicmp mini_wcsnicmp
|
||
|
#define mini_tcsspn mini_wcsspn
|
||
|
#define mini_tcscspn mini_wcscspn
|
||
|
#define mini_tcstok_s mini_wcstok_s
|
||
|
#define mini_tcstok mini_wcstok
|
||
|
#define mini_tcslen mini_wcslen
|
||
|
#define mini_vstprintf_s mini_vswprintf_s
|
||
|
#define mini_vstprintf_size mini_vswprintf_size
|
||
|
#define mini_stprintf_s mini_swprintf_s
|
||
|
#define mini_stprintf mini_swprintf
|
||
|
#define mini_ftprintf mini_fwprintf
|
||
|
#define mini_tprintf mini_wprintf
|
||
|
#else
|
||
|
#define mini_tsearchenv mini_searchenv
|
||
|
#define mini_tsearchenv_s mini_searchenv_s
|
||
|
#define mini_tsearchenvex_s mini_searchenvex_s
|
||
|
#define mini_ftopen mini_fopen
|
||
|
#define mini_ftgets mini_fgets
|
||
|
#define mini_ttoi mini_atoi
|
||
|
#define mini_tcsncat mini_strncat
|
||
|
#define mini_tcscat_s mini_strcat_s
|
||
|
#define mini_tcschr mini_strchr
|
||
|
#define mini_tcsrchr mini_strrchr
|
||
|
#define mini_tcsstr mini_strstr
|
||
|
#define mini_tcsupr mini_strupr
|
||
|
#define mini_tcslwr mini_strlwr
|
||
|
#define mini_tcscmp mini_strcmp
|
||
|
#define mini_tcsncmp mini_strncmp
|
||
|
#define mini_tcsicmp mini_stricmp
|
||
|
#define mini_tcsnicmp mini_strnicmp
|
||
|
#define mini_tcsspn mini_strspn
|
||
|
#define mini_tcscspn mini_strcspn
|
||
|
#define mini_tcstok_s mini_strtok_s
|
||
|
#define mini_tcstok mini_strtok
|
||
|
#define mini_tcslen mini_strlen
|
||
|
#define mini_vstprintf_s mini_vsprintf_s
|
||
|
#define mini_vstprintf_size mini_vsprintf_size
|
||
|
#define mini_stprintf_s mini_sprintf_s
|
||
|
#define mini_stprintf mini_sprintf
|
||
|
#define mini_ftprintf mini_fprintf
|
||
|
#define mini_tprintf mini_printf
|
||
|
#endif
|
||
|
|
||
|
#ifndef MINICRT_BUILD
|
||
|
|
||
|
//
|
||
|
// Have apps use them by default
|
||
|
//
|
||
|
|
||
|
#undef _tsearchenv
|
||
|
#define _tsearchenv mini_tsearchenv
|
||
|
|
||
|
#undef searchenv
|
||
|
#define searchenv mini_searchenv
|
||
|
|
||
|
#undef _wsearchenv
|
||
|
#define _wsearchenv mini_wsearchenv
|
||
|
|
||
|
#undef _tsearchenv_s
|
||
|
#define _tsearchenv_s mini_tsearchenv_s
|
||
|
|
||
|
#undef searchenv_s
|
||
|
#define searchenv_s mini_searchenv_s
|
||
|
|
||
|
#undef _wsearchenv_s
|
||
|
#define _wsearchenv_s mini_wsearchenv_s
|
||
|
|
||
|
#undef _tsearchenvex_s
|
||
|
#define _tsearchenvex_s mini_tsearchenvex_s
|
||
|
|
||
|
#undef searchenvex_s
|
||
|
#define searchenvex_s mini_searchenvex_s
|
||
|
|
||
|
#undef _wsearchenvex_s
|
||
|
#define _wsearchenvex_s mini_wsearchenvex_s
|
||
|
|
||
|
#undef ftopen
|
||
|
#define ftopen mini_ftopen
|
||
|
|
||
|
#undef fopen
|
||
|
#define fopen mini_fopen
|
||
|
|
||
|
#undef _wfopen
|
||
|
#define _wfopen mini_wfopen
|
||
|
|
||
|
#undef ftgets
|
||
|
#define ftgets mini_ftgets
|
||
|
|
||
|
#undef fgets
|
||
|
#define fgets mini_fgets
|
||
|
|
||
|
#undef fgetws
|
||
|
#define fgetws mini_fgetws
|
||
|
|
||
|
#undef fclose
|
||
|
#define fclose mini_fclose
|
||
|
|
||
|
#undef _ttoi
|
||
|
#define _ttoi mini_ttoi
|
||
|
|
||
|
#undef atoi
|
||
|
#define atoi mini_atoi
|
||
|
|
||
|
#undef wtoi
|
||
|
#define wtoi mini_wtoi
|
||
|
|
||
|
#undef _tcschr
|
||
|
#define _tcschr mini_tcschr
|
||
|
|
||
|
#undef strchr
|
||
|
#define strchr mini_strchr
|
||
|
|
||
|
#undef wcschr
|
||
|
#define wcschr mini_wcschr
|
||
|
|
||
|
#undef _tcsrchr
|
||
|
#define _tcsrchr mini_tcsrchr
|
||
|
|
||
|
#undef strrchr
|
||
|
#define strrchr mini_strrchr
|
||
|
|
||
|
#undef wcsrchr
|
||
|
#define wcsrchr mini_wcsrchr
|
||
|
|
||
|
#undef _tcsstr
|
||
|
#define _tcsstr mini_tcsstr
|
||
|
|
||
|
#undef strstr
|
||
|
#define strstr mini_strstr
|
||
|
|
||
|
#undef wcsstr
|
||
|
#define wcsstr mini_wcsstr
|
||
|
|
||
|
#undef _tcsncat
|
||
|
#define _tcsncat mini_tcsncat
|
||
|
|
||
|
#undef strncat
|
||
|
#define strncat mini_strncat
|
||
|
|
||
|
#undef wcsncat
|
||
|
#define wcsncat mini_wcsncat
|
||
|
|
||
|
#undef _tcscat_s
|
||
|
#define _tcscat_s mini_tcscat_s
|
||
|
|
||
|
#undef strcat_s
|
||
|
#define strcat_s mini_strcat_s
|
||
|
|
||
|
#undef wcscat_s
|
||
|
#define wcscat_s mini_wcscat_s
|
||
|
|
||
|
#undef _tcscat
|
||
|
#define _tcscat(a,b) mini_tcscat_s(a, (unsigned int)-1, b)
|
||
|
|
||
|
#undef strcat
|
||
|
#define strcat(a,b) mini_strcat_s(a, (unsigned int)-1, b)
|
||
|
|
||
|
#undef wcscat
|
||
|
#define wcscat(a,b) mini_wcscat_s(a, (unsigned int)-1, b)
|
||
|
|
||
|
#undef _tcsupr
|
||
|
#define _tcsupr mini_tcsupr
|
||
|
|
||
|
#undef _strupr
|
||
|
#define _strupr mini_strupr
|
||
|
|
||
|
#undef _wcsupr
|
||
|
#define _wcsupr mini_wcsupr
|
||
|
|
||
|
#undef _tcslwr
|
||
|
#define _tcslwr mini_tcslwr
|
||
|
|
||
|
#undef _strlwr
|
||
|
#define _strlwr mini_strlwr
|
||
|
|
||
|
#undef _wcslwr
|
||
|
#define _wcslwr mini_wcslwr
|
||
|
|
||
|
#undef strcmp
|
||
|
#define strcmp mini_strcmp
|
||
|
|
||
|
#undef wcscmp
|
||
|
#define wcscmp mini_wcscmp
|
||
|
|
||
|
#undef _tcscmp
|
||
|
#define _tcscmp mini_tcscmp
|
||
|
|
||
|
#undef stricmp
|
||
|
#define stricmp mini_stricmp
|
||
|
|
||
|
#undef wcsicmp
|
||
|
#define wcsicmp mini_wcsicmp
|
||
|
|
||
|
#undef tcsicmp
|
||
|
#define tcsicmp mini_tcsicmp
|
||
|
|
||
|
#undef _stricmp
|
||
|
#define _stricmp mini_stricmp
|
||
|
|
||
|
#undef _wcsicmp
|
||
|
#define _wcsicmp mini_wcsicmp
|
||
|
|
||
|
#undef _tcsicmp
|
||
|
#define _tcsicmp mini_tcsicmp
|
||
|
|
||
|
#undef strncmp
|
||
|
#define strncmp mini_strncmp
|
||
|
|
||
|
#undef wcsncmp
|
||
|
#define wcsncmp mini_wcsncmp
|
||
|
|
||
|
#undef _tcsncmp
|
||
|
#define _tcsncmp mini_tcsncmp
|
||
|
|
||
|
#undef strnicmp
|
||
|
#define strnicmp mini_strnicmp
|
||
|
|
||
|
#undef wcsnicmp
|
||
|
#define wcsnicmp mini_wcsnicmp
|
||
|
|
||
|
#undef _tcsnicmp
|
||
|
#define _tcsnicmp mini_tcsnicmp
|
||
|
|
||
|
#undef _strnicmp
|
||
|
#define _strnicmp mini_strnicmp
|
||
|
|
||
|
#undef _wcsnicmp
|
||
|
#define _wcsnicmp mini_wcsnicmp
|
||
|
|
||
|
#undef strspn
|
||
|
#define strspn mini_strspn
|
||
|
|
||
|
#undef wcsspn
|
||
|
#define wcsspn mini_wcsspn
|
||
|
|
||
|
#undef _tcsspn
|
||
|
#define _tcsspn mini_tcsspn
|
||
|
|
||
|
#undef strcspn
|
||
|
#define strcspn mini_strcspn
|
||
|
|
||
|
#undef wcscspn
|
||
|
#define wcscspn mini_wcscspn
|
||
|
|
||
|
#undef _tcscspn
|
||
|
#define _tcscspn mini_tcscspn
|
||
|
|
||
|
#undef _tcstok_s
|
||
|
#define _tcstok_s mini_tcstok_s
|
||
|
|
||
|
#undef strtok_s
|
||
|
#define strtok_s mini_strtok_s
|
||
|
|
||
|
#undef wcstok_s
|
||
|
#define wcstok_s mini_wcstok_s
|
||
|
|
||
|
#undef _tcstok
|
||
|
#define _tcstok mini_tcstok
|
||
|
|
||
|
#undef strtok
|
||
|
#define strtok mini_strtok
|
||
|
|
||
|
#undef wcstok
|
||
|
#define wcstok mini_wcstok
|
||
|
|
||
|
#undef _tcslen
|
||
|
#define _tcslen mini_tcslen
|
||
|
|
||
|
#undef strlen
|
||
|
#define strlen mini_strlen
|
||
|
|
||
|
#undef wcslen
|
||
|
#define wcslen mini_wcslen
|
||
|
|
||
|
#undef _memcpy
|
||
|
#define _memcpy mini_memcpy
|
||
|
|
||
|
#undef memcpy
|
||
|
#define memcpy mini_memcpy
|
||
|
|
||
|
#undef _memmove
|
||
|
#define _memmove mini_memmove
|
||
|
|
||
|
#undef memmove
|
||
|
#define memmove mini_memmove
|
||
|
|
||
|
#undef memset
|
||
|
#define memset mini_memset
|
||
|
|
||
|
#undef memcmp
|
||
|
#define memcmp mini_memcmp
|
||
|
|
||
|
#undef rand
|
||
|
#define rand mini_rand
|
||
|
|
||
|
#undef srand
|
||
|
#define srand mini_srand
|
||
|
|
||
|
#undef _stprintf_s
|
||
|
#define _stprintf_s mini_stprintf_s
|
||
|
|
||
|
#undef sprintf_s
|
||
|
#define sprintf_s mini_sprintf_s
|
||
|
|
||
|
#undef swprintf_s
|
||
|
#define swprintf_s mini_swprintf_s
|
||
|
|
||
|
#undef _sntprintf
|
||
|
#define _sntprintf mini_stprintf_s
|
||
|
|
||
|
#undef _snprintf
|
||
|
#define _snprintf mini_sprintf_s
|
||
|
|
||
|
#undef _snwprintf
|
||
|
#define _snwprintf mini_swprintf_s
|
||
|
|
||
|
#undef _stprintf
|
||
|
#define _stprintf mini_stprintf
|
||
|
|
||
|
#undef sprintf
|
||
|
#define sprintf mini_sprintf
|
||
|
|
||
|
#undef swprintf
|
||
|
#define swprintf mini_swprintf
|
||
|
|
||
|
#undef _ftprintf
|
||
|
#define _ftprintf mini_ftprintf
|
||
|
|
||
|
#undef fprintf
|
||
|
#define fprintf mini_fprintf
|
||
|
|
||
|
#undef fwprintf
|
||
|
#define fwprintf mini_fwprintf
|
||
|
|
||
|
#undef _tprintf
|
||
|
#define _tprintf mini_tprintf
|
||
|
|
||
|
#undef printf
|
||
|
#define printf mini_printf
|
||
|
|
||
|
#undef wprintf
|
||
|
#define wprintf mini_wprintf
|
||
|
|
||
|
#undef _tcscpy
|
||
|
#define _tcscpy(a,b) mini_stprintf_s(a, (unsigned int)-1, _T("%s"), b)
|
||
|
|
||
|
#undef strcpy
|
||
|
#define strcpy(a,b) mini_sprintf_s(a, (unsigned int)-1, "%s", b)
|
||
|
|
||
|
#undef wcscpy
|
||
|
#define wcscpy(a,b) mini_swprintf_s(a, (unsigned int)-1, L"%s", b)
|
||
|
|
||
|
#endif // MINICRT_BUILD
|
||
|
|
||
|
//
|
||
|
// Easy ones, just take them from Win32
|
||
|
//
|
||
|
|
||
|
#undef malloc
|
||
|
#define malloc(x) HeapAlloc(GetProcessHeap(), 0, x)
|
||
|
|
||
|
#undef realloc
|
||
|
#define realloc(x,s) HeapReAlloc(GetProcessHeap(), 0, x, s)
|
||
|
|
||
|
#undef free
|
||
|
#define free(x) HeapFree(GetProcessHeap(), 0, x)
|
||
|
|
||
|
#undef exit
|
||
|
#define exit ExitProcess
|
||
|
|
||
|
#undef stdin
|
||
|
#define stdin (FILE*)0
|
||
|
|
||
|
#undef stdout
|
||
|
#define stdout (FILE*)1
|
||
|
|
||
|
#undef stderr
|
||
|
#define stderr (FILE*)2
|
||
|
|
||
|
#undef RAND_MAX
|
||
|
#define RAND_MAX 32768
|
||
|
|
||
|
#undef INT_MAX
|
||
|
#define INT_MAX (0x7fffffff)
|
||
|
|
||
|
#undef UINT_MAX
|
||
|
#define UINT_MAX (0xffffffff)
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
// vim:sw=4:ts=4:et:
|