/* -*-C-*-
 Header file for the GNU Emacs server and client C code.

 This file is part of GNU Emacs.

 Copying is permitted under those conditions described by the GNU
 General Public License.

 Copyright (C) 1989 Free Software Foundation, Inc.

 Author: Andy Norman (ange@hplb.hpl.hp.com), based on 
         'etc/server.c' and 'etc/emacsclient.c' from the 18.52 GNU
         Emacs distribution.

 Please mail bugs and suggestions to the author at the above address.
*/

static char header_rcsid [] = "$Header: /afs/sipb.mit.edu/project/sipbsrc/src/lib/elisp/gnuserv/RCS/gnuserv.h,v 1.1 92/05/24 01:41:03 ckclark Exp $";

#define NO_SHORTNAMES

#define PATCHLEVEL 2

#include "../src/config.h"
#undef read
#undef write
#undef open
#undef close

/* Define the communication method between server and clients */

/* Too much of a security hole -ckclark */
/* #define INTERNET_DOMAIN_SOCKETS */
#define UNIX_DOMAIN_SOCKETS
/* #define SYSV_IPC */

#if !defined(SYSV_IPC) && !defined(UNIX_DOMAIN_SOCKETS) && !defined(INTERNET_DOMAIN_SOCKETS)

#ifdef HAVE_SYSVIPC
#define SYSV_IPC		/* SYSV systems use SYSV IPC by default */
#endif /* HAVE_SYSVIPC */

#ifdef BSD
#define UNIX_DOMAIN_SOCKETS	/* BSD systems use Unix Domain sockets by default */
#endif /* BSD */

#endif /* No communication method pre-defined */

#include <sys/types.h>
#include <sys/param.h>
#include <stdio.h>
#include <signal.h>

#ifdef SYSV_IPC
#include <sys/ipc.h>
#include <sys/msg.h>

#define send_string(s,str) \
  if (strlen(msgp->mtext) + strlen(str) < BUFSIZ) \
     strcat(msgp->mtext,str); \
  else \
  { \
    fprintf(stderr,"%s: not enough message buffer space\n",progname); \
     exit(1); \
  } \

#endif /* SYSV_IPC */

#if defined(INTERNET_DOMAIN_SOCKETS) || defined(UNIX_DOMAIN_SOCKETS)
#include <sys/socket.h>
#endif /* INTERNET_DOMAIN_SOCKETS || UNIX_DOMAIN_SOCKETS */

#ifdef INTERNET_DOMAIN_SOCKETS
#include <netinet/in.h>
#include <netdb.h>
#define TABLE_SIZE 101		/* The number of entries in the hash table */
#define HASH(host) host		/* Rather simplistic hash function */
#define DEFAULT_PORT 21490	/* default port number to use */
#endif /* INTERNET_DOMAIN_SOCKETS */

#ifdef UNIX_DOMAIN_SOCKETS
#include <sys/un.h>
#endif /* UNIX_DOMAIN_SOCKETS */

#define HOSTNAMSZ 255		/* max size of a hostname */
#define REPLYSIZ 300		/* max size of reply from server to client */
#define FALSE 0
#define TRUE 1

extern char *getenv();
extern char *optarg;
extern int optind;
extern char *progname;

#ifndef BSD
extern char *getcwd();
#endif

#define max2(x,y) (((x) > (y)) ? (x) : (y))

#ifndef _NFILE			/* rough guess at maximum number of open files */
#define _NFILE 20
#endif
