summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Landley <rob@landley.net>2014-12-04 21:46:59 -0600
committerRob Landley <rob@landley.net>2014-12-04 21:46:59 -0600
commit50fc9ed007b084883fb09c64866c45c571e70a99 (patch)
treee74fcf5c070a01666382e077394f62687af69dd1
parent2fb85a3588bf2271e0506c5ab3bcb6a84bf77255 (diff)
downloadtoybox-50fc9ed007b084883fb09c64866c45c571e70a99.tar.gz
toybox-50fc9ed007b084883fb09c64866c45c571e70a99.tar.bz2
toybox-50fc9ed007b084883fb09c64866c45c571e70a99.zip
Work with buildroot's extensively patched uClibc, and for nommu support move xfork() to portability.h and #ifdef based on __uClinux__ (which seems to be the nommu compiler define).
-rw-r--r--lib/lib.h1
-rw-r--r--lib/portability.c11
-rw-r--r--lib/portability.h21
-rw-r--r--lib/xwrap.c9
4 files changed, 32 insertions, 10 deletions
diff --git a/lib/lib.h b/lib/lib.h
index 0755539..a51ae07 100644
--- a/lib/lib.h
+++ b/lib/lib.h
@@ -93,7 +93,6 @@ void xprintf(char *format, ...);
void xputs(char *s);
void xputc(char c);
void xflush(void);
-pid_t xfork(void);
void xexec_optargs(int skip);
void xexec(char **argv);
pid_t xpopen_both(char **argv, int *pipes);
diff --git a/lib/portability.c b/lib/portability.c
index 910b1ea..7d6d85f 100644
--- a/lib/portability.c
+++ b/lib/portability.c
@@ -6,6 +6,17 @@
#include "toys.h"
+#if !defined(__uClinux__)
+pid_t xfork(void)
+{
+ pid_t pid = fork();
+
+ if (pid < 0) perror_exit("fork");
+
+ return pid;
+}
+#endif
+
#if defined(__APPLE__)
ssize_t getdelim(char **linep, size_t *np, int delim, FILE *stream)
{
diff --git a/lib/portability.h b/lib/portability.h
index d58e592..1464c65 100644
--- a/lib/portability.h
+++ b/lib/portability.h
@@ -72,13 +72,28 @@ pid_t getsid(pid_t pid);
// any flag newer than MS_MOVE, which was added in 2001 (linux 2.5.0.5),
// eleven years earlier.
+#include <sys/mount.h>
+#ifndef MS_MOVE
#define MS_MOVE (1<<13)
+#endif
+#ifndef MS_REC
#define MS_REC (1<<14)
+#endif
+#ifndef MS_SILENT
#define MS_SILENT (1<<15)
+#endif
+#ifndef MS_UNBINDABLE
#define MS_UNBINDABLE (1<<17)
+#endif
+#ifndef MS_PRIVATE
#define MS_PRIVATE (1<<18)
+#endif
+#ifndef MS_SLAVE
#define MS_SLAVE (1<<19)
+#endif
+#ifndef MS_SHARED
#define MS_SHARED (1<<20)
+#endif
// When building under obsolete glibc (Ubuntu 8.04-ish), hold its hand a bit.
#elif __GLIBC__ == 2 && __GLIBC_MINOR__ < 10
@@ -206,3 +221,9 @@ typedef double FLOAT;
typedef float FLOAT;
#endif
+#ifndef __uClinux__
+pid_t xfork(void);
+#endif
+
+//#define strncpy(...) @@strncpyisbadmmkay@@
+//#define strncat(...) @@strcatisbadmmkay@@
diff --git a/lib/xwrap.c b/lib/xwrap.c
index 96db352..d703065 100644
--- a/lib/xwrap.c
+++ b/lib/xwrap.c
@@ -127,15 +127,6 @@ void xflush(void)
if (fflush(stdout) || ferror(stdout)) perror_exit("write");;
}
-pid_t xfork(void)
-{
- pid_t pid = fork();
-
- if (pid < 0) perror_exit("fork");
-
- return pid;
-}
-
// Call xexec with a chunk of optargs, starting at skip. (You can't just
// call xexec() directly because toy_init() frees optargs.)
void xexec_optargs(int skip)