summaryrefslogtreecommitdiff
path: root/net/pptpclient/files/patch-ab
diff options
context:
space:
mode:
Diffstat (limited to 'net/pptpclient/files/patch-ab')
-rw-r--r--net/pptpclient/files/patch-ab43
1 files changed, 43 insertions, 0 deletions
diff --git a/net/pptpclient/files/patch-ab b/net/pptpclient/files/patch-ab
new file mode 100644
index 000000000000..5b024aa90ef0
--- /dev/null
+++ b/net/pptpclient/files/patch-ab
@@ -0,0 +1,43 @@
+RCS file: /home/jdp/f5/pptp/cvs/pptp/pptp.c,v
+retrieving revision 1.1.1.1
+retrieving revision 1.3
+diff -u -r1.1.1.1 -r1.3
+--- pptp.c 1999/04/28 19:36:57 1.1.1.1
++++ pptp.c 1999/04/29 17:05:59 1.3
+@@ -18,6 +18,7 @@
+ #include <signal.h>
+ #include <setjmp.h>
+ #include <errno.h>
++#include <fcntl.h>
+ #include <sys/wait.h>
+ #include "pptp_callmgr.h"
+ #include "pptp_gre.h"
+@@ -235,13 +236,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<argc; i++)
+- new_argv[i+3] = argv[i];
+- new_argv[i+3] = NULL;
++ new_argv[newi++] = argv[i];
++ new_argv[newi] = NULL;
+ execvp(new_argv[0], new_argv);
+ }
+