aboutsummaryrefslogtreecommitdiff
path: root/libbb
diff options
context:
space:
mode:
authorJérémie Koenig <jk@jk.fr.eu.org>2010-03-26 19:08:53 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2010-03-26 19:08:53 +0100
commitfbedacfc8caa1ec8f14e664a881cb0a93c8f8712 (patch)
tree6c08780bbaad6320149930bdbcfbee5a2eed9f5d /libbb
parent35fdb1bc9cb82fa5630c2d40ae49110ecd7c88ea (diff)
downloadbusybox-fbedacfc8caa1ec8f14e664a881cb0a93c8f8712.tar.gz
Hurd compat fixes. Mostly dealing with absent PATH_MAX
Signed-off-by: Jérémie Koenig <jk@jk.fr.eu.org> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'libbb')
-rw-r--r--libbb/safe_gethostname.c6
-rw-r--r--libbb/xconnect.c10
-rw-r--r--libbb/xreadlink.c6
3 files changed, 17 insertions, 5 deletions
diff --git a/libbb/safe_gethostname.c b/libbb/safe_gethostname.c
index 7407fb782..e93254b2b 100644
--- a/libbb/safe_gethostname.c
+++ b/libbb/safe_gethostname.c
@@ -59,8 +59,12 @@ char* FAST_FUNC safe_gethostname(void)
*/
char* FAST_FUNC safe_getdomainname(void)
{
+/* The field domainname of struct utsname is Linux specific. */
+#if defined(__linux__)
struct utsname uts;
-
uname(&uts);
return xstrndup(!uts.domainname[0] ? "?" : uts.domainname, sizeof(uts.domainname));
+#else
+ return xstrdup("?");
+#endif
}
diff --git a/libbb/xconnect.c b/libbb/xconnect.c
index 97751eb27..d8c8d02d5 100644
--- a/libbb/xconnect.c
+++ b/libbb/xconnect.c
@@ -21,6 +21,8 @@ int FAST_FUNC setsockopt_broadcast(int fd)
{
return setsockopt(fd, SOL_SOCKET, SO_BROADCAST, &const_int_1, sizeof(const_int_1));
}
+
+#ifdef SO_BINDTODEVICE
int FAST_FUNC setsockopt_bindtodevice(int fd, const char *iface)
{
int r;
@@ -36,6 +38,14 @@ int FAST_FUNC setsockopt_bindtodevice(int fd, const char *iface)
bb_perror_msg("can't bind to interface %s", iface);
return r;
}
+#else
+int FAST_FUNC setsockopt_bindtodevice(int fd UNUSED_PARAM,
+ const char *iface UNUSED_PARAM)
+{
+ bb_error_msg("SO_BINDTODEVICE is not supported on this system");
+ return -1;
+}
+#endif
len_and_sockaddr* FAST_FUNC get_sock_lsa(int fd)
{
diff --git a/libbb/xreadlink.c b/libbb/xreadlink.c
index 8d232f16b..faa0e1646 100644
--- a/libbb/xreadlink.c
+++ b/libbb/xreadlink.c
@@ -100,18 +100,16 @@ char* FAST_FUNC xmalloc_readlink_or_warn(const char *path)
return buf;
}
-/* UNUSED */
-#if 0
char* FAST_FUNC xmalloc_realpath(const char *path)
{
#if defined(__GLIBC__) && !defined(__UCLIBC__)
/* glibc provides a non-standard extension */
+ /* new: POSIX.1-2008 specifies this behavior as well */
return realpath(path, NULL);
#else
char buf[PATH_MAX+1];
- /* on error returns NULL (xstrdup(NULL) ==NULL) */
+ /* on error returns NULL (xstrdup(NULL) == NULL) */
return xstrdup(realpath(path, buf));
#endif
}
-#endif