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 strncmpi strncasecmp
|
||||||
#define strnicmp strncasecmp
|
#define strnicmp strncasecmp
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(_MSC_VER) && _MSC_VER > 1200
|
||||||
|
#define strtoull _strtoui64
|
||||||
|
#endif
|
||||||
|
|
||||||
// keyword replacement in windows
|
// keyword replacement in windows
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <errno.h>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -251,6 +252,44 @@ size_t strnlen (const char* string, size_t maxlen)
|
|||||||
}
|
}
|
||||||
#endif
|
#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).
|
// 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);
|
size_t strnlen (const char* string, size_t maxlen);
|
||||||
#endif
|
#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 e_mail_check(char* email);
|
||||||
int config_switch(const char* str);
|
int config_switch(const char* str);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user