Subversion Repositories HelenOS-historic

Compare Revisions

Ignore whitespace Rev 581 → Rev 582

/kernel/trunk/generic/src/lib/func.c
113,3 → 113,41
return;
}
}
 
/** Convert ascii representation to __native
*
* Supports 0x for hexa & 0 for octal notation.
* Does not check for overflows, does not support negative numbers
*
* @param text Textual representation of number
* @return Converted number or 0 if no valid number ofund
*/
__native atoi(const char *text)
{
int base = 10;
__native result = 0;
 
if (text[0] == '0' && text[1] == 'x') {
base = 16;
text += 2;
} else if (text[0] == '0')
base = 8;
 
while (*text) {
result *= base;
if (base != 16 && *text >= 'A' && *text <= 'F')
break;
if (base == 8 && *text >='8')
break;
 
if (*text >= '0' && *text <= '9')
result += *text - '0';
else if (*text >= 'A' && *text <= 'F')
result += *text - 'A' + 10;
else
break;
text++;
}
 
return result;
}