Annotation of embedaddon/ntp/libntp/hextoint.c, revision 1.1.1.1
1.1 misho 1: /*
2: * hextoint - convert an ascii string in hex to an unsigned
3: * long, with error checking
4: */
5: #include <ctype.h>
6:
7: #include "ntp_stdlib.h"
8:
9: int
10: hextoint(
11: const char *str,
12: u_long *pu
13: )
14: {
15: register u_long u;
16: register const char *cp;
17:
18: cp = str;
19:
20: if (*cp == '\0')
21: return 0;
22:
23: u = 0;
24: while (*cp != '\0') {
25: if (!isxdigit(*cp))
26: return 0;
27: if (u & 0xF0000000)
28: return 0; /* overflow */
29: u <<= 4;
30: if ('0' <= *cp && *cp <= '9')
31: u += *cp++ - '0';
32: else if ('a' <= *cp && *cp <= 'f')
33: u += *cp++ - 'a' + 10;
34: else if ('A' <= *cp && *cp <= 'F')
35: u += *cp++ - 'A' + 10;
36: else
37: return 0;
38: }
39: *pu = u;
40: return 1;
41: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>