*/
#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>
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);
exit(1);
}
- if (ptycommand != NULL || notty) {
+ if (using_pty) {
if (!default_device) {
option_error("%s option precludes specifying device name",
notty? "notty": "pty");
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)
*/
#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>
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[];
/*
* 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)
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) {
* 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 $
*/
/*
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.