1999-03-07 Mark Kettenis <kettenis@gnu.org>
[kopensolaris-gnu/glibc.git] / resolv / res_debug.c
index fa2ca80..eadb020 100644 (file)
@@ -203,7 +203,7 @@ do_rrset(msg, len, cp, cnt, pflag, file, hs)
         * Print answer records.
         */
        sflag = (_res.pfcode & pflag);
-       if (n = ntohs(cnt)) {
+       if ((n = ntohs(cnt))) {
                if ((!_res.pfcode) ||
                    ((sflag) && (_res.pfcode & RES_PRF_HEAD1)))
                        fprintf(file, hs);
@@ -337,7 +337,7 @@ __fp_nquery(msg, len, file)
        /*
         * Print question records.
         */
-       if (n = ntohs(hp->qdcount)) {
+       if ((n = ntohs(hp->qdcount))) {
                if ((!_res.pfcode) || (_res.pfcode & RES_PRF_QUES))
                        fprintf(file, ";; QUESTIONS:\n");
                while (--n >= 0) {
@@ -452,11 +452,12 @@ __p_fqnname(cp, msg, msglen, name, namelen)
        if ((n = dn_expand(msg, cp + msglen, cp, name, namelen)) < 0)
                return (NULL);
        newlen = strlen (name);
-       if (newlen == 0 || name[newlen - 1] != '.')
+       if (newlen == 0 || name[newlen - 1] != '.') {
                if (newlen+1 >= namelen)        /* Lack space for final dot */
                        return (NULL);
                else
                        strcpy(name + newlen, ".");
+       }
        return (cp + n);
 }
 
@@ -647,7 +648,7 @@ __p_rr(cp, msg, file)
                cp2 = cp1 + dlen;
                while (cp < cp2) {
                        putc('"', file);
-                       if (n = (unsigned char) *cp++) {
+                       if ((n = (unsigned char) *cp++)) {
                                for (c = n; c > 0 && cp < cp2; c--) {
                                        if (strchr("\n\"\\", *cp))
                                                (void) putc('\\', file);
@@ -1146,40 +1147,47 @@ static u_int8_t
 precsize_aton(strptr)
        char **strptr;
 {
-       unsigned int mval = 0, cmval = 0;
        u_int8_t retval = 0;
-       register char *cp;
-       register int exponent;
-       register int mantissa;
+       char *cp;
+       int exponent = 0;
+       int mantissa = 0;
 
        cp = *strptr;
+       while (isdigit(*cp)) {
+               if (mantissa == 0)
+                       mantissa = *cp - '0';
+               else
+                       exponent++;
+               cp++;
+       }
 
-       while (isdigit(*cp))
-               mval = mval * 10 + (*cp++ - '0');
-
-       if (*cp == '.') {               /* centimeters */
+       if (*cp == '.') {
                cp++;
                if (isdigit(*cp)) {
-                       cmval = (*cp++ - '0') * 10;
+                       if (mantissa == 0)
+                               mantissa = *cp - '0';
+                       else
+                               exponent++;
+                       cp++;
+
                        if (isdigit(*cp)) {
-                               cmval += (*cp++ - '0');
+                               if (mantissa == 0)
+                                       mantissa = *cp - '0';
+                               else
+                                       exponent++;
+                               cp++;
                        }
+                       else
+                               exponent++;
                }
        }
-       cmval = (mval * 100) + cmval;
-
-       for (exponent = 0; exponent < 9; exponent++)
-               if (cmval < poweroften[exponent+1])
-                       break;
-
-       mantissa = cmval / poweroften[exponent];
-       if (mantissa > 9)
-               mantissa = 9;
+       else
+               exponent += 2;
 
+       if (mantissa == 0)
+               exponent = 0;
        retval = (mantissa << 4) | exponent;
-
        *strptr = cp;
-
        return (retval);
 }