diff options
| -rw-r--r-- | libc/stdio/popen.c | 6 | ||||
| -rw-r--r-- | libc/stdlib/system.c | 6 | ||||
| -rw-r--r-- | libc/stdlib/unix_grantpt.c | 16 | 
3 files changed, 21 insertions, 7 deletions
| diff --git a/libc/stdio/popen.c b/libc/stdio/popen.c index 0a91f0e22..cddc9d6c4 100644 --- a/libc/stdio/popen.c +++ b/libc/stdio/popen.c @@ -12,6 +12,12 @@  #include <sys/wait.h>  #include <errno.h> +/* uClinux-2.0 has vfork, but Linux 2.0 doesn't */ +#include <sys/syscall.h> +#if ! defined __NR_vfork && defined __UCLIBC_HAS_MMU__  +#define vfork fork	 +#endif +  FILE *popen (const char *command, const char *mode)  {  	FILE *fp; diff --git a/libc/stdlib/system.c b/libc/stdlib/system.c index 6126d8114..8f654045e 100644 --- a/libc/stdlib/system.c +++ b/libc/stdlib/system.c @@ -4,6 +4,12 @@  #include <unistd.h>  #include <sys/wait.h> +/* uClinux-2.0 has vfork, but Linux 2.0 doesn't */ +#include <sys/syscall.h> +#if ! defined __NR_vfork && defined __UCLIBC_HAS_MMU__  +#define vfork fork	 +#endif +  int __libc_system(command)  char *command;  { diff --git a/libc/stdlib/unix_grantpt.c b/libc/stdlib/unix_grantpt.c index 3dce71b6f..c29612e81 100644 --- a/libc/stdlib/unix_grantpt.c +++ b/libc/stdlib/unix_grantpt.c @@ -28,9 +28,15 @@  #include <sys/types.h>  #include <sys/wait.h>  #include <unistd.h> -  #include "pty-private.h" + +/* uClinux-2.0 has vfork, but Linux 2.0 doesn't */ +#include <sys/syscall.h> +#if ! defined __NR_vfork && defined __UCLIBC_HAS_MMU__  +#define vfork fork	 +#endif +  extern int ptsname_r (int fd, char *buf, size_t buflen);  /* Return the result of ptsname_r in the buffer pointed to by PTS, @@ -140,11 +146,7 @@ grantpt (int fd)    /* We have to use the helper program.  */   helper: -#ifdef __UCLIBC_HAS_MMU__ -  pid = fork (); -#else    pid = vfork (); -#endif    if (pid == -1)      goto cleanup;    else if (pid == 0) @@ -156,10 +158,10 @@ grantpt (int fd)        /* We pase the master pseudo terminal as file descriptor PTY_FILENO.  */        if (fd != PTY_FILENO)  	if (dup2 (fd, PTY_FILENO) < 0) -	  exit (FAIL_EBADF); +	  _exit (FAIL_EBADF);        execle (_PATH_PT_CHOWN, _PATH_PT_CHOWN, NULL, NULL); -      exit (FAIL_EXEC); +      _exit (FAIL_EXEC);      }    else      { | 
