Annotation of embedaddon/ntp/libntp/hextoint.c, revision 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>