#include "func.def.in"

#define ADD_UNDERSCORE(symbol) symbol == _ ## symbol
#define ADD_UNDERSCORE_DATA(symbol) symbol DATA == _ ## symbol
#define ADD_UNDERSCORE_DATA_DLL(symbol) symbol DATA == _ ## symbol ## _dll
#define ADD_DOUBLE_UNDERSCORE(symbol) symbol == __ ## symbol

; This is list of symbol aliases from the Visual C++ 1.0 oldnames.lib library
; FIXME: some of these symbol aliases are commented, check and document why
#ifdef UCRTBASE
; access is provided as an alias for __mingw_access
#else
ADD_UNDERSCORE(access)
#endif
; ADD_UNDERSCORE(cgets)
ADD_UNDERSCORE(chdir)
ADD_UNDERSCORE(chmod)
ADD_UNDERSCORE(chsize)
ADD_UNDERSCORE(close)
; ADD_UNDERSCORE(cprintf)
; ADD_UNDERSCORE(cputs)
ADD_UNDERSCORE(creat)
; ADD_UNDERSCORE(cscanf)
ADD_UNDERSCORE(cwait)
#if defined(UCRTBASE)
; daylight variable is provided by ucrtbase_compat.c
#elif defined(CRTDLL)
ADD_UNDERSCORE_DATA_DLL(daylight)
#else
ADD_UNDERSCORE_DATA(daylight)
#endif
ADD_UNDERSCORE(dup)
ADD_UNDERSCORE(dup2)
ADD_UNDERSCORE(ecvt)
#if defined(UCRTBASE)
; _environ variable is not available in ucrtbase.dll and there is no replacement for it
#elif defined(CRTDLL)
; ADD_UNDERSCORE_DATA_DLL(environ)
#else
; ADD_UNDERSCORE_DATA(environ)
#endif
ADD_UNDERSCORE(eof)
ADD_UNDERSCORE(execl)
ADD_UNDERSCORE(execle)
ADD_UNDERSCORE(execlp)
ADD_UNDERSCORE(execlpe)
ADD_UNDERSCORE(execv)
ADD_UNDERSCORE(execve)
ADD_UNDERSCORE(execvp)
ADD_UNDERSCORE(execvpe)
ADD_UNDERSCORE(fcloseall)
ADD_UNDERSCORE(fcvt)
ADD_UNDERSCORE(fdopen)
ADD_UNDERSCORE(fgetchar)
ADD_UNDERSCORE(filelength)
ADD_UNDERSCORE(fileno)
; ADD_UNDERSCORE(flushall)
ADD_UNDERSCORE(fputchar)
; ADD_UNDERSCORE(fstat)
; ADD_UNDERSCORE(ftime)
#if defined(UCRTBASE)
; _HUGE variable is not available in ucrtbase.dll and there is no replacement for it
#elif defined(CRTDLL)
; ADD_UNDERSCORE_DATA_DLL(HUGE)
#else
; ADD_UNDERSCORE_DATA(HUGE)
#endif
ADD_UNDERSCORE(gcvt)
ADD_UNDERSCORE(getch)
ADD_UNDERSCORE(getche)
ADD_UNDERSCORE(getcwd)
#ifdef UCRTBASE
; ucrtbase.dll has got _getpid for all archs
ADD_UNDERSCORE(getpid)
#elif !defined(NO_GETPID_ALIAS)
; msvcrt.dll for arm/arm64 lacks _getpid
F_X86_ANY(ADD_UNDERSCORE(getpid))
#endif
ADD_UNDERSCORE(getw)
ADD_UNDERSCORE(isatty)
ADD_UNDERSCORE(itoa)
ADD_UNDERSCORE(kbhit)
ADD_UNDERSCORE(lfind)
; ADD_UNDERSCORE(locking)
ADD_UNDERSCORE(lsearch)
ADD_UNDERSCORE(lseek)
ADD_UNDERSCORE(ltoa)
ADD_UNDERSCORE(memccpy)
ADD_UNDERSCORE(memicmp)
ADD_UNDERSCORE(mkdir)
ADD_UNDERSCORE(mktemp)
; ADD_UNDERSCORE(onexit)
ADD_UNDERSCORE(open)
ADD_UNDERSCORE(putch)
ADD_UNDERSCORE(putenv)
ADD_UNDERSCORE(putw)
ADD_UNDERSCORE(read)
ADD_UNDERSCORE(rmdir)
ADD_UNDERSCORE(rmtmp)
ADD_UNDERSCORE(setmode)
ADD_UNDERSCORE(sopen)
ADD_UNDERSCORE(spawnl)
ADD_UNDERSCORE(spawnle)
ADD_UNDERSCORE(spawnlp)
ADD_UNDERSCORE(spawnlpe)
ADD_UNDERSCORE(spawnv)
ADD_UNDERSCORE(spawnve)
ADD_UNDERSCORE(spawnvp)
ADD_UNDERSCORE(spawnvpe)
; ADD_UNDERSCORE(stat)
#ifdef NO_STRCMPI_ALIAS
; Symbol _strcmpi is natively present and defined in the library def file
; So define strcmpi as an alias to _strcmpi
ADD_UNDERSCORE(strcmpi)
#else
; Symbol _strcmpi is not present in the library, it provides only _stricmp symbol
; So define strcmpi as an alias to _stricmp
strcmpi == _stricmp
#endif
ADD_UNDERSCORE(strdup)
ADD_UNDERSCORE(stricmp)
ADD_UNDERSCORE(strlwr)
ADD_UNDERSCORE(strnicmp)
ADD_UNDERSCORE(strnset)
ADD_UNDERSCORE(strrev)
ADD_UNDERSCORE(strset)
ADD_UNDERSCORE(strupr)
ADD_UNDERSCORE(swab)
#if defined(UCRTBASE)
; _sys_errlist variable is not available in ucrtbase.dll and there is no replacement for it
#else
// sys_errlist variable is without _dll suffix in crtdll.dll
; ADD_UNDERSCORE_DATA(sys_errlist)
#endif
#if defined(UCRTBASE)
; _sys_nerr variable is not available in ucrtbase.dll and there is no replacement for it
#elif defined(CRTDLL)
; ADD_UNDERSCORE_DATA_DLL(sys_nerr)
#else
; ADD_UNDERSCORE_DATA(sys_nerr)
#endif
ADD_UNDERSCORE(tell)
ADD_UNDERSCORE(tempnam)
#if defined(UCRTBASE)
; timezone variable is provided by ucrtbase_compat.c
#elif defined(CRTDLL)
ADD_UNDERSCORE_DATA_DLL(timezone)
#else
ADD_UNDERSCORE_DATA(timezone)
#endif
#if defined(UCRTBASE)
; tzname variable is provided by ucrtbase_compat.c
#else
// tzname variable is without _dll suffix in crtdll.dll
ADD_UNDERSCORE_DATA(tzname)
#endif
#if defined(UCRTBASE)
; tzset function is provided by ucrtbase_compat.c
#else
ADD_UNDERSCORE(tzset)
#endif
; ADD_UNDERSCORE(ultoa)
ADD_UNDERSCORE(umask)
ADD_UNDERSCORE(ungetch)
ADD_UNDERSCORE(unlink)
#ifdef FIXED_SIZE_SYMBOLS
ADD_UNDERSCORE(utime)
#else
F32(utime == _utime32)
F64(utime == _utime64)
#endif
ADD_UNDERSCORE(write)

