int create_pty()

in native/cyglaunch/main.c [52:76]


int create_pty(struct pty_t *pty) {
    pty->fdm = open("/dev/ptmx", O_RDWR|O_NOCTTY);
    if (pty->fdm < 0) {
        flog("Could not open /dev/ptmx");
        return -1;
    }
    if (grantpt(pty->fdm) < 0) {
        flog("grantpt() failed");
        close(pty->fdm);
        return -1;
    }
    if (unlockpt(pty->fdm) < 0) {
        flog("unlockpt() failed");
        close(pty->fdm);
        return -1;
    }
    char *slave_name = ptsname(pty->fdm);
    if (slave_name == NULL) {
        flog("Could not determine slave name");
        close(pty->fdm);
        return -1;
    }
    strcpy(pty->slave_name, slave_name);
    return 0;
}