aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/portability.c10
-rw-r--r--lib/portability.h17
2 files changed, 26 insertions, 1 deletions
diff --git a/lib/portability.c b/lib/portability.c
index d901a4b6..29608bc1 100644
--- a/lib/portability.c
+++ b/lib/portability.c
@@ -5,6 +5,9 @@
*/
#include "toys.h"
+#if defined(__ANDROID__)
+#include <asm/unistd.h>
+#endif
#if defined(__APPLE__) || defined(__ANDROID__)
ssize_t getdelim(char **linep, size_t *np, int delim, FILE *stream)
@@ -61,6 +64,13 @@ ssize_t getline(char **linep, size_t *np, FILE *stream)
}
#endif
+#if defined(__ANDROID__)
+int sethostname(const char *name, size_t len)
+{
+ return syscall(__NR_sethostname, name, len);
+}
+#endif
+
#if defined(__APPLE__)
extern char **environ;
diff --git a/lib/portability.h b/lib/portability.h
index b7a7c794..5383efaa 100644
--- a/lib/portability.h
+++ b/lib/portability.h
@@ -180,10 +180,25 @@ ssize_t getline(char **lineptr, size_t *n, FILE *stream);
#endif
// Linux headers not listed by POSIX or LSB
-#include <shadow.h>
#include <sys/mount.h>
#include <sys/swap.h>
+// Android is missing some headers and functions
+#if defined(__ANDROID__)
+int sethostname(const char *name, size_t len);
+#endif
+// "generated/config.h" is included first
+#if defined(CFG_TOYBOX_SHADOW) && CFG_TOYBOX_SHADOW
+#include <shadow.h>
+#endif
+#if defined(CFG_TOYBOX_UTMPX) && CFG_TOYBOX_UTMPX
+#include <utmpx.h>
+#endif
+#if defined(CFG_TOYBOX_PTY) && CFG_TOYBOX_PTY
+#include <pty.h>
+#endif
+
+
// Some systems don't define O_NOFOLLOW, and it varies by architecture, so...
#include <fcntl.h>
#ifndef O_NOFOLLOW