; This is list of symbol aliases added in the Visual C++ 2.0 oldnames.lib library
; All these symbols with leading underscore are present also in pre-2.0 CRT versions: crtdll.dll and msvcrt10.dll
; ADD_UNDERSCORE(control87)
; ADD_UNDERSCORE(fpreset) ; Alias fpreset is set in CRT_fp10.c and CRT_fp8.c
ADD_UNDERSCORE(wcsdup)
ADD_UNDERSCORE(wcsicmp)
ADD_UNDERSCORE(wcsicoll)
ADD_UNDERSCORE(wcslwr)
ADD_UNDERSCORE(wcsnicmp)
ADD_UNDERSCORE(wcsnset)
ADD_UNDERSCORE(wcsrev)
ADD_UNDERSCORE(wcsset)
ADD_UNDERSCORE(wcsupr)

; This is list of symbol aliases added in the Visual C++ 4.0 oldnames.lib library
; All these symbols with leading underscore are present also in pre-4.0 CRT versions: crtdll.dll, msvcrt10.dll and msvcrt20.dll
; ADD_UNDERSCORE(cabs)
ADD_UNDERSCORE(hypot)
ADD_UNDERSCORE(j0)
ADD_UNDERSCORE(j1)
ADD_UNDERSCORE(jn)
ADD_UNDERSCORE(y0)
ADD_UNDERSCORE(y1)
ADD_UNDERSCORE(yn)

