Annotation of embedaddon/ntp/libntp/atouint.c, revision 1.1
1.1 ! misho 1: /*
! 2: * atouint - convert an ascii string to an unsigned long, with error checking
! 3: */
! 4: #include <sys/types.h>
! 5: #include <ctype.h>
! 6:
! 7: #include "ntp_types.h"
! 8: #include "ntp_stdlib.h"
! 9:
! 10: int
! 11: atouint(
! 12: const char *str,
! 13: u_long *uval
! 14: )
! 15: {
! 16: register u_long u;
! 17: register const char *cp;
! 18:
! 19: cp = str;
! 20: if (*cp == '\0')
! 21: return 0;
! 22:
! 23: u = 0;
! 24: while (*cp != '\0') {
! 25: if (!isdigit((int)*cp))
! 26: return 0;
! 27: if (u > 429496729 || (u == 429496729 && *cp >= '6'))
! 28: return 0; /* overflow */
! 29: u = (u << 3) + (u << 1);
! 30: u += *cp++ - '0'; /* ascii dependent */
! 31: }
! 32:
! 33: *uval = u;
! 34: return 1;
! 35: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>