diff options
author | Ollivier Robert <roberto@FreeBSD.org> | 2008-08-17 17:37:33 +0000 |
---|---|---|
committer | Ollivier Robert <roberto@FreeBSD.org> | 2008-08-17 17:37:33 +0000 |
commit | cce65f439697627afbccf5a67035a957bb4d784a (patch) | |
tree | 16d100fbc9dae63888d48b464e471ba0e5065193 /libntp/octtoint.c | |
parent | 8c24a1e0ffd629427f94da1b681600008030c41a (diff) | |
download | src-cce65f439697627afbccf5a67035a957bb4d784a.tar.gz src-cce65f439697627afbccf5a67035a957bb4d784a.zip |
Flatten the dist and various 4.n.n trees in preparation of future ntp imports.
Notes
Notes:
svn path=/vendor/ntp/dist/; revision=181800
Diffstat (limited to 'libntp/octtoint.c')
-rw-r--r-- | libntp/octtoint.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/libntp/octtoint.c b/libntp/octtoint.c new file mode 100644 index 000000000000..f792b2bd6184 --- /dev/null +++ b/libntp/octtoint.c @@ -0,0 +1,35 @@ +/* + * octtoint - convert an ascii string in octal to an unsigned + * long, with error checking + */ +#include <stdio.h> +#include <ctype.h> + +#include "ntp_stdlib.h" + +int +octtoint( + const char *str, + u_long *ival + ) +{ + register u_long u; + register const char *cp; + + cp = str; + + if (*cp == '\0') + return 0; + + u = 0; + while (*cp != '\0') { + if (!isdigit((int)*cp) || *cp == '8' || *cp == '9') + return 0; + if (u >= 0x20000000) + return 0; /* overflow */ + u <<= 3; + u += *cp++ - '0'; /* ascii dependent */ + } + *ival = u; + return 1; +} |