; This is list of symbol aliases for C99 functions
; ADD_UNDERSCORE(logb)
ADD_UNDERSCORE(nextafter)

#if defined(DEF_ARM32) || defined(DEF_ARM64)
; This is list of symbol aliases for C99 ARM long double functions
; They are defined as aliases to regular double symbols as on ARM, long double is equal to regular double
acosl == acos
asinl == asin
atan2l == atan2
atanl == atan
ceill == ceil
cosl == cos
expl == exp
floorl == floor
fmodl == fmod
log10l == log10
logl == log
; FIXME: Why is powl alias defined only for UCRT?
#ifdef UCRTBASE
powl == pow
#endif
sinl == sin
tanl == tan
#endif

; This is list of symbol aliases for C11 functions
#ifdef UCRTBASE
F32(timespec_get == _timespec32_get)
F64(timespec_get == _timespec64_get)
#endif

; This is list of symbol aliases for POSIX functions
ADD_DOUBLE_UNDERSCORE(isascii)
ADD_DOUBLE_UNDERSCORE(toascii)
ADD_UNDERSCORE(pclose)
ADD_UNDERSCORE(popen)
; ADD_UNDERSCORE(scalb)

; This is list of symbol aliases for GNU functions which are not part of POSIX or ISO C
strcasecmp == _stricmp
strncasecmp == _strnicmp

; This is list of various symbol aliases which are needed for compatibility
; Some symbols in some version of CRT library were added and some other symbols were removed or renamed
; This list provides some level of backward and forward compatibility

#ifndef NO_STRCMPI_ALIAS
_strcmpi == _stricmp
#endif

#ifdef WITH_ATOLL_ALIAS
atoll == _atoi64
#endif

#ifdef WITH_ATOLL_L_ALIAS
_atoll_l == _atoi64_l
#endif

#ifdef WITH_LLABS_ALIAS
llabs == _abs64
imaxabs == _abs64
#elif defined(WITH_IMAXABS_ALIAS)
imaxabs == llabs
#endif

#ifdef WITH_IMAXDIV_ALIAS
imaxdiv == lldiv
#endif

#ifdef WITH_STRTO64_ALIAS
strtoll == _strtoi64
strtoull == _strtoui64
strtoimax == _strtoi64
strtoumax == _strtoui64
#endif

#ifdef WITH_STRTO64_L_ALIAS
_strtoll_l == _strtoi64_l
_strtoull_l == _strtoui64_l
_strtoimax_l == _strtoi64_l
_strtoumax_l == _strtoui64_l
#endif

