librpc: fix compile errors with musl
authornbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Sun, 29 Jun 2014 22:25:54 +0000 (22:25 +0000)
committernbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Sun, 29 Jun 2014 22:25:54 +0000 (22:25 +0000)
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@41400 3c298f89-4303-0410-b956-a3cf2f4a3e73

package/libs/librpc/patches/110-musl_fixes.patch [new file with mode: 0644]

diff --git a/package/libs/librpc/patches/110-musl_fixes.patch b/package/libs/librpc/patches/110-musl_fixes.patch
new file mode 100644 (file)
index 0000000..969f3e7
--- /dev/null
@@ -0,0 +1,330 @@
+--- a/rpc/types.h
++++ b/rpc/types.h
+@@ -79,22 +79,6 @@ typedef unsigned long rpcport_t;
+ #include <sys/types.h>
+ #endif
+-#ifndef __u_char_defined
+-typedef __u_char u_char;
+-typedef __u_short u_short;
+-typedef __u_int u_int;
+-typedef __u_long u_long;
+-typedef __quad_t quad_t;
+-typedef __u_quad_t u_quad_t;
+-typedef __fsid_t fsid_t;
+-# define __u_char_defined
+-#endif
+-#ifndef __daddr_t_defined
+-typedef __daddr_t daddr_t;
+-typedef __caddr_t caddr_t;
+-# define __daddr_t_defined
+-#endif
+-
+ #include <sys/time.h>
+ #include <sys/param.h>
+--- a/bindresvport.c
++++ b/bindresvport.c
+@@ -39,6 +39,7 @@
+ #include <sys/types.h>
+ #include <sys/socket.h>
+ #include <netinet/in.h>
++#include <netdb.h>
+ /*
+--- a/rpc/netdb.h
++++ b/rpc/netdb.h
+@@ -37,12 +37,17 @@
+ #define _RPC_NETDB_H  1
+ #include <features.h>
++#include <netdb.h>
+ #define __need_size_t
+ #include <stddef.h>
+ #include "types.h"
++#ifndef NETDB_INTERNAL
++#define NETDB_INTERNAL -1
++#endif
++
+ __BEGIN_DECLS
+ struct rpcent
+--- a/create_xid.c
++++ b/create_xid.c
+@@ -31,7 +31,6 @@
+ __UCLIBC_MUTEX_STATIC(mylock, PTHREAD_MUTEX_INITIALIZER);
+ static smallint is_initialized;
+-static struct drand48_data __rpc_lrand48_data;
+ u_long _create_xid (void) attribute_hidden;
+ u_long _create_xid (void)
+@@ -45,11 +44,11 @@ u_long _create_xid (void)
+       struct timeval now;
+       gettimeofday (&now, (struct timezone *) 0);
+-      srand48_r (now.tv_sec ^ now.tv_usec, &__rpc_lrand48_data);
++      srand48 (now.tv_sec ^ now.tv_usec);
+       is_initialized = 1;
+     }
+-  lrand48_r (&__rpc_lrand48_data, &res);
++  res = lrand48();
+   __UCLIBC_MUTEX_UNLOCK(mylock);
+--- a/clnt_tcp.c
++++ b/clnt_tcp.c
+@@ -58,7 +58,7 @@ static char sccsid[] = "@(#)clnt_tcp.c 1
+ #include <stdio.h>
+ #include <unistd.h>
+ #include <rpc/rpc.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <sys/socket.h>
+ #include <rpc/pmap_clnt.h>
+ #ifdef USE_IN_LIBIO
+--- a/clnt_udp.c
++++ b/clnt_udp.c
+@@ -45,7 +45,7 @@ static char sccsid[] = "@(#)clnt_udp.c 1
+ #include <rpc/rpc.h>
+ #include <rpc/xdr.h>
+ #include <rpc/clnt.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <sys/socket.h>
+ #include <sys/ioctl.h>
+ #include <netdb.h>
+--- a/clnt_unix.c
++++ b/clnt_unix.c
+@@ -55,7 +55,7 @@
+ #include <unistd.h>
+ #include <rpc/rpc.h>
+ #include <sys/uio.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <sys/socket.h>
+ #include <rpc/pmap_clnt.h>
+ #ifdef USE_IN_LIBIO
+--- a/pmap_rmt.c
++++ b/pmap_rmt.c
+@@ -48,7 +48,7 @@ static char sccsid[] = "@(#)pmap_rmt.c 1
+ #include <rpc/pmap_prot.h>
+ #include <rpc/pmap_clnt.h>
+ #include <rpc/pmap_rmt.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <sys/socket.h>
+ #include <stdio.h>
+ #include <errno.h>
+--- a/rcmd.c
++++ b/rcmd.c
+@@ -62,9 +62,10 @@ static char sccsid[] = "@(#)rcmd.c  8.3 (
+ #define __UCLIBC_HIDE_DEPRECATED__
+ #include <features.h>
+ #include <sys/param.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <sys/socket.h>
+ #include <sys/stat.h>
++#include <sys/types.h>
+ #include <netinet/in.h>
+ #include <arpa/inet.h>
+@@ -86,6 +87,11 @@ static char sccsid[] = "@(#)rcmd.c  8.3 (
+ #endif
+ #include <sys/uio.h>
++#ifndef _PATH_HEQUIV
++#define _PATH_HEQUIV "/etc/hosts.equiv"
++#endif
++
++int rresvport(int *alport);
+ /* some forward declarations */
+ static int __ivaliduser2(FILE *hostf, u_int32_t raddr,
+@@ -106,7 +112,7 @@ int rcmd(char **ahost, u_short rport, co
+       struct hostent *hp;
+       struct sockaddr_in sin, from;
+       struct pollfd pfd[2];
+-      int32_t oldmask;
++      sigset_t sig, osig;
+       pid_t pid;
+       int s, lport, timo;
+       char c;
+@@ -145,7 +151,9 @@ int rcmd(char **ahost, u_short rport, co
+       pfd[1].events = POLLIN;
+         *ahost = hp->h_name;
+-        oldmask = sigblock(sigmask(SIGURG)); /* __sigblock */
++      sigemptyset(&sig);
++      sigaddset(&sig, SIGURG);
++      sigprocmask(SIG_BLOCK, &sig, &osig);
+       for (timo = 1, lport = IPPORT_RESERVED - 1;;) {
+               s = rresvport(&lport);
+               if (s < 0) {
+@@ -154,7 +162,7 @@ int rcmd(char **ahost, u_short rport, co
+                                         "rcmd: socket: All ports in use\n");
+                       else
+                           (void)fprintf(stderr, "rcmd: socket: %m\n");
+-                      sigsetmask(oldmask); /* sigsetmask */
++                      sigprocmask(SIG_SETMASK, &osig, NULL);
+                       return -1;
+               }
+               fcntl(s, F_SETOWN, pid);
+@@ -189,7 +197,7 @@ int rcmd(char **ahost, u_short rport, co
+                       continue;
+               }
+               (void)fprintf(stderr, "%s: %m\n", hp->h_name);
+-              sigsetmask(oldmask); /* __sigsetmask */
++              sigprocmask(SIG_SETMASK, &osig, NULL);
+               return -1;
+       }
+       lport--;
+@@ -256,14 +264,14 @@ int rcmd(char **ahost, u_short rport, co
+               }
+               goto bad2;
+       }
+-      sigsetmask(oldmask);
++      sigprocmask(SIG_SETMASK, &osig, NULL);
+       return s;
+ bad2:
+       if (lport)
+               (void)close(*fd2p);
+ bad:
+       (void)close(s);
+-      sigsetmask(oldmask);
++      sigprocmask(SIG_SETMASK, &osig, NULL);
+       return -1;
+ }
+--- a/rpc/compat.h
++++ b/rpc/compat.h
+@@ -11,7 +11,7 @@
+ #define __UCLIBC_HAS_THREADS__
+ #endif
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <pthread.h>
+ #ifdef __UCLIBC__
+--- a/rpc_commondata.c
++++ b/rpc_commondata.c
+@@ -27,7 +27,7 @@
+  * Mountain View, California  94043
+  */
+ #include <rpc/rpc.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <sys/select.h>
+ #undef svc_fdset
+--- a/rtime.c
++++ b/rtime.c
+@@ -51,13 +51,16 @@ static char sccsid[] = "@(#)rtime.c        2.2 
+ #include <rpc/rpc.h>
+ #include <rpc/clnt.h>
+ #include <sys/types.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <sys/socket.h>
+ #include <sys/time.h>
+ #include <rpc/auth_des.h>
+ #include <errno.h>
+ #include <netinet/in.h>
++#ifndef IPPORT_TIMESERVER
++#define IPPORT_TIMESERVER 37
++#endif
+ #define NYEARS        (u_long)(1970 - 1900)
+ #define TOFFSET (u_long)(60*60*24*(365*NYEARS + (NYEARS/4)))
+--- a/svc.c
++++ b/svc.c
+@@ -44,7 +44,7 @@
+ #include "rpc_private.h"
+ #include <rpc/svc.h>
+ #include <rpc/pmap_clnt.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ /* used by svc_[max_]pollfd */
+ /* used by svc_fdset */
+--- a/svc_run.c
++++ b/svc_run.c
+@@ -36,7 +36,7 @@
+ #include <errno.h>
+ #include <unistd.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <rpc/rpc.h>
+ /* used by svc_[max_]pollfd */
+--- a/svc_tcp.c
++++ b/svc_tcp.c
+@@ -49,7 +49,7 @@ static char sccsid[] = "@(#)svc_tcp.c 1.
+ #include <string.h>
+ #include <rpc/rpc.h>
+ #include <sys/socket.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <errno.h>
+ #include <stdlib.h>
+--- a/svc_unix.c
++++ b/svc_unix.c
+@@ -47,7 +47,7 @@
+ #include <rpc/svc.h>
+ #include <sys/socket.h>
+ #include <sys/uio.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <errno.h>
+ #include <stdlib.h>
+--- a/sa_len.c
++++ b/sa_len.c
+@@ -20,9 +20,9 @@
+ #include <features.h>
+ #include <sys/socket.h>
+ #include <netinet/in.h>
+-#include <netipx/ipx.h>
+ #include <sys/un.h>
+ #if 0
++#include <netipx/ipx.h>
+ #include <netash/ash.h>
+ #include <netatalk/at.h>
+ #include <netax25/ax25.h>
+@@ -49,13 +49,13 @@ int __libc_sa_len (sa_family_t af)
+       return sizeof (struct sockaddr_rose);
+     case AF_PACKET:
+       return sizeof (struct sockaddr_ll);
++    case AF_IPX:
++      return sizeof (struct sockaddr_ipx);
+ #endif
+     case AF_INET:
+       return sizeof (struct sockaddr_in);
+     case AF_INET6:
+       return sizeof (struct sockaddr_in6);
+-    case AF_IPX:
+-      return sizeof (struct sockaddr_ipx);
+     case AF_LOCAL:
+       return sizeof (struct sockaddr_un);
+     }
+--- a/xdr_float.c
++++ b/xdr_float.c
+@@ -55,7 +55,7 @@ static char sccsid[] = "@(#)xdr_float.c 
+  * This routine works on Suns (Sky / 68000's) and Vaxen.
+  */
+-#define LSW   (__FLOAT_WORD_ORDER == __BIG_ENDIAN)
++#define LSW   (__BYTE_ORDER == __BIG_ENDIAN)
+ #ifdef vax