+/******************************************************/
+
+#define PTYCHAR1 "pqrstuvwxyz"
+#define PTYCHAR2 "0123456789abcdef"
+
+/* allocate one pty/tty pair */
+static int get_pty(char *tty_str)
+{
+ int fd;
+ char ptydev[] = "/dev/pty??";
+ char ttydev[] = "/dev/tty??";
+ int len = strlen(ttydev);
+ const char *c1, *c2;
+
+ for (c1 = PTYCHAR1; *c1; c1++) {
+ ptydev[len-2] = ttydev[len-2] = *c1;
+ for (c2 = PTYCHAR2; *c2; c2++) {
+ ptydev[len-1] = ttydev[len-1] = *c2;
+ if ((fd = open(ptydev, O_RDWR)) >= 0) {
+ if (access(ttydev, R_OK|W_OK) == 0) {
+ strcpy(tty_str, ttydev);
+ return fd;
+ }
+ close(fd);
+ }
+ }
+ }
+ return -1;
+}