Skip to contentSkip to conversation

possible patch regarding problems parsing /etc/protocols

PATCH Per Jessen 1 participant 1 message Oct 26, 2002

lore
Share & tools
lore

Per Jessen

author
#0 lore raw

All,
I'm sure there is a reason why utils.c isn't using the getservent/getprotoent services from netdb.h - maybe platform related ? I don't know - but here is a patch that 1) uses those services for accessing /etc/protocols and /etc/services, and thereby fixes the minor problem with comments in either file. At least it works on Linux.

http://mitglied.lycos.de/pjessen/patches/patch-diald-1.0-utils

Signature · 5 lines
regards,
Per Jessen, Zurich
http://www.enidan.com - home of the J1 serial console.

Genius may have its limitations, but stupidity is not thus handicapped.
utils.c +31 -0
@@ -2,6 +2,7 @@
 
 #include <diald.h>
 
+#include <netdb.h>
 
 /* Grumble. Attempt to generate a nicely formatted ascii date without
  * a built in newline.
@@ -35,6 +36,35 @@
     return i;
 }
 
+int getprotocol(const char *name)
+{
+        struct protoent *p;
+
+        return  NULL!=(p=getprotobyname(name)) ? p->p_proto : 0;
+}
+
+char *getprotonumber(int proto)
+{
+        static char buf[16];
+        struct protoent *p;
+
+        if ( NULL!=(p=getprotobynumber(proto)) )
+                strcpy(buf,p->p_name);
+        else
+                sprintf(buf, "%d", proto);
+
+        return buf;
+}
+
+
+int getservice(const char *name, const char *proto)
+{
+        struct servent *service;
+
+        return  NULL!=(service=getservbyname( name, proto)) ? ntohs(service->s_port) : 0;
+}
+
+#if 0
 struct proto {
 	char *name;
 	int proto;
@@ -151,6 +181,7 @@
         }
     return 0;
 }
+#endif
 
 #if 0
 /* Stuff needed because to keep checker happy,