; This is list of find symbol aliases, every CRT library has either find symbols with SIZE suffix or without them
#ifdef FIXED_SIZE_SYMBOLS
F32(_findfirst32 == _findfirst)
F64(_findfirst64i32 == _findfirst)
#ifndef NO_I64_FIXED_SIZE
F32(_findfirst32i64 == _findfirsti64)
#ifndef NO_FIXED_SIZE_64_ALIAS
F64(_findfirst64 == _findfirsti64)
#endif
#endif
F32(_findnext32 == _findnext)
F64(_findnext64i32 == _findnext)
#ifndef NO_I64_FIXED_SIZE
F32(_findnext32i64 == _findnexti64)
#ifndef NO_FIXED_SIZE_64_ALIAS
F64(_findnext64 == _findnexti64)
#endif
#endif
#ifndef NO_WIDE_FIXED_SIZE
F32(_wfindfirst32 == _wfindfirst)
F64(_wfindfirst64i32 == _wfindfirst)
#ifndef NO_I64_FIXED_SIZE
F32(_wfindfirst32i64 == _wfindfirsti64)
#ifndef NO_FIXED_SIZE_64_ALIAS
F64(_wfindfirst64 == _wfindfirsti64)
#endif
#endif
F32(_wfindnext32 == _wfindnext)
F64(_wfindnext64i32 == _wfindnext)
#ifndef NO_I64_FIXED_SIZE
F32(_wfindnext32i64 == _wfindnexti64)
#ifndef NO_FIXED_SIZE_64_ALIAS
F64(_wfindnext64 == _wfindnexti64)
#endif
#endif
#endif
#else
F32(_findfirst == _findfirst32)
F64(_findfirst == _findfirst64i32)
F32(_findfirsti64 == _findfirst32i64)
F64(_findfirsti64 == _findfirst64)
F32(_findnext == _findnext32)
F64(_findnext == _findnext64i32)
F32(_findnexti64 == _findnext32i64)
F64(_findnexti64 == _findnext64)
F32(_wfindfirst == _wfindfirst32)
F64(_wfindfirst == _wfindfirst64i32)
F32(_wfindfirsti64 == _wfindfirst32i64)
F64(_wfindfirsti64 == _wfindfirst64)
F32(_wfindnext == _wfindnext32)
F64(_wfindnext == _wfindnext64i32)
F32(_wfindnexti64 == _wfindnext32i64)
F64(_wfindnexti64 == _wfindnext64)
#endif

; This is list of stat symbol aliases, every CRT library has either stat symbols with SIZE suffix or without them
#ifdef FIXED_SIZE_SYMBOLS
F32(_fstat32 == _fstat)
F64(_fstat64i32 == _fstat)
#ifndef NO_I64_FIXED_SIZE
F32(_fstat32i64 == _fstati64)
#ifndef NO_FIXED_SIZE_64_ALIAS
F64(_fstat64 == _fstati64)
#endif
#endif
F32(_stat32 == _stat)
F64(_stat64i32 == _stat)
#ifndef NO_I64_FIXED_SIZE
F32(_stat32i64 == _stati64)
#ifndef NO_FIXED_SIZE_64_ALIAS
F64(_stat64 == _stati64)
#endif
#endif
#ifndef NO_WIDE_FIXED_SIZE
F32(_wstat32 == _wstat)
F64(_wstat64i32 == _wstat)
#ifndef NO_I64_FIXED_SIZE
F32(_wstat32i64 == _wstati64)
#ifndef NO_FIXED_SIZE_64_ALIAS
F64(_wstat64 == _wstati64)
#endif
#endif
#endif
#else
F32(_fstat == _fstat32)
F64(_fstat == _fstat64i32)
F32(_fstati64 == _fstat32i64)
F64(_fstati64 == _fstat64)
F32(_stat == _stat32)
F64(_stat == _stat64i32)
F32(_stati64 == _stat32i64)
F64(_stati64 == _stat64)
F32(_wstat == _wstat32)
F64(_wstat == _wstat64i32)
F32(_wstati64 == _wstat32i64)
F64(_wstati64 == _wstat64)
#endif

