- ioctl(0, TIOCGETP, (char *)&b);
- ioctl(0, TIOCGETC, (char *)&tc);
- ioctl(0, TIOCGETD, (char *)&l);
- ioctl(0, TIOCGLTC, (char *)&lc);
- ioctl(0, TIOCLGET, (char *)&lb);
- return;
+ char *tp = &line[strlen("/dev/")];
+ int ok;
+
+ /* verify slave side is usable */
+ *tp = 't';
+ ok = access(line, R_OK|W_OK) == 0;
+ *tp = 'p';
+ if (ok) {
+ (void) ioctl(0, TIOCGETP, (char *)&b);
+ (void) ioctl(0, TIOCGETC, (char *)&tc);
+ (void) ioctl(0, TIOCGETD, (char *)&l);
+ (void) ioctl(0, TIOCGLTC, (char *)&lc);
+ (void) ioctl(0, TIOCLGET, (char *)&lb);
+ (void) ioctl(0, TIOCGWINSZ, (char *)&win);
+ return;
+ }
+ (void) close(master);