13 if (*s ==
'+') { *sign = 1;
return 1; }
14 if (*s ==
'-') { *sign = -1;
return 1; }
23 unsigned long result = 0;
26 while ((c = (
unsigned long) (
unsigned char) (s[pos] -
'0')) < 8) {
27 result = result * 8 + c;
39 unsigned long result = 0;
42 while ((c = (
unsigned long) (
unsigned char) (s[pos] -
'0')) < 10) {
43 result = result * 10 + c;
50unsigned int scan_uint(
const char *s,
unsigned int *u)
70 if (sign < 0) *i = -u;
else *i = u;
76static long int fromhex(
unsigned char c)
80 else if (c>=
'A' && c<=
'F')
82 else if (c>=
'a' && c<=
'f')
87unsigned int scan_0x(
const char *s,
unsigned int *u)
90 unsigned long result = 0;
93 while ((c =
fromhex((
unsigned char) (s[pos]))) >= 0) {
94 result = (result << 4) + c;
107 while ((l >> (
sizeof(l)*8 - 4)) == 0
108 && (c = (
unsigned char)
fromhex((
unsigned char) *t))<16) {
113 return (
unsigned int)(t-s);
122 while ((c =
fromhex(*t)) < 16) {
int fromhex(unsigned char)
unsigned int scan_xlong(const char *s, unsigned long *u)
unsigned int scan_uint(const char *s, unsigned int *u)
unsigned int scan_ulong(const char *s, unsigned long *u)
unsigned int scan_plusminus(const char *s, int *sign)
unsigned int scan_xint(const char *s, unsigned int *i)
unsigned int scan_long(const char *s, long *i)
unsigned int scan_8long(const char *s, unsigned long *u)
unsigned int scan_0x(const char *s, unsigned int *u)