diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2010-02-02 12:45:38 +0100 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2010-02-02 12:45:38 +0100 |
commit | bb1dcc9aab5f517d963b601289aa75508d6e088e (patch) | |
tree | 682957f7a02ac69cbe9c1adb5f22092bfd379de2 | |
parent | 5b9b1365a086056e992e7868db8e49989fedcbaf (diff) | |
download | busybox-bb1dcc9aab5f517d963b601289aa75508d6e088e.tar.gz |
more thorough fix for systems with strange socklen_t
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r-- | include/inet_common.h | 8 | ||||
-rw-r--r-- | include/libbb.h | 40 | ||||
-rw-r--r-- | include/platform.h | 12 | ||||
-rw-r--r-- | include/unicode.h | 4 | ||||
-rw-r--r-- | networking/ifconfig.c | 2 | ||||
-rw-r--r-- | networking/interface.c | 2 |
6 files changed, 36 insertions, 32 deletions
diff --git a/include/inet_common.h b/include/inet_common.h index f4374e5a2..4638aa9eb 100644 --- a/include/inet_common.h +++ b/include/inet_common.h @@ -6,8 +6,10 @@ * Heavily modified by Manuel Novoa III Mar 12, 2001 * */ +#ifndef INET_COMMON_H +#define INET_COMMON_H 1 -#include "platform.h" +PUSH_AND_SET_FUNCTION_VISIBILITY_TO_HIDDEN /* hostfirst!=0 If we expect this to be a hostname, try hostname database first @@ -24,3 +26,7 @@ int INET6_resolve(const char *name, struct sockaddr_in6 *sin6) FAST_FUNC; /* These return malloced string */ char *INET_rresolve(struct sockaddr_in *s_in, int numeric, uint32_t netmask) FAST_FUNC; char *INET6_rresolve(struct sockaddr_in6 *sin6, int numeric) FAST_FUNC; + +POP_SAVED_FUNCTION_VISIBILITY + +#endif diff --git a/include/libbb.h b/include/libbb.h index 3b7eea286..9e3c18407 100644 --- a/include/libbb.h +++ b/include/libbb.h @@ -30,10 +30,6 @@ #include <sys/ioctl.h> #include <sys/mman.h> #include <sys/socket.h> -#if defined __FreeBSD__ -# include <netinet/in.h> -# include <arpa/inet.h> -#endif #include <sys/stat.h> #include <sys/time.h> #include <sys/types.h> @@ -44,39 +40,26 @@ /* Try to pull in PATH_MAX */ #include <limits.h> #include <sys/param.h> -#ifndef PATH_MAX -# define PATH_MAX 256 -#endif - -#ifndef BUFSIZ -# define BUFSIZ 4096 -#endif - #ifdef HAVE_MNTENT_H #include <mntent.h> #endif - #ifdef HAVE_SYS_STATFS_H #include <sys/statfs.h> #endif - #if ENABLE_SELINUX #include <selinux/selinux.h> #include <selinux/context.h> #include <selinux/flask.h> #include <selinux/av_permissions.h> #endif - #if ENABLE_LOCALE_SUPPORT # include <locale.h> #else # define setlocale(x,y) ((void)0) #endif - #ifdef DMALLOC # include <dmalloc.h> #endif - #include <pwd.h> #include <grp.h> #if ENABLE_FEATURE_SHADOWPASSWDS @@ -87,6 +70,23 @@ # include <shadow.h> # endif #endif +#if defined __FreeBSD__ +# include <netinet/in.h> +# include <arpa/inet.h> +#elif defined __APPLE__ +# include <netinet/in.h> +#else +# include <arpa/inet.h> +# if !defined(__socklen_t_defined) && !defined(_SOCKLEN_T_DECLARED) +/* We #define socklen_t *after* includes, otherwise we get + * typedef redefinition errors from system headers + * (in case "is it defined already" detection above failed) + */ +# define socklen_t bb_socklen_t + typedef unsigned socklen_t; +# endif +#endif + /* Some libc's forget to declare these, do it ourself */ @@ -121,6 +121,12 @@ struct sysinfo { char _f[20 - 2 * sizeof(long) - sizeof(int)]; /* Padding: libc5 uses this.. */ }; int sysinfo(struct sysinfo* info); +#ifndef PATH_MAX +# define PATH_MAX 256 +#endif +#ifndef BUFSIZ +# define BUFSIZ 4096 +#endif /* Make all declarations hidden (-fvisibility flag only affects definitions) */ diff --git a/include/platform.h b/include/platform.h index c34a46e79..b58b14936 100644 --- a/include/platform.h +++ b/include/platform.h @@ -210,18 +210,6 @@ } while (0) #endif -/* ---- Networking ------------------------------------------ */ - -#ifndef __APPLE__ -# include <arpa/inet.h> -# if !defined(__socklen_t_defined) && !defined(_SOCKLEN_T_DECLARED) -# define socklen_t bb_socklen_t -typedef int socklen_t; -# endif -#else -# include <netinet/in.h> -#endif - /* ---- Compiler dependent settings ------------------------- */ #if (defined __digital__ && defined __unix__) \ diff --git a/include/unicode.h b/include/unicode.h index 25ef7407e..7ab044e17 100644 --- a/include/unicode.h +++ b/include/unicode.h @@ -5,6 +5,8 @@ #ifndef UNICODE_H #define UNICODE_H 1 +PUSH_AND_SET_FUNCTION_VISIBILITY_TO_HIDDEN + enum { UNICODE_UNKNOWN = 0, UNICODE_OFF = 1, @@ -79,4 +81,6 @@ int iswpunct(wint_t wc) FAST_FUNC; #endif /* FEATURE_ASSUME_UNICODE */ +POP_SAVED_FUNCTION_VISIBILITY + #endif diff --git a/networking/ifconfig.c b/networking/ifconfig.c index 1e960d45c..1a56c1cd5 100644 --- a/networking/ifconfig.c +++ b/networking/ifconfig.c @@ -36,8 +36,8 @@ #include <sys/types.h> #include <netinet/if_ether.h> #endif -#include "inet_common.h" #include "libbb.h" +#include "inet_common.h" #if ENABLE_FEATURE_IFCONFIG_SLIP # include <net/if_slip.h> diff --git a/networking/interface.c b/networking/interface.c index b64d24a58..0d5a0f97d 100644 --- a/networking/interface.c +++ b/networking/interface.c @@ -33,8 +33,8 @@ #include <net/if.h> #include <net/if_arp.h> -#include "inet_common.h" #include "libbb.h" +#include "inet_common.h" #if ENABLE_FEATURE_HWIB |