|
|
1.1 ! root 1: #include "defs.h" ! 2: #include <ctype.h> ! 3: #include <sys/inet/in.h> ! 4: ! 5: /* ! 6: * convert a port number into a file system name ! 7: */ ! 8: char * ! 9: tcptofs(port) ! 10: int port; ! 11: { ! 12: static char name[PATHLEN]; ! 13: struct in_service *s; ! 14: ! 15: s = in_service((char *)0, "tcp", (unsigned long)port); ! 16: if(s) ! 17: sprintf(name, "/cs/%s", s->name); ! 18: else ! 19: sprintf(name, "/cs/tcp.%d", port); ! 20: return name; ! 21: } ! 22: ! 23: /* ! 24: * convert an internal name into a port number ! 25: */ ! 26: fstotcp(name) ! 27: char *name; ! 28: { ! 29: int port; ! 30: struct in_service *s; ! 31: ! 32: /* ! 33: * the format could be ! 34: * [/cs/][tcp.]nnn ! 35: * where the []'s indicate optional peices and ! 36: * nnn is the port number ! 37: */ ! 38: if (strncmp(name, CSROOT, sizeof(CSROOT)-1)==0) ! 39: name += sizeof(CSROOT)-1; ! 40: if (strncmp(name, "tcp.", sizeof("tcp.")-1)==0) ! 41: name += sizeof("tcp.")-1; ! 42: for (port=0; *name; name++) { ! 43: if (!isdigit(*name)){ ! 44: port=0; ! 45: break; ! 46: } ! 47: port = port*10 + (*name - '0'); ! 48: } ! 49: /* ! 50: * or this may be a name in /etc/inservices ! 51: */ ! 52: if(port == 0) { ! 53: s = in_service(name, "tcp", (unsigned long)0); ! 54: if(s) ! 55: port = s->port; ! 56: } ! 57: return port; ! 58: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.