summaryrefslogtreecommitdiff
path: root/net/pptpclient/files/patch-ab
blob: 5b024aa90ef0d638a64cd8f0c77835958c8345fd (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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);
 }