X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fptty.c;h=b2e5d0f15783cd1bbd23508bfbcc9cf9f7b62bb8;hb=8a3aac5f5287422699c9c7c5ee8969561da7317f;hp=b59f823e40f8ebc667aacd8ee2208824ef308de5;hpb=b1a35823c1660150770c939fb378e93b4f3066b1;p=sympathy.git diff --git a/src/ptty.c b/src/ptty.c index b59f823..b2e5d0f 100644 --- a/src/ptty.c +++ b/src/ptty.c @@ -10,6 +10,39 @@ static char rcsid[] = "$Id$"; /* * $Log$ + * Revision 1.13 2008/02/27 01:31:38 james + * *** empty log message *** + * + * Revision 1.12 2008/02/27 01:31:14 james + * *** empty log message *** + * + * Revision 1.11 2008/02/26 23:23:17 james + * *** empty log message *** + * + * Revision 1.10 2008/02/24 00:42:53 james + * *** empty log message *** + * + * Revision 1.9 2008/02/23 13:05:58 staffcvs + * *** empty log message *** + * + * Revision 1.8 2008/02/23 11:48:37 james + * *** empty log message *** + * + * Revision 1.7 2008/02/22 17:07:00 james + * *** empty log message *** + * + * Revision 1.6 2008/02/22 14:51:54 james + * *** empty log message *** + * + * Revision 1.5 2008/02/15 23:52:12 james + * *** empty log message *** + * + * Revision 1.4 2008/02/14 10:39:14 james + * *** empty log message *** + * + * Revision 1.3 2008/02/13 09:12:21 james + * *** empty log message *** + * * Revision 1.2 2008/02/12 22:36:46 james * *** empty log message *** * @@ -110,25 +143,29 @@ ptty_write (TTY * _t, void *buf, int len) } TTY * -ptty_open (char *path, char *argv[]) +ptty_open (char *path, char *argv[], int width) { PTTY *t; pid_t child; char name[1024]; struct winsize winsize = { 0 }; - struct termios termios; + struct termios ctermios = { 0 }; int fd; - char *default_argv = { "-", (char *) 0 }; + char *default_argv[] = { "-", (char *) 0 }; - child = forkpty (&fd, name, &termios, &winsize); + + client_termios (&ctermios); + winsize.ws_row = VT102_ROWS; + winsize.ws_col = width ? width : VT102_COLS_80; + + child = forkpty (&fd, name, &ctermios, &winsize); switch (child) { case -1: /*boo hiss */ - return -1; + return NULL; case 0: /*waaah */ - setenv ("TERM", "vt102", 1); - setenv ("LANG", "C", 1); + setenv ("TERM", "xterm", 1); if (!path) path = "/bin/sh"; @@ -141,24 +178,32 @@ ptty_open (char *path, char *argv[]) set_nonblocking (fd); +#if 0 + { + struct termios termios = { 0 }; + + tcgetattr (fd, &termios); + default_termios (&termios); + tcsetattr (fd, TCSANOW, &termios); + } +#endif + t = (PTTY *) malloc (sizeof (PTTY)); strncpy (t->name, name, sizeof (t->name)); t->name[sizeof (t->name) - 1] = 0; - t->read = ptty_read; - t->write = ptty_write; + t->recv = ptty_read; + t->xmit = ptty_write; t->close = ptty_close; - - default_termios (&termios); - - winsize.ws_row = VT102_ROWS; - winsize.ws_col = VT102_COLS; - - t->fd = open_fd_to_pty (path, argv); - t->pid = child; + t->fd = fd; + t->child = child; t->rfd = t->fd; - t->wfd = 0; + t->wfd = t->fd; + t->size.x = winsize.ws_row; + t->size.y = winsize.ws_col; + t->blocked = 0; + t->hanging_up = 0; return (TTY *) t; }