/*
* tty.c - code for handling serial ports in pppd.
*
- * Copyright (C) 2000-2002 Paul Mackerras. All rights reserved.
+ * Copyright (C) 2000-2004 Paul Mackerras. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The name(s) of the authors of this software must not be used to
+ * 2. The name(s) of the authors of this software must not be used to
* endorse or promote products derived from this software without
* prior written permission.
*
- * 4. Redistributions of any form whatsoever must retain the following
+ * 3. Redistributions of any form whatsoever must retain the following
* acknowledgment:
* "This product includes software developed by Paul Mackerras
* <paulus@samba.org>".
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
-#define RCSID "$Id: tty.c,v 1.15 2004/10/24 23:53:05 paulus Exp $"
+#define RCSID "$Id: tty.c,v 1.18 2004/11/04 10:02:26 paulus Exp $"
#include <stdio.h>
#include <ctype.h>
if (using_pty) {
if (!default_device) {
option_error("%s option precludes specifying device name",
- notty? "notty": "pty");
+ pty_socket? "socket": notty? "notty": "pty");
exit(EXIT_OPTION_ERROR);
}
if (ptycommand != NULL && notty) {
return -1;
}
+ if (using_pty || record_file != NULL)
+ ttyfd = pty_slave;
+
/* run connection script */
if ((connector && connector[0]) || initializer) {
if (real_ttyfd != -1) {
#ifndef __linux__
if (tty_mode != (mode_t) -1) {
- if (fchmod(real_ttyfd, tty_mode) != 0) {
- /* XXX if devnam is a symlink, this will change the link */
- chmod(devnam, tty_mode);
- }
+ if (fchmod(real_ttyfd, tty_mode) != 0)
+ error("Couldn't restore tty permissions");
}
#endif /* __linux__ */
add_notifier(&sigreceived, stop_charshunt, 0);
close(pty_master);
pty_master = -1;
- ttyfd = pty_slave;
record_child(cpid, "pppd (charshunt)", charshunt_done, NULL);
return 1;
}