diff options
| author | Ned T. Crigler <crigler@users.sourceforge.net> | 2004-05-26 17:30:44 +0000 |
|---|---|---|
| committer | Ned T. Crigler <crigler@users.sourceforge.net> | 2004-05-26 17:30:44 +0000 |
| commit | abf2db3509b7a9ea8d03cd565d79486f40ec37b5 (patch) | |
| tree | 1f6b4ef978ce5f3f426b2af0ab928b90952181cb /dtach.h | |
| parent | b87318d1f3de4b4e6dedf2571c150d29b41716ce (diff) | |
dtach 0.6
Diffstat (limited to 'dtach.h')
| -rw-r--r-- | dtach.h | 115 |
1 files changed, 115 insertions, 0 deletions
@@ -0,0 +1,115 @@ +/* + dtach - A simple program that emulates the detach feature of screen. + Copyright (C) 2001, 2004 Ned T. Crigler + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ +#ifndef dtach_h +#define dtach_h + +#include <config.h> + +#include <errno.h> +#include <fcntl.h> +#include <signal.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#if TIME_WITH_SYS_TIME +#include <sys/time.h> +#include <time.h> +#else +#if HAVE_SYS_TIME_H +#include <sys/time.h> +#else +#include <time.h> +#endif +#endif + +#ifdef HAVE_PTY_H +#include <pty.h> +#endif + +#ifdef HAVE_UTIL_H +#include <util.h> +#endif + +#ifdef HAVE_LIBUTIL_H +#include <libutil.h> +#endif + +#ifdef HAVE_STROPTS_H +#include <stropts.h> +#endif + +#ifdef HAVE_UNISTD_H +#include <unistd.h> +#endif + +#ifdef HAVE_SYS_IOCTL_H +#include <sys/ioctl.h> +#endif + +#ifdef HAVE_SYS_RESOURCE_H +#include <sys/resource.h> +#endif + +#include <termios.h> +#include <sys/select.h> +#include <sys/stat.h> +#include <sys/socket.h> +#include <sys/un.h> + +extern char *progname, *sockname; +extern int detach_char, no_suspend; +extern struct termios orig_term; + +enum +{ + MSG_PUSH, + MSG_ATTACH, + MSG_DETACH, + MSG_WINCH, +}; + +/* The client to master protocol. */ +struct packet +{ + unsigned char type; + unsigned char len; + union + { + unsigned char buf[sizeof(struct winsize)]; + struct winsize ws; + } u; +}; + +/* +** The master sends a simple stream of text to the attaching clients, without +** any protocol. This might change back to the packet based protocol in the +** future. In the meantime, however, we minimize the amount of data sent back +** and forth between the client and the master. BUFSIZE is the size of the +** buffer used for the text stream. +*/ +#define BUFSIZE 4096 + +int attach_main(int noerror); +int master_main(char **argv); + +#ifdef sun +#define BROKEN_MASTER +#endif +#endif |
