diff options
author | Joshua Allen <axlecrusher@gmail.com> | 2017-03-15 19:26:46 -0400 |
---|---|---|
committer | Joshua Allen <axlecrusher@gmail.com> | 2017-03-15 19:26:46 -0400 |
commit | 1388d54117ff780b7fadd4fd682b6def569838fa (patch) | |
tree | 3737760c889eeaf0bd7305becc943d859ae65d96 /windows/tcc_stubs.c | |
parent | 62cef8aec06638bd006eaef46700f491750fc108 (diff) | |
parent | 9bd0a0d949639b516d28091f57862ac5e59e65da (diff) | |
download | libsurvive-1388d54117ff780b7fadd4fd682b6def569838fa.tar.gz libsurvive-1388d54117ff780b7fadd4fd682b6def569838fa.tar.bz2 |
Merge branch 'master' of github.com:cnlohr/libsurvive
Conflicts:
src/survive_data.c
Diffstat (limited to 'windows/tcc_stubs.c')
-rw-r--r-- | windows/tcc_stubs.c | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/windows/tcc_stubs.c b/windows/tcc_stubs.c new file mode 100644 index 0000000..7872914 --- /dev/null +++ b/windows/tcc_stubs.c @@ -0,0 +1,59 @@ + +#include <_mingw.h> + +#define REMATH(x) double __cdecl x( double f ); float x##f(float v) { return x(v); } + +REMATH( acos ); +REMATH( cos ); +REMATH( sin ); +REMATH( sqrt ); +REMATH( asin ); + +double __cdecl strtod (const char* str, char** endptr); +float strtof( const char* str, char** endptr) +{ + return strtod( str, endptr ); +} + +double __cdecl atan2(double a, double b); +float atan2f(float a, float b) +{ + return atan2( a, b ); +} + +//From http://stackoverflow.com/questions/40159892/using-asprintf-on-windows +int __cdecl vsprintf_s( + char *buffer, + size_t numberOfElements, + const char *format, + va_list argptr +); + +int asprintf(char **strp, const char *fmt, ...) { + va_list ap; + va_start(ap, fmt); + int r = vasprintf(strp, fmt, ap); + va_end(ap); + return r; +} + +int vasprintf(char **strp, const char *fmt, va_list ap) { + // _vscprintf tells you how big the buffer needs to be + int len = _vscprintf(fmt, ap); + if (len == -1) { + return -1; + } + size_t size = (size_t)len + 1; + char *str = (char*)malloc(size); + if (!str) { + return -1; + } + // _vsprintf_s is the "secure" version of vsprintf + int r = vsprintf_s(str, len + 1, fmt, ap); + if (r == -1) { + free(str); + return -1; + } + *strp = str; + return r; +}
\ No newline at end of file |