diff options
| author | Rob Landley <rob@landley.net> | 2014-12-04 21:46:59 -0600 | 
|---|---|---|
| committer | Rob Landley <rob@landley.net> | 2014-12-04 21:46:59 -0600 | 
| commit | 50fc9ed007b084883fb09c64866c45c571e70a99 (patch) | |
| tree | e74fcf5c070a01666382e077394f62687af69dd1 | |
| parent | 2fb85a3588bf2271e0506c5ab3bcb6a84bf77255 (diff) | |
| download | toybox-50fc9ed007b084883fb09c64866c45c571e70a99.tar.gz | |
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.h | 1 | ||||
| -rw-r--r-- | lib/portability.c | 11 | ||||
| -rw-r--r-- | lib/portability.h | 21 | ||||
| -rw-r--r-- | lib/xwrap.c | 9 | 
4 files changed, 32 insertions, 10 deletions
| @@ -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 910b1ea9..7d6d85f3 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 d58e5928..1464c656 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 96db3522..d7030653 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) | 
