Removes BSD shims that are (better) in glibc
authorBarret Rhoden <brho@cs.berkeley.edu>
Wed, 13 May 2015 22:26:15 +0000 (18:26 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Fri, 15 May 2015 01:35:44 +0000 (21:35 -0400)
We have a problem with our BSD shims.  Many of them implement functions
that are already in glibc, and we can have link errors.  The functions
removed in this commit appear to do the same thing as their glibc
counterparts, so removing them is not a problem.

Putenv is a little different.  It's not the same functionality as
glibc's, but we're using glibc-style environments and whatnot already,
so we might as well use that.

The bigger issue is the other functions:

user/bsd/gethostbyaddr.c
user/bsd/gethostbyname.c
user/bsd/getprotobyname.c
user/bsd/getservbyname.c

These appear to have a different implementation.  Gethostby all use cs
under the hood, which is different than glibc.  The long term plan is to
probably push those functions into glibc.

The other set of issues is that functions like listen and accept have
different meanings between glibc and plan 9.  Good times.

user/bsd/inet_addr.c [deleted file]
user/bsd/inet_ntoa.c [deleted file]
user/bsd/putenv.c [deleted file]
user/bsd/rresvport.c [deleted file]

diff --git a/user/bsd/inet_addr.c b/user/bsd/inet_addr.c
deleted file mode 100644 (file)
index 33fb8f4..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-/* 
- * This file is part of the UCB release of Plan 9. It is subject to the license
- * terms in the LICENSE file found in the top-level directory of this
- * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
- * part of the UCB release of Plan 9, including this file, may be copied,
- * modified, propagated, or distributed except according to the terms contained
- * in the LICENSE file.
- */
-/* posix */
-#include <sys/types.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <string.h>
-
-/* bsd extensions */
-#include <sys/uio.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-
-#include "priv.h"
-
-/* where to define this? only used once? */
-unsigned long nptohl(void *p);
-
-#define CLASS(x)       (x[0]>>6)
-
-unsigned long
-inet_addr(char *from)
-{
-       int i;
-       char *p;
-       unsigned char to[4];
-       unsigned long x;
-       p = from;
-       memset(to, 0, 4);
-       for(i = 0; i < 4 && *p; i++){
-               to[i] = strtoul(p, &p, 0);
-               if(*p == '.')
-                       p++;
-       }
-
-       switch(CLASS(to)){
-       case 0: /* class A - 1 byte net */
-       case 1:
-               if(i == 3){
-                       to[3] = to[2];
-                       to[2] = to[1];
-                       to[1] = 0;
-               } else if (i == 2){
-                       to[3] = to[1];
-                       to[1] = 0;
-               }
-               break;
-       case 2: /* class B - 2 byte net */
-               if(i == 3){
-                       to[3] = to[2];
-                       to[2] = 0;
-               }
-               break;
-       }
-       x = nptohl(to);
-       x = htonl(x);
-       return x;
-}
diff --git a/user/bsd/inet_ntoa.c b/user/bsd/inet_ntoa.c
deleted file mode 100644 (file)
index b302ee8..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-/* 
- * This file is part of the UCB release of Plan 9. It is subject to the license
- * terms in the LICENSE file found in the top-level directory of this
- * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
- * part of the UCB release of Plan 9, including this file, may be copied,
- * modified, propagated, or distributed except according to the terms contained
- * in the LICENSE file.
- */
-/* posix */
-#include <sys/types.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <stdio.h>
-
-/* bsd extensions */
-#include <sys/uio.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <sys/un.h>
-
-#include "priv.h"
-
-char*
-inet_ntoa(struct in_addr in)
-{
-       static char s[18];
-       unsigned char *p;       
-
-       p = (unsigned char*)&in.s_addr;
-       snprintf(s, sizeof s, "%d.%d.%d.%d", p[0], p[1], p[2], p[3]);
-       return s;
-}
diff --git a/user/bsd/putenv.c b/user/bsd/putenv.c
deleted file mode 100644 (file)
index 14204be..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/* 
- * This file is part of the UCB release of Plan 9. It is subject to the license
- * terms in the LICENSE file found in the top-level directory of this
- * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
- * part of the UCB release of Plan 9, including this file, may be copied,
- * modified, propagated, or distributed except according to the terms contained
- * in the LICENSE file.
- */
-#include <sys/types.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <string.h>
-
-#include "priv.h"
-
-int
-putenv(char *s)
-{
-       int f, n;
-       char *value;
-       char buf[300];
-
-       value = strchr(s, '=');
-       if (value) {
-               n = value-s;
-               if(n<=0 || n > sizeof(buf)-6)
-                       return -1;
-               strcpy(buf, "/env/");
-               strncpy(buf+5, s, n);
-               buf[n+5] = 0;
-               f = creat(buf, 0666);
-               if(f < 0)
-                       return 1;
-               value++;
-               n = strlen(value);
-               if(write(f, value, n) != n)
-                       return -1;
-               close(f);
-               return 0;
-       } else
-               return -1;
-}
diff --git a/user/bsd/rresvport.c b/user/bsd/rresvport.c
deleted file mode 100644 (file)
index 75ecb81..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-/* 
- * This file is part of the UCB release of Plan 9. It is subject to the license
- * terms in the LICENSE file found in the top-level directory of this
- * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
- * part of the UCB release of Plan 9, including this file, may be copied,
- * modified, propagated, or distributed except according to the terms contained
- * in the LICENSE file.
- */
-/* posix */
-#include <sys/types.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <time.h>
-
-/* socket extensions */
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <sys/un.h>
-
-#include "priv.h"
-
-int
-rresvport(int *p)
-{
-       int fd;
-       short i;
-       struct  sockaddr_in in;
-       static int next;
-
-       fd = socket(PF_INET, SOCK_STREAM, 0);
-       if(fd < 0)
-               return -1;
-       i = 600 + ((getpid()+next++)%(1024-600));
-       memset(&in, 0, sizeof(in));
-       in.sin_family = AF_INET;
-       in.sin_port = htons(i);
-printf("in.sin_port = %d\n", in.sin_port);
-       if(bind(fd, (struct sockaddr *)&in, sizeof(in)) < 0){
-               close(fd);
-               return -1;
-       }
-       if(p)
-               *p = i;
-       return fd;
-}