diff options
Diffstat (limited to 'usr.sbin/xntpd/lib/atolfp.c')
-rw-r--r-- | usr.sbin/xntpd/lib/atolfp.c | 117 |
1 files changed, 0 insertions, 117 deletions
diff --git a/usr.sbin/xntpd/lib/atolfp.c b/usr.sbin/xntpd/lib/atolfp.c deleted file mode 100644 index 644a38c41875..000000000000 --- a/usr.sbin/xntpd/lib/atolfp.c +++ /dev/null @@ -1,117 +0,0 @@ -/* - * atolfp - convert an ascii string to an l_fp number - */ -#include <stdio.h> -#include <ctype.h> - -#include "ntp_fp.h" -#include "ntp_string.h" - -/* - * Powers of 10 - */ -static u_long ten_to_the_n[10] = { - 0, - 10, - 100, - 1000, - 10000, - 100000, - 1000000, - 10000000, - 100000000, - 1000000000, -}; - - -int -atolfp(str, lfp) - const char *str; - l_fp *lfp; -{ - register const char *cp; - register u_long dec_i; - register u_long dec_f; - char *ind; - int ndec; - int isneg; - static char *digits = "0123456789"; - - isneg = 0; - dec_i = dec_f = 0; - ndec = 0; - cp = str; - - /* - * We understand numbers of the form: - * - * [spaces][-|+][digits][.][digits][spaces|\n|\0] - */ - while (isspace(*cp)) - cp++; - - if (*cp == '-') { - cp++; - isneg = 1; - } - - if (*cp == '+') - cp++; - - if (*cp != '.' && !isdigit(*cp)) - return 0; - - while (*cp != '\0' && (ind = strchr(digits, *cp)) != NULL) { - dec_i = (dec_i << 3) + (dec_i << 1); /* multiply by 10 */ - dec_i += (ind - digits); - cp++; - } - - if (*cp != '\0' && !isspace(*cp)) { - if (*cp++ != '.') - return 0; - - while (ndec < 9 && *cp != '\0' - && (ind = strchr(digits, *cp)) != NULL) { - ndec++; - dec_f = (dec_f << 3) + (dec_f << 1); /* *10 */ - dec_f += (ind - digits); - cp++; - } - - while (isdigit(*cp)) - cp++; - - if (*cp != '\0' && !isspace(*cp)) - return 0; - } - - if (ndec > 0) { - register u_long tmp; - register u_long bit; - register u_long ten_fact; - - ten_fact = ten_to_the_n[ndec]; - - tmp = 0; - bit = 0x80000000; - while (bit != 0) { - dec_f <<= 1; - if (dec_f >= ten_fact) { - tmp |= bit; - dec_f -= ten_fact; - } - bit >>= 1; - } - if ((dec_f << 1) > ten_fact) - tmp++; - dec_f = tmp; - } - - if (isneg) - M_NEG(dec_i, dec_f); - - lfp->l_ui = dec_i; - lfp->l_uf = dec_f; - return 1; -} |