should read the tty options file now.
authorPaul Mackerras <paulus@samba.org>
Wed, 24 Mar 1999 05:05:25 +0000 (05:05 +0000)
committerPaul Mackerras <paulus@samba.org>
Wed, 24 Mar 1999 05:05:25 +0000 (05:05 +0000)
pppd/main.c
pppd/options.c
pppd/pppd.h

index c69d6c245ed578a848f5c30f96aa66ce6b6dbea6..ba5e6aeb3fb3f43c36a01a1ce0d9ae3cfb419b0e 100644 (file)
@@ -18,7 +18,7 @@
  */
 
 #ifndef lint
  */
 
 #ifndef lint
-static char rcsid[] = "$Id: main.c,v 1.65 1999/03/23 01:23:46 paulus Exp $";
+static char rcsid[] = "$Id: main.c,v 1.66 1999/03/24 05:05:24 paulus Exp $";
 #endif
 
 #include <stdio.h>
 #endif
 
 #include <stdio.h>
@@ -246,7 +246,25 @@ main(argc, argv)
     if (!options_from_file(_PATH_SYSOPTIONS, !privileged, 0, 1)
        || !options_from_user())
        exit(1);
     if (!options_from_file(_PATH_SYSOPTIONS, !privileged, 0, 1)
        || !options_from_user())
        exit(1);
+    using_pty = notty || ptycommand != NULL;
     scan_args(argc-1, argv+1); /* look for tty name on command line */
     scan_args(argc-1, argv+1); /* look for tty name on command line */
+
+    /*
+     * Work out the device name, if it hasn't already been specified.
+     */
+    if (!using_pty) {
+       p = isatty(0)? ttyname(0): NULL;
+       if (p != NULL) {
+           if (default_device)
+               strlcpy(devnam, p, sizeof(devnam));
+           else if (strcmp(devnam, p) == 0)
+               default_device = 1;
+       }
+    }
+
+    /*
+     * Parse the tty options file and the command line.
+     */
     if (!options_for_tty()
        || !parse_args(argc-1, argv+1))
        exit(1);
     if (!options_for_tty()
        || !parse_args(argc-1, argv+1))
        exit(1);
@@ -279,7 +297,7 @@ main(argc, argv)
        exit(1);
     }
 
        exit(1);
     }
 
-    if (ptycommand != NULL || notty) {
+    if (using_pty) {
        if (!default_device) {
            option_error("%s option precludes specifying device name",
                         notty? "notty": "pty");
        if (!default_device) {
            option_error("%s option precludes specifying device name",
                         notty? "notty": "pty");
@@ -293,21 +311,9 @@ main(argc, argv)
        lockflag = 0;
        modem = 0;
     } else {
        lockflag = 0;
        modem = 0;
     } else {
-       /*
-        * If the user has specified the default device name explicitly,
-        * pretend they hadn't.
-        */
-       p = isatty(0)? ttyname(0): NULL;
-       if (p == NULL) {
-           if (default_device) {
-               option_error("no device specified and stdin is not a tty");
-               exit(1);
-           }
-       } else {
-           if (default_device)
-               strlcpy(devnam, p, sizeof(devnam));
-           else if (strcmp(devnam, p) == 0)
-               default_device = 1;
+       if (devnam[0] == 0) {
+           option_error("no device specified and stdin is not a tty");
+           exit(1);
        }
     }
     if (default_device)
        }
     }
     if (default_device)
index 7d5c71af36117b6e6ceae7290e79e8a54de2337f..3e28def43191926347ffdfeb95559c1c45214000 100644 (file)
@@ -18,7 +18,7 @@
  */
 
 #ifndef lint
  */
 
 #ifndef lint
-static char rcsid[] = "$Id: options.c,v 1.54 1999/03/22 05:55:33 paulus Exp $";
+static char rcsid[] = "$Id: options.c,v 1.55 1999/03/24 05:05:24 paulus Exp $";
 #endif
 
 #include <ctype.h>
 #endif
 
 #include <ctype.h>
@@ -88,6 +88,7 @@ int   idle_time_limit = 0;    /* Disconnect if idle for this many seconds */
 int    holdoff = 30;           /* # seconds to pause before reconnecting */
 bool   notty = 0;              /* Stdin/out is not a tty */
 char   *record_file = NULL;    /* File to record chars sent/received */
 int    holdoff = 30;           /* # seconds to pause before reconnecting */
 bool   notty = 0;              /* Stdin/out is not a tty */
 char   *record_file = NULL;    /* File to record chars sent/received */
+int    using_pty = 0;
 
 extern option_t auth_options[];
 
 
 extern option_t auth_options[];
 
@@ -299,7 +300,7 @@ parse_args(argc, argv)
 
 /*
  * scan_args - scan the command line arguments to get the tty name,
 
 /*
  * scan_args - scan the command line arguments to get the tty name,
- * if specified.
+ * if specified.  Also checks whether the notty or pty option was given.
  */
 void
 scan_args(argc, argv)
  */
 void
 scan_args(argc, argv)
@@ -314,6 +315,9 @@ scan_args(argc, argv)
        arg = *argv++;
        --argc;
 
        arg = *argv++;
        --argc;
 
+       if (strcmp(arg, "notty") == 0 || strcmp(arg, "pty") == 0)
+           using_pty = 1;
+
        /* Skip options and their arguments */
        opt = find_option(arg);
        if (opt != NULL) {
        /* Skip options and their arguments */
        opt = find_option(arg);
        if (opt != NULL) {
index dcd469b4c98bc652c7e7e8ecb1763c9e9892a137..04c3ff9a8c794e4bf75366b473eebecf8723ee12 100644 (file)
@@ -16,7 +16,7 @@
  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
- * $Id: pppd.h,v 1.34 1999/03/22 05:55:35 paulus Exp $
+ * $Id: pppd.h,v 1.35 1999/03/24 05:05:25 paulus Exp $
  */
 
 /*
  */
 
 /*
@@ -144,6 +144,7 @@ extern GIDSET_TYPE groups[NGROUPS_MAX];     /* groups the user is in */
 extern int     ngroups;        /* How many groups valid in groups */
 extern struct pppd_stats link_stats; /* byte/packet counts etc. for link */
 extern int     link_stats_valid; /* set if link_stats is valid */
 extern int     ngroups;        /* How many groups valid in groups */
 extern struct pppd_stats link_stats; /* byte/packet counts etc. for link */
 extern int     link_stats_valid; /* set if link_stats is valid */
+extern int     using_pty;      /* using pty as device (notty or pty opt.) */
 
 /*
  * Variables set by command-line options.
 
 /*
  * Variables set by command-line options.