diff -ur dist/pptp-linux-1.0.3/pptp.c work/pptp-linux-1.0.3/pptp.c --- dist/pptp-linux-1.0.3/pptp.c Mon Apr 30 05:42:36 2001 +++ pptp.c Thu May 10 00:43:02 2001 @@ -7,7 +7,11 @@ #include #include +#ifdef __FreeBSD__ +#include +#else #include +#endif #include #include #include @@ -19,14 +23,15 @@ #include #include #include +#include #include +#include #include #include "pptp_callmgr.h" #include "pptp_gre.h" #include "version.h" #include "inststr.h" #include "util.h" -#include "pty.h" #ifndef PPPD_BINARY #define PPPD_BINARY "pppd" @@ -64,7 +69,7 @@ int main(int argc, char **argv, char **envp) { struct in_addr inetaddr; int callmgr_sock; - char ttydev[TTYMAX]; + char ttydev[PATH_MAX]; int pty_fd, tty_fd, rc; pid_t parent_pid, child_pid; u_int16_t call_id, peer_call_id; @@ -289,13 +294,23 @@ void launch_pppd(char *ttydev, int argc, char **argv) { char *new_argv[argc+4]; /* XXX if not using GCC, hard code a limit here. */ int i; + int newi = 0; - new_argv[0] = PPPD_BINARY; - new_argv[1] = ttydev; - new_argv[2] = "38400"; + new_argv[newi++] = PPPD_BINARY; +#ifdef USER_PPP + new_argv[newi++] = "-direct"; + if ((i = open(ttydev, O_RDWR)) == -1) + fatal("Cannot open %s: %s", ttydev, strerror(errno)); + if (dup2(i, 0) == -1) + fatal("dup2 failed: %s", strerror(errno)); + close(i); +#else + new_argv[newi++] = ttydev; + new_argv[newi++] = "38400"; +#endif for (i=0; i