should read the tty options file now.

This commit is contained in:
Paul Mackerras 1999-03-24 05:05:25 +00:00
parent 90faf59815
commit f409b9f7b0
3 changed files with 31 additions and 20 deletions

View File

@ -18,7 +18,7 @@
*/
#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>
@ -246,7 +246,25 @@ main(argc, argv)
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 */
/*
* 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);
@ -279,7 +297,7 @@ main(argc, argv)
exit(1);
}
if (ptycommand != NULL || notty) {
if (using_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 {
/*
* 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)

View File

@ -18,7 +18,7 @@
*/
#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>
@ -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 using_pty = 0;
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,
* if specified.
* if specified. Also checks whether the notty or pty option was given.
*/
void
scan_args(argc, argv)
@ -314,6 +315,9 @@ scan_args(argc, argv)
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) {

View File

@ -16,7 +16,7 @@
* 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 using_pty; /* using pty as device (notty or pty opt.) */
/*
* Variables set by command-line options.