Blame include/glibtop/gnuserv.h

Packit d37888
/* -*-C-*-
Packit d37888
Packit d37888
 Header file for the GNU Emacs server and client C code.
Packit d37888
Packit d37888
 This file is part of GNU Emacs.
Packit d37888
Packit d37888
 Copying is permitted under those conditions described by the GNU
Packit d37888
 General Public License.
Packit d37888
Packit d37888
 Copyright (C) 1989 Free Software Foundation, Inc.
Packit d37888
Packit d37888
 Author: Andy Norman (ange@hplb.hpl.hp.com), based on
Packit d37888
         'etc/server.c' and 'etc/emacsclient.c' from the 18.52 GNU
Packit d37888
         Emacs distribution.
Packit d37888
Packit d37888
 Please mail bugs and suggestions to the author at the above address.
Packit d37888
*/
Packit d37888
Packit d37888
/* HISTORY
Packit d37888
 * 11-Nov-1990		bristor@simba
Packit d37888
 *    Added EOT stuff.
Packit d37888
 */
Packit d37888
Packit d37888
/*
Packit d37888
 * This file incorporates new features added by Bob Weiner <weiner@mot.com>,
Packit d37888
 * Darrell Kindred <dkindred@cmu.edu> and Arup Mukherjee <arup@cmu.edu>.
Packit d37888
 * Please see the note at the end of the README file for details.
Packit d37888
 *
Packit d37888
 * (If gnuserv came bundled with your emacs, the README file is probably
Packit d37888
 * ../etc/gnuserv.README relative to the directory containing this file)
Packit d37888
 */
Packit d37888
Packit d37888
#if 0
Packit d37888
static char header_rcsid [] = "!Header: gnuserv.h,v 2.4 95/02/16 11:58:11 arup alpha !";
Packit d37888
#endif
Packit d37888
Packit d37888
#define NO_SHORTNAMES
Packit d37888
Packit d37888
#define PATCHLEVEL 2
Packit d37888
Packit d37888
#define NO_SHORTNAMES
Packit d37888
/* gnuserv should not be compiled using SOCKS */
Packit d37888
#define DO_NOT_SOCKSIFY
Packit d37888
#include <glibtop.h>
Packit d37888
#undef read
Packit d37888
#undef write
Packit d37888
#undef open
Packit d37888
#undef close
Packit d37888
#undef signal
Packit d37888
Packit d37888
/* Define the communication method between server and clients:
Packit d37888
 *   You can have either or both kinds of sockets, but you can't mix
Packit d37888
 *   sockets with sysv ipc
Packit d37888
 */
Packit d37888
Packit d37888
#define INTERNET_DOMAIN_SOCKETS
Packit d37888
#define UNIX_DOMAIN_SOCKETS
Packit d37888
Packit d37888
/*
Packit d37888
 * Define additional authentication protocols to be used. These methods will
Packit d37888
 * be tried before falling back to the default gnuserv protocol (based on
Packit d37888
 * the GNU_SECURE environment variable). Currently, only MIT-MAGIC-COOKIE-1
Packit d37888
 * is also supported.
Packit d37888
 *
Packit d37888
 * Comment out the next line(s) if you don't want to enable the
Packit d37888
 * appropriate authentication protocol.
Packit d37888
 */
Packit d37888
Packit d37888
#if defined (HAVE_XAUTH)
Packit d37888
#define AUTH_MAGIC_COOKIE
Packit d37888
#endif /* HAVE_XAUTH */
Packit d37888
Packit d37888
/*
Packit d37888
 * stuff related to supporting MIT-MAGIC-COOKIE-1
Packit d37888
 */
Packit d37888
Packit d37888
#if 0
Packit d37888
#define MCOOKIE_SCREEN "42980"   /* screen # to use as the gnuserv cookie */
Packit d37888
#endif
Packit d37888
#define MCOOKIE_NAME   "MAGIC-1" /* authentication protocol name */
Packit d37888
#define MCOOKIE_X_NAME "MIT-MAGIC-COOKIE-1"  /* as needed by X */
Packit d37888
Packit d37888
Packit d37888
#define DEFAUTH_NAME "GNU-SECURE"  /* name of default auth protocol */
Packit d37888
#define AUTH_TIMEOUT  15           /* # seconds to wait for auth data */
Packit d37888
#define AUTH_NAMESZ   15           /* max allows auth protocol name size */
Packit d37888
Packit d37888
Packit d37888
/*
Packit d37888
 * Pick a default communication scheme, if none was specified.
Packit d37888
 */
