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

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: 1790
Valid CSS Valid XHTML 1.0 Strict