summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Baulig <martin@src.gnome.org>1998-06-14 17:05:37 +0000
committerMartin Baulig <martin@src.gnome.org>1998-06-14 17:05:37 +0000
commit7d0d3db11c0733214070e765417b20ff06e491a3 (patch)
tree81857497ef8701eaf6e519dd7423658753534388
parent63c475d4009fa898865391f112704d67717d6a22 (diff)
downloadlibgtop-7d0d3db11c0733214070e765417b20ff06e491a3.tar.gz
Removed again.
-rw-r--r--src/daemon/gnuclient.c620
-rw-r--r--src/daemon/gnuserv.h190
-rw-r--r--src/daemon/gnuslib.c454
3 files changed, 0 insertions, 1264 deletions
diff --git a/src/daemon/gnuclient.c b/src/daemon/gnuclient.c
deleted file mode 100644
index 9048bd16..00000000
--- a/src/daemon/gnuclient.c
+++ /dev/null
@@ -1,620 +0,0 @@
-/* -*-C-*-
- Client code to allow local and remote editing of files by XEmacs.
- Copyright (C) 1989 Free Software Foundation, Inc.
- Copyright (C) 1995 Sun Microsystems, Inc.
- Copyright (C) 1997 Free Software Foundation, Inc.
-
-This file is part of XEmacs.
-
-XEmacs 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, or (at your option) any
-later version.
-
-XEmacs 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 XEmacs; see the file COPYING. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.
-
- Author: Andy Norman (ange@hplb.hpl.hp.com), based on
- 'etc/emacsclient.c' from the GNU Emacs 18.52 distribution.
-
- Please mail bugs and suggestions to the author at the above address.
-*/
-
-/*
- * This file incorporates new features added by Bob Weiner <weiner@mot.com>,
- * Darrell Kindred <dkindred@cmu.edu> and Arup Mukherjee <arup@cmu.edu>.
- * GNUATTACH support added by Ben Wing <wing@xemacs.org>.
- * Please see the note at the end of the README file for details.
- *
- * (If gnuserv came bundled with your emacs, the README file is probably
- * ../etc/gnuserv.README relative to the directory containing this file)
- */
-
-#if 0
-/* Hand-munged RCS header */
-static char rcsid [] = "!Header: gnuclient.c,v 2.2 95/12/12 01:39:21 wing nene !";
-#endif
-
-#include "gnuserv.h"
-#include "getopt.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/types.h>
-
-#ifdef HAVE_STRING_H
-#include <string.h>
-#endif /* HAVE_STRING_H */
-
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-
-#include <signal.h>
-
-#if !defined(SYSV_IPC) && !defined(UNIX_DOMAIN_SOCKETS) && \
- !defined(INTERNET_DOMAIN_SOCKETS)
-int
-main (int argc, char *argv[])
-{
- fprintf (stderr, "Sorry, the Emacs server is only "
- "supported on systems that have\n");
- fprintf (stderr, "Unix Domain sockets, Internet Domain "
- "sockets or System V IPC.\n");
- exit (1);
-} /* main */
-#else /* SYSV_IPC || UNIX_DOMAIN_SOCKETS || INTERNET_DOMAIN_SOCKETS */
-
-static char cwd[MAXPATHLEN+2]; /* current working directory when calculated */
-static char *cp = NULL; /* ptr into valid bit of cwd above */
-
-static pid_t emacs_pid; /* Process id for emacs process */
-
-void initialize_signals (void);
-
-static void
-tell_emacs_to_resume (int sig)
-{
- char buffer[GSERV_BUFSZ+1];
- int s; /* socket / msqid to server */
- int connect_type; /* CONN_UNIX, CONN_INTERNET, or
- ONN_IPC */
-
- /* Why is SYSV so retarded? */
- /* We want emacs to realize that we are resuming */
- signal(SIGCONT, tell_emacs_to_resume);
-
- connect_type = make_connection (NULL, (u_short) 0, &s);
-
- sprintf(buffer,"(gnuserv-eval '(resume-pid-console %d))", (int)getpid());
- send_string(s, buffer);
-
-#ifdef SYSV_IPC
- if (connect_type == (int) CONN_IPC)
- disconnect_from_ipc_server (s, msgp, FALSE);
-#else /* !SYSV_IPC */
- if (connect_type != (int) CONN_IPC)
- disconnect_from_server (s, FALSE);
-#endif /* !SYSV_IPC */
-}
-
-static void
-pass_signal_to_emacs (int sig)
-{
- if (kill (emacs_pid, sig) == -1)
- {
- fprintf (stderr, "gnuattach: Could not pass signal to emacs process\n");
- exit (1);
- }
- initialize_signals ();
-}
-
-void
-initialize_signals ()
-{
- /* Set up signal handler to pass relevant signals to emacs process.
- We used to send SIGSEGV, SIGBUS, SIGPIPE, SIGILL and others to
- Emacs, but I think it's better not to. I can see no reason why
- Emacs should SIGSEGV whenever gnuclient SIGSEGV-s, etc. */
- signal (SIGHUP, pass_signal_to_emacs);
- signal (SIGQUIT, pass_signal_to_emacs);
- signal (SIGINT, pass_signal_to_emacs);
-#ifdef SIGWINCH
- signal (SIGWINCH, pass_signal_to_emacs);
-#endif
-
- /* We want emacs to realize that we are resuming */
- signal (SIGCONT, tell_emacs_to_resume);
-}
-
-
-/*
- get_current_working_directory -- return the cwd.
-*/
-static char *
-get_current_working_directory (void)
-{
- if (cp == NULL)
- { /* haven't calculated it yet */
-#ifdef BSD
- if (getwd (cwd) == 0)
-#else /* !BSD */
- if (getcwd (cwd,MAXPATHLEN) == NULL)
-#endif /* !BSD */
- {
- perror (progname);
- fprintf (stderr, "%s: unable to get current working directory\n",
- progname);
- exit (1);
- } /* if */
-
- /* on some systems, cwd can look like '@machine/' ... */
- /* ignore everything before the first '/' */
- for (cp = cwd; *cp && *cp != '/'; ++cp)
- ;
-
- } /* if */
-
- return cp;
-
-} /* get_current_working_directory */
-
-
-/*
- filename_expand -- try to convert the given filename into a fully-qualified
- pathname.
-*/
-static void
-filename_expand (char *fullpath, char *filename)
- /* fullpath - returned full pathname */
- /* filename - filename to expand */
-{
- int len;
-
- fullpath[0] = '\0';
-
- if (filename[0] && filename[0] != '/')
- { /* relative filename */
- strcat (fullpath, get_current_working_directory ());
- len = strlen (fullpath);
-
- if (len > 0 && fullpath[len-1] == '/') /* trailing slash already? */
- ; /* yep */
- else
- strcat (fullpath, "/"); /* nope, append trailing slash */
- } /* if */
-
- strcat (fullpath,filename);
-
-} /* filename_expand */
-
-/* Encase the string in quotes, escape all the backslashes and quotes
- in string. */
-static char *
-clean_string (const char *s)
-{
- int i = 0;
- char *p, *res;
-
- for (p = s; *p; p++, i++)
- {
- if (*p == '\\' || *p == '\"')
- ++i;
- else if (*p == '\004')
- i += 3;
- }
- p = res = (char *)malloc (i + 2 + 1);
- *p++ = '\"';
- for (; *s; p++, s++)
- {
- switch (*s)
- {
- case '\\':
- *p++ = '\\';
- *p = '\\';
- break;
- case '\"':
- *p++ = '\\';
- *p = '\"';
- break;
- case '\004':
- *p++ = '\\';
- *p++ = 'C';
- *p++ = '-';
- *p = 'd';
- break;
- default:
- *p = *s;
- }
- }
- *p++ = '\"';
- *p = '\0';
- return res;
-}
-
-#define GET_ARGUMENT(var, desc) do { \
- if (*(p + 1)) (var) = p + 1; \
- else \
- { \
- if (!argv[++i]) \
- { \
- fprintf (stderr, "%s: `%s' must be followed by an argument\n", \
- progname, desc); \
- exit (1); \
- } \
- (var) = argv[i]; \
- } \
- over = 1; \
-} while (0)
-
-/* A strdup immitation. */
-static char *
-my_strdup (const char *s)
-{
- char *new = malloc (strlen (s) + 1);
- if (new)
- strcpy (new, s);
- return new;
-}
-
-int
-main (int argc, char *argv[])
-{
- int starting_line = 1; /* line to start editing at */
- char command[MAXPATHLEN+50]; /* emacs command buffer */
- char fullpath[MAXPATHLEN+1]; /* full pathname to file */
- char *eval_form = NULL; /* form to evaluate with `-eval' */
- char *eval_function = NULL; /* function to evaluate with `-f' */
- char *load_library = NULL; /* library to load */
- int quick = 0; /* quick edit, don't wait for user to
- finish */
- int batch = 0; /* batch mode */
- int view = 0; /* view only. */
- int nofiles = 0;
- int errflg = 0; /* option error */
- int s; /* socket / msqid to server */
- int connect_type; /* CONN_UNIX, CONN_INTERNET, or
- * CONN_IPC */
- int suppress_windows_system = 0;
- char *display = NULL;
-#ifdef INTERNET_DOMAIN_SOCKETS
- char *hostarg = NULL; /* remote hostname */
- char *remotearg;
- char thishost[HOSTNAMSZ]; /* this hostname */
- char remotepath[MAXPATHLEN+1]; /* remote pathname */
- char *path;
- int rflg = 0; /* pathname given on cmdline */
- char *portarg;
- u_short port = 0; /* port to server */
-#endif /* INTERNET_DOMAIN_SOCKETS */
-#ifdef SYSV_IPC
- struct msgbuf *msgp; /* message */
-#endif /* SYSV_IPC */
- char *tty = NULL;
- char buffer[GSERV_BUFSZ + 1]; /* buffer to read pid */
- char result[GSERV_BUFSZ + 1];
- int i;
-
-#ifdef INTERNET_DOMAIN_SOCKETS
- memset (remotepath, 0, sizeof (remotepath));
-#endif /* INTERNET_DOMAIN_SOCKETS */
-
- progname = strrchr (argv[0], '/');
- if (progname)
- ++progname;
- else
- progname = argv[0];
-
- display = getenv ("DISPLAY");
- if (!display)
- suppress_windows_system = 1;
- else
- display = my_strdup (display);
-
- for (i = 1; argv[i] && !errflg; i++)
- {
- if (*argv[i] != '-')
- break;
- else if (*argv[i] == '-'
- && (*(argv[i] + 1) == '\0'
- || (*(argv[i] + 1) == '-' && *(argv[i] + 2) == '\0')))
- {
- /* `-' or `--' */
- ++i;
- break;
- }
-
- if (!strcmp (argv[i], "-batch") || !strcmp (argv[i], "--batch"))
- batch = 1;
- else if (!strcmp (argv[i], "-eval") || !strcmp (argv[i], "--eval"))
- {
- if (!argv[++i])
- {
- fprintf (stderr, "%s: `-eval' must be followed by an argument\n",
- progname);
- exit (1);
- }
- eval_form = argv[i];
- }
- else if (!strcmp (argv[i], "-display") || !strcmp (argv[i], "--display"))
- {
- suppress_windows_system = 0;
- if (!argv[++i])
- {
- fprintf (stderr,
- "%s: `-display' must be followed by an argument\n",
- progname);
- exit (1);
- }
- if (display)
- free (display);
- /* no need to strdup. */
- display = argv[i];
- }
- else if (!strcmp (argv[i], "-nw"))
- suppress_windows_system = 1;
- else
- {
- /* Iterate over one-letter options. */
- char *p;
- int over = 0;
- for (p = argv[i] + 1; *p && !over; p++)
- {
- switch (*p)
- {
- case 'q':
- quick = 1;
- break;
- case 'v':
- view = 1;
- break;
- case 'f':
- GET_ARGUMENT (eval_function, "-f");
- break;
- case 'l':
- GET_ARGUMENT (load_library, "-l");
- break;
-#ifdef INTERNET_DOMAIN_SOCKETS
- case 'h':
- GET_ARGUMENT (hostarg, "-h");
- break;
- case 'p':
- GET_ARGUMENT (portarg, "-p");
- port = atoi (portarg);
- break;
- case 'r':
- GET_ARGUMENT (remotearg, "-r");
- strcpy (remotepath, remotearg);
- rflg = 1;
- break;
-#endif /* INTERNET_DOMAIN_SOCKETS */
- default:
- errflg = 1;
- }
- } /* for */
- } /* else */
- } /* for */
-
- if (errflg)
- {
- fprintf (stderr,
-#ifdef INTERNET_DOMAIN_SOCKETS
- "usage: %s [-nw] [-display display] [-q] [-v] [-l library]\n"
- " [-batch] [-f function] [-eval form]\n"
- " [-h host] [-p port] [-r remote-path] [[+line] file] ...\n",
-#else /* !INTERNET_DOMAIN_SOCKETS */
- "usage: %s [-nw] [-q] [-v] [-l library] [-f function] [-eval form] "
- "[[+line] path] ...\n",
-#endif /* !INTERNET_DOMAIN_SOCKETS */
- progname);
- exit (1);
- }
- if (batch && argv[i])
- {
- fprintf (stderr, "%s: Cannot specify `-batch' with file names\n",
- progname);
- exit (1);
- }
- if (suppress_windows_system && hostarg)
- {
- fprintf (stderr, "%s: Remote editing is available only on X\n",
- progname);
- exit (1);
- }
-
- *result = '\0';
- if (eval_function || eval_form || load_library)
- {
-#if defined(INTERNET_DOMAIN_SOCKETS)
- connect_type = make_connection (hostarg, port, &s);
-#else
- connect_type = make_connection (NULL, (u_short) 0, &s);
-#endif
- sprintf (command, "(gnuserv-eval%s '(progn ", quick ? "-quickly" : "");
- send_string (s, command);
- if (load_library)
- {
- sprintf (command, " (load-library %s)", clean_string (load_library));
- send_string (s, command);
- }
- if (eval_form)
- {
- sprintf (command, " %s", eval_form);
- send_string (s, command);
- }
- if (eval_function)
- {
- sprintf (command, " (%s)", eval_function);
- send_string (s, command);
- }
- send_string (s, "))");
- send_string (s, EOT_STR);
- if (read_line (s, result) == 0)
- {
- fprintf (stderr, "%s: Could not read\n", progname);
- exit (1);
- }
- } /* eval_function || eval_form || load_library */
- else if (batch)
- {
- fprintf (stderr, "%s: `-batch' requires an evaluation\n",
- progname);
- exit (1);
- }
-
- if (!batch)
- {
- if (suppress_windows_system)
- {
- tty = ttyname (0);
- if (!tty)
- {
- fprintf (stderr, "%s: Not connected to a tty", progname);
- exit (1);
- }
-#if defined(INTERNET_DOMAIN_SOCKETS)
- connect_type = make_connection (hostarg, port, &s);
-#else
- connect_type = make_connection (NULL, (u_short) 0, &s);
-#endif
- send_string (s, "(gnuserv-eval '(emacs-pid))");
- send_string (s, EOT_STR);
-
- if (read_line (s, buffer) == 0)
- {
- fprintf (stderr, "%s: Could not establish Emacs procces id\n",
- progname);
- exit (1);
- }
- /* Don't do disconnect_from_server becasue we have already read
- data, and disconnect doesn't do anything else. */
-#ifndef INTERNET_DOMAIN_SOCKETS
- if (connect_type == (int) CONN_IPC)
- disconnect_from_ipc_server (s, msgp, FALSE);
-#endif /* !SYSV_IPC */
-
- emacs_pid = (pid_t)atol(buffer);
- initialize_signals();
- } /* suppress_windows_system */
-
-#if defined(INTERNET_DOMAIN_SOCKETS)
- connect_type = make_connection (hostarg, port, &s);
-#else
- connect_type = make_connection (NULL, (u_short) 0, &s);
-#endif
-
-#ifdef INTERNET_DOMAIN_SOCKETS
- if (connect_type == (int) CONN_INTERNET)
- {
- char *ptr;
- gethostname (thishost, HOSTNAMSZ);
- if (!rflg)
- { /* attempt to generate a path
- * to this machine */
- if ((ptr = getenv ("GNU_NODE")) != NULL)
- /* user specified a path */
- strcpy (remotepath, ptr);
- }
-#if 0 /* This is really bogus... re-enable it if you must have it! */
-#if defined (hp9000s300) || defined (hp9000s800)
- else if (strcmp (thishost,hostarg))
- { /* try /net/thishost */
- strcpy (remotepath, "/net/"); /* (this fails using internet
- addresses) */
- strcat (remotepath, thishost);
- }
-#endif
-#endif
- }
- else
- { /* same machines, no need for path */
- remotepath[0] = '\0'; /* default is the empty path */
- }
-#endif /* INTERNET_DOMAIN_SOCKETS */
-
-#ifdef SYSV_IPC
- if ((msgp = (struct msgbuf *)
- malloc (sizeof *msgp + GSERV_BUFSZ)) == NULL)
- {
- fprintf (stderr, "%s: not enough memory for message buffer\n", progname);
- exit (1);
- } /* if */
-
- msgp->mtext[0] = '\0'; /* ready for later strcats */
-#endif /* SYSV_IPC */
-
- if (suppress_windows_system)
- {
- char *term = getenv ("TERM");
- if (!term)
- {
- fprintf (stderr, "%s: unknown terminal type\n", progname);
- exit (1);
- }
- sprintf (command, "(gnuserv-edit-files '(tty %s %s %d) '(",
- clean_string (tty), clean_string (term), (int)getpid ());
- }
- else /* !suppress_windows_system */
- {
- sprintf (command, "(gnuserv-edit-files '(x %s) '(",
- clean_string (display));
- } /* !suppress_windows_system */
- send_string (s, command);
-
- if (!argv[i])
- nofiles = 1;
-
- for (; argv[i]; i++)
- {
- if (i < argc - 1 && *argv[i] == '+')
- starting_line = atoi (argv[i++]);
- else
- starting_line = 1;
- /* If the last argument is +something, treat it as a file. */
- if (i == argc)
- {
- starting_line = 1;
- --i;
- }
- filename_expand (fullpath, argv[i]);
-#ifdef INTERNET_DOMAIN_SOCKETS
- path = malloc (strlen (remotepath) + strlen (fullpath) + 1);
- sprintf (path, "%s%s", remotepath, fullpath);
-#else
- path = my_strdup (fullpath);
-#endif
- sprintf (command, "(%d . %s)", starting_line, clean_string (path));
- send_string (s, command);
- free (path);
- } /* for */
-
- sprintf (command, ")%s%s",
- (quick || (nofiles && !suppress_windows_system)) ? " 'quick" : "",
- view ? " 'view" : "");
- send_string (s, command);
- send_string (s, ")");
-
-#ifdef SYSV_IPC
- if (connect_type == (int) CONN_IPC)
- disconnect_from_ipc_server (s, msgp, FALSE);
-#else /* !SYSV_IPC */
- if (connect_type != (int) CONN_IPC)
- disconnect_from_server (s, FALSE);
-#endif /* !SYSV_IPC */
- } /* not batch */
-
- if (batch && !quick)
- printf ("%s\n", result);
-
- return 0;
-
-} /* main */
-
-#endif /* SYSV_IPC || UNIX_DOMAIN_SOCKETS || INTERNET_DOMAIN_SOCKETS */
diff --git a/src/daemon/gnuserv.h b/src/daemon/gnuserv.h
deleted file mode 100644
index b370f297..00000000
--- a/src/daemon/gnuserv.h
+++ /dev/null
@@ -1,190 +0,0 @@
-/* -*-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.
-*/
-
-/* HISTORY
- * 11-Nov-1990 bristor@simba
- * Added EOT stuff.
- */
-
-/*
- * This file incorporates new features added by Bob Weiner <weiner@mot.com>,
- * Darrell Kindred <dkindred@cmu.edu> and Arup Mukherjee <arup@cmu.edu>.
- * Please see the note at the end of the README file for details.
- *
- * (If gnuserv came bundled with your emacs, the README file is probably
- * ../etc/gnuserv.README relative to the directory containing this file)
- */
-
-#if 0
-static char header_rcsid [] = "!Header: gnuserv.h,v 2.4 95/02/16 11:58:11 arup alpha !";
-#endif
-
-#define NO_SHORTNAMES
-
-#define PATCHLEVEL 2
-
-#define NO_SHORTNAMES
-/* gnuserv should not be compiled using SOCKS */
-#define DO_NOT_SOCKSIFY
-#include <glibtop/global.h>
-#undef read
-#undef write
-#undef open
-#undef close
-#undef signal
-
-/* Define the communication method between server and clients:
- * You can have either or both kinds of sockets, but you can't mix
- * sockets with sysv ipc
- */
-
-
-#define INTERNET_DOMAIN_SOCKETS
-#define UNIX_DOMAIN_SOCKETS
-/* #define SYSV_IPC */
-
-/*
- * Define additional authentication protocols to be used. These methods will
- * be tried before falling back to the default gnuserv protocol (based on
- * the GNU_SECURE environment variable). Currently, only MIT-MAGIC-COOKIE-1
- * is also supported.
- *
- * Comment out the next line(s) if you don't want to enable the
- * appropriate authentication protocol.
- */
-
-#if defined (HAVE_XAUTH)
-#define AUTH_MAGIC_COOKIE
-#endif /* HAVE_XAUTH */
-
-/*
- * stuff related to supporting MIT-MAGIC-COOKIE-1
- */
-
-#define MCOOKIE_SCREEN "999" /* screen # to use as the gnuserv cookie */
-#define MCOOKIE_NAME "MAGIC-1" /* authentication protocol name */
-#define MCOOKIE_X_NAME "MIT-MAGIC-COOKIE-1" /* as needed by X */
-
-
-#define DEFAUTH_NAME "GNU-SECURE" /* name of default auth protocol */
-#define AUTH_TIMEOUT 15 /* # seconds to wait for auth data */
-#define AUTH_NAMESZ 15 /* max allows auth protocol name size */
-
-
-/*
- * Pick a default communication scheme, if none was specified.
- */
-
-#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 */
-
-/*
- * If you are using SYSV_IPC, you might want to make the buffer size bigger
- * since it limits the size of requests and responses. Don't make it bigger
- * than your system's max message size though (usually a couple of k) or else
- * msgsend will start failing. For sockets, using the system BUFSIZ is usually
- * what you want.
- */
-
-# define GSERV_BUFSZ BUFSIZ
-
-
-#ifdef SYSV_IPC
-#include <sys/ipc.h>
-#include <sys/msg.h>
-
-#define send_string(s,str) \
- if (strlen(msgp->mtext) + strlen(str) < GSERV_BUFSZ) \
- 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 <netdb.h>
-#include <netinet/in.h>
-#include <arpa/inet.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 is
- * DEFAULT_PORT + uid */
-#endif /* INTERNET_DOMAIN_SOCKETS */
-
-#ifdef UNIX_DOMAIN_SOCKETS
-#include <sys/un.h>
-#define HIDE_UNIX_SOCKET /* put the unix socket in a protected dir */
-#endif /* UNIX_DOMAIN_SOCKETS */
-
-#define HOSTNAMSZ 255 /* max size of a hostname */
-#define REPLYSIZ 300 /* max size of reply from server to client */
-#undef FALSE
-#define FALSE 0
-#undef TRUE
-#define TRUE 1
-
-extern char *optarg;
-extern int optind;
-extern char *progname;
-
-/* The casts shut Sun's compiler up and are safe in the context these
- are actually used. */
-#define max2(x,y) (((int) (x) > (int) (y)) ? (x) : (y))
-#define min2(x,y) (((int) (x) < (int) (y)) ? (x) : (y))
-
-#ifndef _NFILE /* rough guess at maximum number of open files */
-#define _NFILE 20
-#endif
-
-#define EOT_STR "\004"
-#define EOT_CHR '\004'
-
-/* connection types */
-#define CONN_UNIX 0
-#define CONN_INTERNET 1
-#define CONN_IPC 2
-
-/* function declarations */
-int make_connection (char *hostarg, int portarg, int *s);
-#ifdef SYSV_IPC
-void disconnect_from_ipc_server();
-#endif
-#if defined(INTERNET_DOMAIN_SOCKETS) || defined(UNIX_DOMAIN_SOCKETS)
-void send_string (int s, const char *msg);
-void disconnect_from_server (int s, int echo);
-int read_line (int s, char *dest);
-#endif
-#ifdef INTERNET_DOMAIN_SOCKETS
-int internet_addr (char *host);
-#endif
diff --git a/src/daemon/gnuslib.c b/src/daemon/gnuslib.c
deleted file mode 100644
index ca052f38..00000000
--- a/src/daemon/gnuslib.c
+++ /dev/null
@@ -1,454 +0,0 @@
-/* -*-C-*-
- Common library code for the GNU Emacs server and client.
-
- 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.
-*/
-
-/* HISTORY
- * 11-Nov-1990 bristor@simba
- * Added EOT stuff.
- */
-
-/*
- * This file incorporates new features added by Bob Weiner <weiner@mot.com>,
- * Darrell Kindred <dkindred@cmu.edu> and Arup Mukherjee <arup@cmu.edu>.
- * Please see the note at the end of the README file for details.
- *
- * (If gnuserv came bundled with your emacs, the README file is probably
- * ../etc/gnuserv.README relative to the directory containing this file)
- */
-
-#if 0
-static char rcsid [] = "!Header: gnuslib.c,v 2.4 95/02/16 11:57:37 arup alpha !";
-#endif
-
-#include "gnuserv.h"
-#include <errno.h>
-
-#ifdef SYSV_IPC
-static int connect_to_ipc_server (void);
-#endif
-#ifdef UNIX_DOMAIN_SOCKETS
-static int connect_to_unix_server (void);
-#endif
-#ifdef INTERNET_DOMAIN_SOCKETS
-static int connect_to_internet_server (char *serverhost, u_short port);
-#endif
-
-/* On some systems, e.g. DGUX, inet_addr returns a 'struct in_addr'. */
-#ifdef HAVE_BROKEN_INET_ADDR
-# define IN_ADDR struct in_addr
-# define NUMERIC_ADDR_ERROR (numeric_addr.s_addr == -1)
-#else
-# if (LONGBITS > 32)
-# define IN_ADDR unsigned int
-# else
-# define IN_ADDR unsigned long
-# endif
-# define NUMERIC_ADDR_ERROR (numeric_addr == (IN_ADDR) -1)
-#endif
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-#ifdef HAVE_STRING_H
-#include <string.h>
-#endif /* HAVE_STRING_H */
-
-#include <arpa/inet.h>
-
-char *progname = NULL;
-
-int make_connection(hostarg, portarg, s)
- char *hostarg;
- int portarg;
- int *s;
-{
-#ifdef INTERNET_DOMAIN_SOCKETS
- char *ptr;
- if (hostarg == NULL)
- hostarg = getenv("GNU_HOST");
- if (portarg == 0 && (ptr=getenv("GNU_PORT")) != NULL)
- portarg = atoi(ptr);
-#endif
-
- if (hostarg != NULL) {
- /* hostname was given explicitly, via cmd line arg or GNU_HOST,
- * so obey it. */
-#ifdef UNIX_DOMAIN_SOCKETS
- if (!strcmp(hostarg, "unix")) {
- *s = connect_to_unix_server();
- return (int) CONN_UNIX;
- }
-#endif /* UNIX_DOMAIN_SOCKETS */
-#ifdef INTERNET_DOMAIN_SOCKETS
- *s = connect_to_internet_server(hostarg, portarg);
- return (int) CONN_INTERNET;
-#endif
-#ifdef SYSV_IPC
- return -1; /* hostarg should always be NULL for SYSV_IPC */
-#endif
- } else {
- /* no hostname given. Use unix-domain/sysv-ipc, or
- * internet-domain connection to local host if they're not available. */
-#if defined(UNIX_DOMAIN_SOCKETS)
- *s = connect_to_unix_server();
- return (int) CONN_UNIX;
-#elif defined(SYSV_IPC)
- *s = connect_to_ipc_server();
- return (int) CONN_IPC;
-#elif defined(INTERNET_DOMAIN_SOCKETS)
- {
- char localhost[HOSTNAMSZ];
- gethostname(localhost,HOSTNAMSZ); /* use this host by default */
- *s = connect_to_internet_server(localhost, portarg);
- return (int) CONN_INTERNET;
- }
-#endif /* IPC type */
- }
-}
-
-#ifdef SYSV_IPC
-/*
- connect_to_ipc_server -- establish connection with server process via SYSV IPC
- Returns msqid for server if successful.
-*/
-static int connect_to_ipc_server (void)
-{
- int s; /* connected msqid */
- key_t key; /* message key */
- char buf[GSERV_BUFSZ+1]; /* buffer for filename */
-
- sprintf(buf,"/tmp/gsrv%d",(int)geteuid());
- creat(buf,0600);
- if ((key = ftok(buf,1)) == -1) {
- perror(progname);
- fprintf(stderr, "%s: unable to get ipc key from %s\n",
- progname, buf);
- exit(1);
- }
-
- if ((s = msgget(key,0600)) == -1) {
- perror(progname);
- fprintf(stderr,"%s: unable to access msg queue\n",progname);
- exit(1);
- }; /* if */
-
- return(s);
-
-} /* connect_to_ipc_server */
-
-
-/*
- disconnect_from_ipc_server -- inform the server that sending has finished,
- and wait for its reply.
-*/
-void disconnect_from_ipc_server(s,msgp,echo)
- int s;
- struct msgbuf *msgp;
- int echo;
-{
- int len; /* length of received message */
-
- send_string(s,EOT_STR); /* EOT terminates this message */
- msgp->mtype = 1;
-
- if(msgsnd(s,msgp,strlen(msgp->mtext)+1,0) < 0) {
- perror(progname);
- fprintf(stderr,"%s: unable to send message to server\n",progname);
- exit(1);
- }; /* if */
-
- if((len = msgrcv(s,msgp,GSERV_BUFSZ,getpid(),0)) < 0) {
- perror(progname);
- fprintf(stderr,"%s: unable to receive message from server\n",progname);
- exit(1);
- }; /* if */
-
- if (echo) {
- msgp->mtext[len] = '\0'; /* string terminate message */
- fputs(msgp->mtext, stdout);
- if (msgp->mtext[len-1] != '\n') putchar ('\n');
- }; /* if */
-
-} /* disconnect_from_ipc_server */
-#endif /* SYSV_IPC */
-
-
-#if defined(INTERNET_DOMAIN_SOCKETS) || defined(UNIX_DOMAIN_SOCKETS)
-/*
- send_string -- send string to socket.
-*/
-void send_string(s,msg)
- int s;
- const char *msg;
-{
-#if 0
- if (send(s,msg,strlen(msg),0) < 0) {
- perror(progname);
- fprintf(stderr,"%s: unable to send\n",progname);
- exit(1);
- }; /* if */
-#else
- int len, left=strlen(msg);
- while (left > 0) {
- if ((len=write(s,msg,min2(left,GSERV_BUFSZ))) < 0) {
- /* XEmacs addition: robertl@arnet.com */
- if (errno == EPIPE) {
- return ;
- }
- perror(progname);
- fprintf(stderr,"%s: unable to send\n",progname);
- exit(1);
- }; /* if */
- left -= len;
- msg += len;
- }; /* while */
-#endif
-} /* send_string */
-
-/*
- read_line -- read a \n terminated line from a socket
-*/
-int read_line(int s, char *dest)
-{
- int length;
- int offset=0;
- char buffer[GSERV_BUFSZ+1];
-
- while ((length=read(s,buffer+offset,1)>0) && buffer[offset]!='\n'
- && buffer[offset] != EOT_CHR) {
- offset += length;
- if (offset >= GSERV_BUFSZ)
- break;
- }
- buffer[offset] = '\0';
- strcpy(dest,buffer);
- return 1;
-} /* read_line */
-#endif /* INTERNET_DOMAIN_SOCKETS || UNIX_DOMAIN_SOCKETS */
-
-
-#ifdef UNIX_DOMAIN_SOCKETS
-/*
- connect_to_unix_server -- establish connection with server process via a unix-
- domain socket. Returns socket descriptor for server
- if successful.
-*/
-static int connect_to_unix_server (void)
-{
- int s; /* connected socket descriptor */
- struct sockaddr_un server; /* for unix connections */
-
- if ((s = socket(AF_UNIX,SOCK_STREAM,0)) < 0) {
- perror(progname);
- fprintf(stderr,"%s: unable to create socket\n",progname);
- exit(1);
- }; /* if */
-
- server.sun_family = AF_UNIX;
-#ifdef HIDE_UNIX_SOCKET
- sprintf(server.sun_path,"/tmp/gsrvdir%d/gsrv",(int)geteuid());
-#else /* HIDE_UNIX_SOCKET */
- sprintf(server.sun_path,"/tmp/gsrv%d",(int)geteuid());
-#endif /* HIDE_UNIX_SOCKET */
- if (connect(s,(struct sockaddr *)&server,strlen(server.sun_path)+2) < 0) {
- perror(progname);
- fprintf(stderr,"%s: unable to connect to local\n",progname);
- exit(1);
- }; /* if */
-
- return(s);
-
-} /* connect_to_unix_server */
-#endif /* UNIX_DOMAIN_SOCKETS */
-
-
-#ifdef INTERNET_DOMAIN_SOCKETS
-/*
- internet_addr -- return the internet addr of the hostname or
- internet address passed. Return -1 on error.
-*/
-int internet_addr(host)
- char *host;
-{
- struct hostent *hp; /* pointer to host info for remote host */
- IN_ADDR numeric_addr; /* host address */
-
- numeric_addr = inet_addr(host);
- if (!NUMERIC_ADDR_ERROR)
- return numeric_addr;
- else if ((hp = gethostbyname(host)) != NULL)
- return ((struct in_addr *)(hp->h_addr))->s_addr;
- else
- return -1;
-
-} /* internet_addr */
-
-#ifdef AUTH_MAGIC_COOKIE
-# include <X11/X.h>
-# include <X11/Xauth.h>
-
-static Xauth *server_xauth = NULL;
-#endif
-
-/*
- connect_to_internet_server -- establish connection with server process via
- an internet domain socket. Returns socket
- descriptor for server if successful.
-*/
-static int connect_to_internet_server (char *serverhost, u_short port)
-{
- int s; /* connected socket descriptor */
- struct servent *sp; /* pointer to service information */
- struct sockaddr_in peeraddr_in; /* for peer socket address */
- char buf[512]; /* temporary buffer */
-
- /* clear out address structures */
- memset((char *)&peeraddr_in,0,sizeof(struct sockaddr_in));
-
- /* Set up the peer address to which we will connect. */
- peeraddr_in.sin_family = AF_INET;
-
- /* look up the server host's internet address */
- if ((peeraddr_in.sin_addr.s_addr = internet_addr(serverhost)) == -1) {
- fprintf(stderr,"%s: unable to find %s in /etc/hosts or from YP\n",
- progname,serverhost);
- exit(1);
- }; /* if */
-
- if (port == 0) {
- if ((sp = getservbyname ("gnuserv","tcp")) == NULL)
- peeraddr_in.sin_port = htons(DEFAULT_PORT+getuid());
- else
- peeraddr_in.sin_port = sp->s_port;
- } /* if */
- else
- peeraddr_in.sin_port = htons(port);
-
- /* Create the socket. */
- if ((s = socket (AF_INET,SOCK_STREAM, 0))== -1) {
- perror(progname);
- fprintf(stderr,"%s: unable to create socket\n",progname);
- exit(1);
- }; /* if */
-
- /* Try to connect to the remote server at the address
- * which was just built into peeraddr.
- */
- if (connect(s, (struct sockaddr *)&peeraddr_in,
- sizeof(struct sockaddr_in)) == -1) {
- perror(progname);
- fprintf(stderr, "%s: unable to connect to remote\n",progname);
- exit(1);
- }; /* if */
-
-#ifdef AUTH_MAGIC_COOKIE
-
- /* send credentials using MIT-MAGIC-COOKIE-1 protocol */
-
- server_xauth =
- XauGetAuthByAddr(FamilyInternet,
- sizeof(peeraddr_in.sin_addr.s_addr),
- (char *) &peeraddr_in.sin_addr.s_addr,
- strlen(MCOOKIE_SCREEN), MCOOKIE_SCREEN,
- strlen(MCOOKIE_X_NAME), MCOOKIE_X_NAME);
-
- if (server_xauth && server_xauth->data) {
- sprintf(buf, "%s\n%d\n", MCOOKIE_NAME, server_xauth->data_length);
- write (s, buf, strlen(buf));
- write (s, server_xauth->data, server_xauth->data_length);
-
- return (s);
- }
-
-#endif /* AUTH_MAGIC_COOKIE */
-
- sprintf (buf, "%s\n", DEFAUTH_NAME);
- write (s, buf, strlen(buf));
-
- return(s);
-
-} /* connect_to_internet_server */
-#endif /* INTERNET_DOMAIN_SOCKETS */
-
-
-#if defined(INTERNET_DOMAIN_SOCKETS) || defined(UNIX_DOMAIN_SOCKETS)
-/*
- disconnect_from_server -- inform the server that sending has finished, and wait for
- its reply.
-*/
-void disconnect_from_server(s,echo)
- int s;
- int echo;
-{
-#if 0
- char buffer[REPLYSIZ+1];
-#else
- char buffer[GSERV_BUFSZ+1];
-#endif
- int add_newline = 1;
- int length;
-
- send_string(s,EOT_STR); /* make sure server gets string */
-
-#if !defined (linux) && !defined (_SCO_DS)
- /*
- * shutdown is completely hozed under linux. If s is a unix domain socket,
- * you'll get EOPNOTSUPP back from it. If s is an internet socket, you get
- * a broken pipe when you try to read a bit later. The latter
- * problem is fixed for linux versions >= 1.1.46, but the problem
- * with unix sockets persists. Sigh.
- */
-
- if (shutdown(s,1) == -1) {
- perror(progname);
- fprintf(stderr, "%s: unable to shutdown socket\n",progname);
- exit(1);
- }; /* if */
-#endif
-
-#if 0
- while((length = recv(s,buffer,REPLYSIZ,0)) > 0) {
- buffer[length] = '\0';
- if (echo) fputs(buffer,stdout);
- add_newline = (buffer[length-1] != '\n');
- }; /* while */
-#else
- while ((length = read(s,buffer,GSERV_BUFSZ)) > 0 ||
- (length == -1 && errno == EINTR)) {
- if (length) {
- buffer[length] = '\0';
- if (echo) {
- fputs(buffer,stdout);
- add_newline = (buffer[length-1] != '\n');
- }; /* if */
- }; /* if */
- }; /* while */
-#endif
-
- if (echo && add_newline) putchar('\n');
-
- if(length < 0) {
- perror(progname);
- fprintf(stderr,"%s: unable to read the reply from the server\n",progname);
- exit(1);
- }; /* if */
-
-} /* disconnect_from_server */
-#endif /* INTERNET_DOMAIN_SOCKETS || UNIX_DOMAIN_SOCKETS */