Article View: gnu.emacs.help
Article #189434Re: Re: emacs on a Cray??( also /var ??)
From: Andy Norman
Date: Tue, 19 Feb 1991 09:52
Date: Tue, 19 Feb 1991 09:52
166 lines
8891 bytes
8891 bytes
>>>>> "BB" == benseb@nic.cerf.net (Booker Bense) writes:
BB> It would be really nice if I could set up an emacsclient on the remote
BB> machine to access emacs running on my machine. Has anyone attempted this?
I have written an upwards-compatible version of emacsclient called gnuserv
which will do what you want. I include the man page below. Mail me if you
would like a copy.
-- ange --
ange@hplb.hpl.hp.com
--------------------------------------------------------------------------------
NAME
gnuserv, gnuclient, gnudoit - Server and Clients for GNU
Emacs
SYNOPSIS
gnuclient [-q] [[-h hostname] [-p port] [-r pathname]]
[[+line] path] ...
gnudoit [-q] [[-h hostname] [-p port]] [sexpr] ...
gnuserv
DESCRIPTION
gnuclient allows the user to request a running GNU Emacs
process to edit the named files or directories.
gnudoit allows the user to request a running GNU Emacs
process to evaluate the given arguments inside a progn LISP
form.
gnuserv is the server program that is set running by GNU
Emacs to handle all incoming and outgoing requests. It is
not usually invoked directly, but is started from GNU Emacs
by the LISP form (server-start).
OPTIONS
-q This option informs both gnuclient and gnudoit to
exit once connection has been made with the GNU
Emacs process. Normally gnuclient waits until all of
the files on the command line have been finished
with (their buffers killed) by the GNU Emacs
process, and gnudoit normally waits around for
evaluation of its arguments by the GNU Emacs
process, and prints the results or error conditions.
-h hostname
Used only with Internet-domain sockets, this option
specifies the host machine which should be running
gnuserv. If this option is not specified then the
value of the environment variable GNU_HOST is used
if set, otherwise the hostname of the machine
running the program is used.
Note that an internet address may be specified
instead of a hostname which can speed up connections
to the server by quite a bit, especially if the
client machine is running YP.
Note also that a hostname of unix can be used to
specify that the connection to the server should use
a Unix-domain socket (if supported) rather than an
Internet-domain socket.
-p port Used only with Internet-domain sockets, this option
specifies the service port used to communicate
between server and clients. If this option is not
specified, then the value of the environment
variable GNU_PORT is used, if set, otherwise a
service called ``gnuserv'' is looked up in the
services database. Finally, if no other value can be
found for the port, then a default port is used
which is usually 21490 + uid.
Note that since gnuserv doesn't allow command-line
options, the port for it will have to be specified
via one of the alternative methods.
-r pathname
Used only with Internet-domain sockets, the pathname
argument may be needed to inform GNU Emacs how to
reach the root directory of a remote machine.
gnuclient prepends this string to each path argument
given. For example, if you were trying to edit a
file on a client machine called otter, whose root
directory was accessible from the server machine via
the path /net/otter, then this argument should be
set to '/net/otter'. If this option is omitted, then
the value is taken from the environment variable
GNU_NODE, if set, or the empty string otherwise.
Note that on hp9000/s300 and hp9000/s800, the
pathname, if not specified by the user, is guessed.
path This is the path of the file to be edited. If the
file is a directory, then the directory browsers
dired or monkey are usually invoked instead.
sexpr This is part of a GNU Emacs LISP expression to
evaluate. All the sexprs are concatenated together
and wrapped in a progn form before sending to GNU
Emacs.
SETUP
In order to use the programs, the file gnuserv.el can be
copied into a directory on your GNU Emacs load-path, and
loaded into GNU Emacs by the GNU Emacs LISP form (load
"gnuserv"). The server can then be started by the GNU Emacs
LISP form (server-start).
EXAMPLE
gnudoit -q '(mh-smail)'
gnuclient -h otter -r /net/otter /tmp/*
SYSV IPC
SysV IPC is used to communicate between gnuclient, gnudoit
and gnuserv if the symbol SYSV_IPC is defined at the top of
gnuserv.h. This is incompatible with both Unix-domain and
Internet-domain socket communication as described below. A
file called /tmp/gsrv??? is created as a key for the message
queue, and if removed will cause the communication between
server and client to fail until the server is restarted.
UNIX-DOMAIN SOCKETS
A Unix-domain socket is used to communicate between
gnuclient, gnudoit and gnuserv if the symbol
UNIX_DOMAIN_SOCKETS is defined at the top of gnuserv.h. A
file called /tmp/gsrv??? is created for communication and if
deleted will cause communication between server and client
to fail.
INTERNET-DOMAIN SOCKETS
Internet-domain sockets are used to communicate between
gnuclient, gnudoit and gnuserv if the symbol
INTERNET_DOMAIN_SOCKETS is defined at the top of gnuserv.h.
Both Internet-domain and Unix-domain sockets can be used at
the same time.
SECURITY
Using Internet-domain sockets, a more robust form of
security is needed that wasn't necessary with either Unix-
domain sockets or SysV IPC.
gnuserv performs a limited form of security at the machine
level. By default only connections from the host where the
server is running will be allowed. All other server
connections will be rejected with a cryptic message (which
is displayed only by gnudoit). Alternatively, if the
variable GNU_SECURE can be found in gnuserv's environment,
and it names a readable filename, then this file is opened
and assumed to be a list of hosts, one per line, from which
the server will allow requests. Note that a host may be
either a internet address, or a hostname. If this file
contains a lot of hostnames then the server may take quite a
time to start up.
KNOWN BUGS
If GNU Emacs attempts to send a string containing a newline
character to gnuserv, then gnuserv will die.
FILES
/tmp/gsrv???
~/.emacs
GNU Emacs customization file, see emacs(1).
AUTHOR.
Andy Norman (ange@hplb.hpl.hp.com), based heavily upon
etc/emacsclient.c, etc/server.c and lisp/server.el from the
GNU Emacs 18.52 distribution.
Technical Details
Message-ID:
<ANGE.91Feb19095207@anorman.hpl.hp.com>Path:
arc1-ca.pugleaf.net!gmdzi!unido!mcsun!uunet!elroy.jpl.nasa.gov!sdd.hp.com!hplabs!otter.hpl.hp.com!hpltoad!anorman!angeReferences:
<7064@pizza.cam.nist.gov> <BOB.91Feb13093533@volitans.MorningStar.Com> <290@nic.cerf.net>Show Full Headers
Complete Article Headers
X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103b8b,4ff08d81882b3e55 X-Google-Attributes: gid103b8b,public X-Google-ArrivalTime: 1991-02-19 23:28:57 PST Path: arc1-ca.pugleaf.net!gmdzi!unido!mcsun!uunet!elroy.jpl.nasa.gov!sdd.hp.com!hplabs!otter.hpl.hp.com!hpltoad!anorman!ange From: ange@hplb.hpl.hp.com (Andy Norman) Newsgroups: gnu.emacs.help Subject: Re: Re: emacs on a Cray??( also /var ??) Message-ID: <ANGE.91Feb19095207@anorman.hpl.hp.com> Date: 19 Feb 91 09:52:07 GMT References: <7064@pizza.cam.nist.gov> <BOB.91Feb13093533@volitans.MorningStar.Com> <290@nic.cerf.net> Sender: news@hplb.hpl.hp.com (Usenet News Administrator) Organization: Hewlett-Packard Laboratories, Bristol, UK. Lines: 166 In-Reply-To: benseb@nic.cerf.net's message of 15 Feb 91 17:48:43 GMT Nntp-Posting-Host: anorman.hpl.hp.com