Split socket()'s type into two Rock fields (XCC)
[akaros.git] / tools / compilers / gcc-glibc / glibc-2.19-akaros / sysdeps / akaros / socket.c
index e2acd6f..e109365 100644 (file)
@@ -26,7 +26,7 @@
 /* Create a new socket of type TYPE in domain DOMAIN, using
    protocol PROTOCOL.  If PROTOCOL is zero, one is chosen automatically.
    Returns a file descriptor for the new socket, or -1 for errors.  */
-int __socket(int domain, int stype, int protocol)
+int __socket(int domain, int type, int protocol)
 {
        Rock *r;
        int cfd, fd, n;
@@ -37,7 +37,7 @@ int __socket(int domain, int stype, int protocol)
        switch (domain) {
                case PF_INET:
                        /* get a free network directory */
-                       switch (stype) {
+                       switch (_sock_strip_opts(type)) {
                                case SOCK_DGRAM:
                                        net = "udp";
                                        cfd = open("/net/udp/clone", O_RDWR);
@@ -63,14 +63,15 @@ int __socket(int domain, int stype, int protocol)
                        if (cfd < 0) {
                                return -1;
                        }
-                       return _sock_data(cfd, net, domain, stype, protocol, 0);
+                       return _sock_data(cfd, net, domain, type, protocol, 0);
                case PF_UNIX:
                        if (pipe(pfd) < 0) {
                                return -1;
                        }
                        r = _sock_newrock(pfd[0]);
                        r->domain = domain;
-                       r->stype = stype;
+                       r->stype = _sock_strip_opts(type);
+                       r->sopts = _sock_get_opts(type);
                        r->protocol = protocol;
                        r->other = pfd[1];
                        return pfd[0];