; This is list of time symbol aliases, every CRT library except msvcrt.dll has either time symbols with SIZE suffix or without them
#ifndef NO_TIME_ALIAS
#ifdef FIXED_SIZE_SYMBOLS
F32(_ctime32 == ctime)
F64(_ctime64 == ctime)
F32(_difftime32 == difftime)
F64(_difftime64 == difftime)
F32(_ftime32 == _ftime)
F64(_ftime64 == _ftime)
F32(_futime32 == _futime)
F64(_futime64 == _futime)
F32(_gmtime32 == gmtime)
F64(_gmtime64 == gmtime)
F32(_localtime32 == localtime)
F64(_localtime64 == localtime)
; Skip _mkgmtime as it is present only in msvcrt.dll
F32(_mktime32 == mktime)
F64(_mktime64 == mktime)
F32(_time32 == time)
F64(_time64 == time)
F32(_utime32 == _utime)
F64(_utime64 == _utime)
#ifndef NO_WIDE_FIXED_SIZE
F32(_wctime32 == _wctime)
F64(_wctime64 == _wctime)
F32(_wutime32 == _wutime)
F64(_wutime64 == _wutime)
#endif
#else
F32(ctime == _ctime32)
F64(ctime == _ctime64)
F32(difftime == _difftime32)
F64(difftime == _difftime64)
F32(_ftime == _ftime32)
F64(_ftime == _ftime64)
F32(_futime == _futime32)
F64(_futime == _futime64)
F32(gmtime == _gmtime32)
F64(gmtime == _gmtime64)
F32(localtime == _localtime32)
F64(localtime == _localtime64)
F32(_mkgmtime == _mkgmtime32)
F64(_mkgmtime == _mkgmtime64)
F32(mktime == _mktime32)
F64(mktime == _mktime64)
F32(time == _time32)
F64(time == _time64)
F32(_utime == _utime32)
F64(_utime == _utime64)
F32(_wctime == _wctime32)
F64(_wctime == _wctime64)
F32(_wutime == _wutime32)
F64(_wutime == _wutime64)
#endif
#endif

; This is list of printf/scanf symbol aliases with __ms_ prefix
#ifndef UCRTBASE
__ms_fprintf == fprintf
__ms_fscanf == fscanf
__ms_fwprintf == fwprintf
__ms_fwscanf == fwscanf
__ms_printf == printf
__ms_scanf == scanf
__ms_sprintf == sprintf
__ms_sscanf == sscanf
#ifdef PRE_C95_SWPRINTF
__ms_swprintf == swprintf
#else
__ms_swprintf == _swprintf
#endif
__ms_swscanf == swscanf
__ms_vfprintf == vfprintf
__ms_vfwprintf == vfwprintf
__ms_vprintf == vprintf
__ms_vsprintf == vsprintf
#ifdef PRE_C95_SWPRINTF
__ms_vswprintf == vswprintf
#else
__ms_vswprintf == _vswprintf
#endif
__ms_vwprintf == vwprintf
__ms_wprintf == wprintf
__ms_wscanf == wscanf
#endif

; This is list of additional symbol aliases not available in any library as neither native symbols nor aliases
; FIXME: check if these really are needed

; Origin of the symbol wcscmpi is unknown. This symbol is not present in
; crtdll.dll and neither in any msvcr* version. The only source of wcscmpi is
; wcstr.h header file from the Microsoft Visual C++ 1.0 (32-bit for NT) and
; Microsoft Windows NT 3.1 SDK where wcscmpi and _wcscmpi are defined as
; macros which expand to _wcsicmp. So the raw wcscmpi is not linkable symbol
; even in the old Visual C++ versions.
wcscmpi == _wcsicmp

; Origin of these symbols is unknown too.
ADD_UNDERSCORE(chgsign)
ADD_UNDERSCORE(fgetwchar)
ADD_UNDERSCORE(finite)
ADD_UNDERSCORE(fpclass)
ADD_UNDERSCORE(fputwchar)
ADD_UNDERSCORE(heapwalk)
ADD_DOUBLE_UNDERSCORE(iscsymf)
ADD_DOUBLE_UNDERSCORE(iscsym)
ADD_UNDERSCORE(searchenv)
ADD_UNDERSCORE(stricoll)
#ifndef UCRTBASE
ADD_UNDERSCORE(vsnprintf_s)
#endif
ADD_UNDERSCORE(wpopen)
