home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1992 March / Source_Code_CD-ROM_Walnut_Creek_March_1992.iso / usenet / altsrcs / 3 / 3297 / auread.c next >
Encoding:
C/C++ Source or Header  |  1991-05-07  |  1.5 KB  |  70 lines

  1. /* History:
  2. 5/1/91 DJB baseline public domain
  3. */
  4.  
  5. #include <stdio.h>
  6. #include <ctype.h>
  7. #include "auread.h"
  8. #include "structsockaddrin.h"
  9.  
  10. int readport(port,term)
  11. char *port; /* must have MAXNUMLEN characters available */
  12. char term;
  13. {
  14.  int ch;
  15.  int loop;
  16.  int portlen;
  17.  
  18.  portlen = loop = 0;
  19.  while ((ch = getchar()) != term)
  20.   {
  21.    if (ch == EOF)
  22.      return -1;
  23.    if (isascii(ch) && isdigit(ch))
  24.      port[portlen++] = ch;
  25.    if (portlen == MAXNUMLEN)
  26.      return -1;
  27.    if ((++loop) > LOOPMAX)
  28.      return -1;
  29.   }
  30.  port[portlen] = 0;
  31.  return 0;
  32. }
  33.  
  34. int readlr(localport,remoteport,loc4,rem4,lp,rp)
  35. char *localport;
  36. char *remoteport;
  37. int *loc4;
  38. int *rem4;
  39. int *lp;
  40. int *rp;
  41. {
  42.  struct sockaddr_in sa;
  43.  int salen;
  44.  
  45.  if (readport(localport,',') == -1)
  46.    return -1;
  47.  if (readport(remoteport,'\n') == -1)
  48.    return -1;
  49.  *lp = atoi(localport);
  50.  *rp = atoi(remoteport);
  51.  
  52.  salen = sizeof(sa);
  53.  if (getpeername(0,&sa,&salen) == -1)
  54.    return -1;
  55.  rem4[0] = (int) (unsigned int) ((unsigned char *) &sa.sin_addr)[0];
  56.  rem4[1] = (int) (unsigned int) ((unsigned char *) &sa.sin_addr)[1];
  57.  rem4[2] = (int) (unsigned int) ((unsigned char *) &sa.sin_addr)[2];
  58.  rem4[3] = (int) (unsigned int) ((unsigned char *) &sa.sin_addr)[3];
  59.  
  60.  salen = sizeof(sa);
  61.  if (getsockname(0,&sa,&salen) == -1)
  62.    return -1;
  63.  loc4[0] = (int) (unsigned int) ((unsigned char *) &sa.sin_addr)[0];
  64.  loc4[1] = (int) (unsigned int) ((unsigned char *) &sa.sin_addr)[1];
  65.  loc4[2] = (int) (unsigned int) ((unsigned char *) &sa.sin_addr)[2];
  66.  loc4[3] = (int) (unsigned int) ((unsigned char *) &sa.sin_addr)[3];
  67.  
  68.  return 0;
  69. }
  70.