- local_fd = open(devnam, O_NONBLOCK | O_RDWR, 0);
- if (local_fd < 0) {
- error("Failed to open %s: %m(%d)", devnam, errno);
- return 0;
- }
-
- initfdflags = fcntl(local_fd, F_GETFL);
- if (initfdflags == -1) {
- error("Couldn't get device fd flags: %m(%d)", errno);
- close (local_fd);
- return 0;
+ if (devnam[0] == 0) {
+ /* running with notty or pty option */
+ char slave[16];
+ if (!get_pty(&mfd, &local_fd, slave, 0))
+ return 0;
+ } else {
+ local_fd = open(devnam, O_NONBLOCK | O_RDWR, 0);
+ if (local_fd < 0) {
+ error("Failed to open %s: %m(%d)", devnam, errno);
+ return 0;
+ }