--- pty.c.orig Mon Mar 9 02:25:30 2009 +++ pty.c Mon May 25 11:01:46 2009 @@ -25,6 +25,8 @@ #include #include #include +#include +#include #include "l2tp.h" @@ -47,77 +49,6 @@ #define PTY01 "0123456789abcdefghijklmnopqrstuv" #endif -#ifndef OPENBSD -int getPtyMaster_pty (char *tty10, char *tty01) -{ - char *p10; - char *p01; - static char dev[] = PTY00; - int fd; - - for (p10 = PTY10; *p10; p10++) - { - dev[8] = *p10; - for (p01 = PTY01; *p01; p01++) - { - dev[9] = *p01; - fd = open (dev, O_RDWR | O_NONBLOCK); - if (fd >= 0) - { - *tty10 = *p10; - *tty01 = *p01; - return fd; - } - } - } - l2tp_log (LOG_CRIT, "%s: No more free pseudo-tty's\n", __FUNCTION__); - return -1; -} - -int getPtyMaster_ptmx(char *ttybuf, int ttybuflen) -{ - int fd; - char *tty; - - fd = open("/dev/ptmx", O_RDWR); - if (fd == -1) - { - l2tp_log (LOG_WARNING, "%s: unable to open /dev/ptmx to allocate pty\n", - __FUNCTION__); - return -EINVAL; - } - - /* change the onwership */ - if (grantpt(fd)) - { - l2tp_log (LOG_WARNING, "%s: unable to grantpt() on pty\n", - __FUNCTION__); - close(fd); - return -EINVAL; - } - - if (unlockpt(fd)) - { - l2tp_log (LOG_WARNING, "%s: unable to unlockpt() on pty\n", - __FUNCTION__); - close(fd); - return -EINVAL; - } - - tty = ptsname(fd); - if (tty == NULL) - { - l2tp_log (LOG_WARNING, "%s: unable to obtain name of slave tty\n", - __FUNCTION__); - close(fd); - return -EINVAL; - } - ttybuf[0]='\0'; - strncat(ttybuf, tty, ttybuflen); - - return fd; -} -#ifdef OPENBSD int getPtyMaster_ptm(char *ttybuf, int ttybuflen) { int amaster, aslave; @@ -138,36 +69,14 @@ int getPtyMaster_ptm(char *ttybuf, int ttybuflen) return amaster; } -#endif /* OPENBSD */ int getPtyMaster(char *ttybuf, int ttybuflen) { int fd; -#ifndef OPENBSD - fd = getPtyMaster_ptmx(ttybuf, ttybuflen); - char a, b; - - if(fd >= 0) { - return fd; - } - - l2tp_log (LOG_WARNING, "%s: failed to use pts -- using legacy ptys\n", __FUNCTION__); - fd = getPtyMaster_pty(&a,&b); - - if(fd >= 0) { - snprintf(ttybuf, ttybuflen, "/dev/tty%c%c", a, b); - return fd; - } -#endif -#ifdef OPENBSD - fd = getPtyMaster_ptm(ttybuf, ttybuflen); if(fd >= 0) { return fd; } -#endif /* OPENBSD */ return -EINVAL; } - -#endif