Added visual studio equivalent of libc's strtoull() - name redefine for newer VS versions, custom implementation for VS6 (I hope it works).
This should fix the compilation error from r14242 (bugreport:4059). git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@14245 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
df78683650
commit
8dfa315ce8
@ -234,6 +234,9 @@ typedef int32 intptr;
|
||||
#define strncmpi strncasecmp
|
||||
#define strnicmp strncasecmp
|
||||
#endif
|
||||
#if defined(_MSC_VER) && _MSC_VER > 1200
|
||||
#define strtoull _strtoui64
|
||||
#endif
|
||||
|
||||
// keyword replacement in windows
|
||||
#ifdef _WIN32
|
||||
|
@ -9,6 +9,7 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
|
||||
|
||||
|
||||
@ -251,6 +252,44 @@ size_t strnlen (const char* string, size_t maxlen)
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(WIN32) && defined(_MSC_VER) && _MSC_VER <= 1200
|
||||
unsigned long long strtoull(const char* str, char** endptr, int base)
|
||||
{
|
||||
unsigned long long result;
|
||||
int count;
|
||||
int n;
|
||||
|
||||
if( base == 0 )
|
||||
{
|
||||
if( str[0] == '0' && (str[1] == 'x' || str[1] == 'X') )
|
||||
base = 16;
|
||||
else
|
||||
if( str[0] == '0' )
|
||||
base = 8;
|
||||
}
|
||||
|
||||
if( base == 10 )
|
||||
count = sscanf(str, "%I64u%n", &result, &n);
|
||||
else
|
||||
if( base == 16 )
|
||||
count = sscanf(str, "%I64x%n", &result, &n);
|
||||
else
|
||||
count = 0; // fail
|
||||
|
||||
if( count < 1 )
|
||||
{
|
||||
errno = EINVAL;
|
||||
result = 0;
|
||||
n = 0;
|
||||
}
|
||||
|
||||
if( endptr )
|
||||
*endptr = (char*)str + n;
|
||||
|
||||
return result;
|
||||
}
|
||||
#endif
|
||||
|
||||
//----------------------------------------------------
|
||||
// E-mail check: return 0 (not correct) or 1 (valid).
|
||||
//----------------------------------------------------
|
||||
|
@ -28,6 +28,10 @@ char* _strtok_r(char* s1, const char* s2, char** lasts);
|
||||
size_t strnlen (const char* string, size_t maxlen);
|
||||
#endif
|
||||
|
||||
#if defined(WIN32) && defined(_MSC_VER) && _MSC_VER <= 1200
|
||||
unsigned long long strtoull(const char* str, char** endptr, int base);
|
||||
#endif
|
||||
|
||||
int e_mail_check(char* email);
|
||||
int config_switch(const char* str);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user