--- libaitio/inc/aitio.h 2011/09/19 23:09:16 1.11.2.16 +++ libaitio/inc/aitio.h 2011/10/04 14:33:32 1.11.2.22 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: aitio.h,v 1.11.2.16 2011/09/19 23:09:16 misho Exp $ +* $Id: aitio.h,v 1.11.2.22 2011/10/04 14:33:32 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -47,8 +47,12 @@ SUCH DAMAGE. #define __AITIO_H +#define COMPAT_43TTY + #include #include +#include +#include #define VACUUM_LEFT 1 @@ -764,11 +768,12 @@ int io_Blowfish(unsigned char *pInput, int inLen, unsi inline int ioAllocPTY(int *ptyfd, int *ttyfd, char * __restrict name, int namesiz, struct termios * __restrict term, struct winsize * __restrict winz); /* - * ioFreeTTY() Release TTY + * ioFreePTY() Release PTY and TTY device + * @ptyfd = master fd, pty (==-1 skip closing pty) * @ttyname = tty filename * return: none */ -inline void ioFreeTTY(const char *ttyname); +inline void ioFreePTY(int ptyfd, const char *ttyname); /* * ioChgWinPTY() Change window size of PTY * @ptyfd = master fd, pty @@ -794,6 +799,40 @@ int ioSetOwnerTTY(const char *ttyname, uid_t UID, gid_ * return: -1 error or 0 ok */ int ioSetSidTTY(int *ttyfd, const char *ttyname); +/* + * ioSetRAWMode() Enter into RAW mode + * @fd = tty fd + * @otio = saved old termios for later restore if !=NULL + * return: -1 error or 0 ok + */ +inline int ioSetRAWMode(int fd, struct termios *otio); +/* + * ioRestoreMode() Restore termios to tty fd + * @fd = tty fd + * @tio = termios structure for restore + * return: -1 error or 0 ok + */ +inline int ioRestoreMode(int fd, struct termios tio); +/* + * ioForkPTY() Fork new process with session leader and new TTY + * @ptyfd = master fd, pty + * @name = tty device name if not null + * @namesiz = name length, must be above 63 bytes. + * @term = termios for terminal + * @winz = winsize for terminal + * @otio = old termios structure for restore + * return: -1 error, 0 child process or >0 parent: pid of child + */ +pid_t ioForkPTY(int *ptyfd, char * __restrict name, int namesiz, struct termios * __restrict term, + struct winsize * __restrict winz, struct termios * __restrict otio); + +/* + * ioCreatePIDFile() Create PID file + * @csName = PID filename + * @ifExists = !=0 if filename exists return error + * return: -1 error or 0 ok + */ +inline int ioCreatePIDFile(const char *csName, int ifExists); #endif