Packit d37888
Packit d37888
#if !defined(UNIX_DOMAIN_SOCKETS) && !defined(INTERNET_DOMAIN_SOCKETS)
Packit d37888
Packit d37888
/* BSD systems use Unix Domain sockets by default */
Packit d37888
Packit d37888
#ifdef BSD
Packit d37888
#define UNIX_DOMAIN_SOCKETS
Packit d37888
#endif
Packit d37888
Packit d37888
#endif /* No communication method pre-defined */
Packit d37888
Packit d37888
/*
Packit d37888
 * If you are using SYSV_IPC, you might want to make the buffer size bigger
Packit d37888
 * since it limits the size of requests and responses. Don't make it bigger
Packit d37888
 * than your system's max message size though (usually a couple of k) or else
Packit d37888
 * msgsend will start failing. For sockets, using the system BUFSIZ is usually
Packit d37888
 * what you want.
Packit d37888
 */
Packit d37888
Packit d37888
#if defined(INTERNET_DOMAIN_SOCKETS) || defined(UNIX_DOMAIN_SOCKETS)
Packit d37888
#include <sys/socket.h>
Packit d37888
#endif /* INTERNET_DOMAIN_SOCKETS || UNIX_DOMAIN_SOCKETS */
Packit d37888
Packit d37888
#ifdef INTERNET_DOMAIN_SOCKETS
Packit d37888
#include <netdb.h>
Packit d37888
#include <netinet/in.h>
Packit d37888
#include <arpa/inet.h>
Packit d37888
#define TABLE_SIZE 101		/* The number of entries in the hash table */
Packit d37888
#define HASH(host) host		/* Rather simplistic hash function */
Packit d37888
#define DEFAULT_PORT 21490	/* default port number to use is
Packit d37888
				 * DEFAULT_PORT + uid */
Packit d37888
#endif /* INTERNET_DOMAIN_SOCKETS */
Packit d37888
Packit d37888
#ifdef UNIX_DOMAIN_SOCKETS
Packit d37888
#include <sys/un.h>
Packit d37888
#define HIDE_UNIX_SOCKET	/* put the unix socket in a protected dir */
Packit d37888
#endif /* UNIX_DOMAIN_SOCKETS */
Packit d37888
Packit d37888
#define HOSTNAMSZ 255		/* max size of a hostname */
Packit d37888
#define REPLYSIZ 300		/* max size of reply from server to client */
Packit d37888
#undef FALSE
Packit d37888
#define FALSE 0
Packit d37888
#undef TRUE
Packit d37888
#define TRUE 1
Packit d37888
Packit d37888
/* The casts shut Sun's compiler up and are safe in the context these
Packit d37888
   are actually used. */
Packit d37888
#define max2(x,y) (((int) (x) > (int) (y)) ? (x) : (y))
Packit d37888
#define min2(x,y) (((int) (x) < (int) (y)) ? (x) : (y))
Packit d37888
Packit d37888
#ifndef _NFILE            /* rough guess at maximum number of open files */
Packit d37888
#define _NFILE 20
Packit d37888
#endif
Packit d37888
Packit d37888
#define EOT_STR "\004"
Packit d37888
#define EOT_CHR '\004'
Packit d37888
Packit d37888
/* connection types */
Packit d37888
#define CONN_UNIX     0
Packit d37888
#define CONN_INTERNET 1
Packit d37888
#define CONN_IPC      2
Packit d37888
Packit d37888
/* function declarations */
Packit d37888
int glibtop_make_connection (const char *hostarg, int portarg, int *s);
Packit d37888
Packit d37888
#ifdef INTERNET_DOMAIN_SOCKETS
Packit d37888
long glibtop_internet_addr (const char *host);
Packit d37888
#endif
Packit d37888