mirror of
https://github.com/reactos/reactos.git
synced 2025-06-26 02:39:42 +00:00
[CMAKE]
- Sync with trunk head (r50270) - This also reverts r49298. svn path=/branches/cmake-bringup/; revision=50271
This commit is contained in:
commit
6c0c23cb53
482 changed files with 40346 additions and 24711 deletions
|
@ -4,8 +4,62 @@
|
|||
__int64
|
||||
_strtoi64(const char *nptr, char **endptr, int base)
|
||||
{
|
||||
TRACE("_strtoi64 is UNIMPLEMENTED\n");
|
||||
return 0;
|
||||
BOOL negative = FALSE;
|
||||
__int64 ret = 0;
|
||||
|
||||
while(isspace(*nptr)) nptr++;
|
||||
|
||||
if(*nptr == '-') {
|
||||
negative = TRUE;
|
||||
nptr++;
|
||||
} else if(*nptr == '+')
|
||||
nptr++;
|
||||
|
||||
if((base==0 || base==16) && *nptr=='0' && tolower(*(nptr+1))=='x') {
|
||||
base = 16;
|
||||
nptr += 2;
|
||||
}
|
||||
|
||||
if(base == 0) {
|
||||
if(*nptr=='0')
|
||||
base = 8;
|
||||
else
|
||||
base = 10;
|
||||
}
|
||||
|
||||
while(*nptr) {
|
||||
char cur = tolower(*nptr);
|
||||
int v;
|
||||
|
||||
if(isdigit(cur)) {
|
||||
if(cur >= '0'+base)
|
||||
break;
|
||||
v = cur-'0';
|
||||
} else {
|
||||
if(cur<'a' || cur>='a'+base-10)
|
||||
break;
|
||||
v = cur-'a'+10;
|
||||
}
|
||||
|
||||
if(negative)
|
||||
v = -v;
|
||||
|
||||
nptr++;
|
||||
|
||||
if(!negative && (ret>_I64_MAX/base || ret*base>_I64_MAX-v)) {
|
||||
ret = _I64_MAX;
|
||||
*_errno() = ERANGE;
|
||||
} else if(negative && (ret<_I64_MIN/base || ret*base<_I64_MIN-v)) {
|
||||
ret = _I64_MIN;
|
||||
*_errno() = ERANGE;
|
||||
} else
|
||||
ret = ret*base + v;
|
||||
}
|
||||
|
||||
if(endptr)
|
||||
*endptr = (char*)nptr;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue