# 2.11BSD#431 - /usr/src/lib/libc/ns/ns_ntoa.c

##### Functions

    ns_ntoa           X

       1: /*
       2:  * Copyright (c) 1986 Regents of the University of California.
       3:  * All rights reserved.  The Berkeley software License Agreement
       4:  * specifies the terms and conditions for redistribution.
       5:  *
       6:  */
       7:
       8: #if defined(LIBC_SCCS) && !defined(lint)
       9: static char sccsid[] = "@(#)ns_ntoa.c	6.3 (Berkeley) 3/9/86";
      10: #endif LIBC_SCCS and not lint
      11:
      12: #include <sys/types.h>
      13: #include <netns/ns.h>
      14:
      15: char *
      16: ns_ntoa(addr)
      17: struct ns_addr addr;
      18: {
      19:     static char obuf[40];
      20:     char *spectHex();
      21:     union { union ns_net net_e; u_long long_e; } net;
      22:     u_short port = htons(addr.x_port);
      23:     register char *cp;
      24:     char *cp2;
      25:     register u_char *up = addr.x_host.c_host;
      26:     u_char *uplim = up + 6;
      27:
      28:     net.net_e = addr.x_net;
      29:     sprintf(obuf, "%lx", ntohl(net.long_e));
      30:     cp = spectHex(obuf);
      31:     cp2 = cp + 1;
      32:     while (*up==0 && up < uplim) up++;
      33:     if (up == uplim) {
      34:         if (port) {
      35:             sprintf(cp, ".0");
      36:             cp += 2;
      37:         }
      38:     } else {
      39:         sprintf(cp, ".%x", *up++);
      40:         while (up < uplim) {
      41:             while (*cp) cp++;
      42:             sprintf(cp, "%02x", *up++);
      43:         }
      44:         cp = spectHex(cp2);
      45:     }
      46:     if (port) {
      47:         sprintf(cp, ".%x", port);
      48:         spectHex(cp + 1);
      49:     }
      50:     return (obuf);
      51: }
      52:
      53: static char *
      54: spectHex(p0)
      55: char *p0;
      56: {
      57:     int ok = 0;
      58:     int nonzero = 0;
      59:     register char *p = p0;
      60:     for (; *p; p++) switch (*p) {
      61:
      62:     case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
      63:         *p += ('A' - 'a');
      64:         /* fall into . . . */
      65:     case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
      66:         ok = 1;
      67:     case '1': case '2': case '3': case '4': case '5':
      68:     case '6': case '7': case '8': case '9':
      69:         nonzero = 1;
      70:     }
      71:     if (nonzero && !ok) { *p++ = 'H'; *p = 0; }
      72:     return (p);
      73: }

#### Defined functions

ns_ntoa defined in line 15; never used
spectHex defined in line 53; used 4 times

- in line 20, 30, 44-48(2)

#### Defined variables

sccsid defined in line 9; never used

Last modified: 1987-01-19 Generated: 2016-12-26 | Generated by src2html V0.67 page hit count: 1175 |