home *** CD-ROM | disk | FTP | other *** search
- /* History:
- 5/1/91 DJB baseline public domain
- */
-
- #include <stdio.h>
- #include <ctype.h>
- #include "auread.h"
- #include "structsockaddrin.h"
-
- int readport(port,term)
- char *port; /* must have MAXNUMLEN characters available */
- char term;
- {
- int ch;
- int loop;
- int portlen;
-
- portlen = loop = 0;
- while ((ch = getchar()) != term)
- {
- if (ch == EOF)
- return -1;
- if (isascii(ch) && isdigit(ch))
- port[portlen++] = ch;
- if (portlen == MAXNUMLEN)
- return -1;
- if ((++loop) > LOOPMAX)
- return -1;
- }
- port[portlen] = 0;
- return 0;
- }
-
- int readlr(localport,remoteport,loc4,rem4,lp,rp)
- char *localport;
- char *remoteport;
- int *loc4;
- int *rem4;
- int *lp;
- int *rp;
- {
- struct sockaddr_in sa;
- int salen;
-
- if (readport(localport,',') == -1)
- return -1;
- if (readport(remoteport,'\n') == -1)
- return -1;
- *lp = atoi(localport);
- *rp = atoi(remoteport);
-
- salen = sizeof(sa);
- if (getpeername(0,&sa,&salen) == -1)
- return -1;
- rem4[0] = (int) (unsigned int) ((unsigned char *) &sa.sin_addr)[0];
- rem4[1] = (int) (unsigned int) ((unsigned char *) &sa.sin_addr)[1];
- rem4[2] = (int) (unsigned int) ((unsigned char *) &sa.sin_addr)[2];
- rem4[3] = (int) (unsigned int) ((unsigned char *) &sa.sin_addr)[3];
-
- salen = sizeof(sa);
- if (getsockname(0,&sa,&salen) == -1)
- return -1;
- loc4[0] = (int) (unsigned int) ((unsigned char *) &sa.sin_addr)[0];
- loc4[1] = (int) (unsigned int) ((unsigned char *) &sa.sin_addr)[1];
- loc4[2] = (int) (unsigned int) ((unsigned char *) &sa.sin_addr)[2];
- loc4[3] = (int) (unsigned int) ((unsigned char *) &sa.sin_addr)[3];
-
- return 0;
- }
-