--- gnuserv-3.12.6.orig/gnuclient.c +++ gnuserv-3.12.6/gnuclient.c @@ -403,7 +403,17 @@ display = argv[i]; } else if (!strcmp (argv[i], "-nw")) - suppress_windows_system = 1; + { + /* Since GNU Emacs doesn't support that feature and since + this Debian package is supposed to work inly with GNU + Emacs, disable it so that users are not advertised of a + missing feature. */ + fprintf (stderr, + "%s: `-nw' doesn't work with GNU Emacs, option disabled\n", + progname); + exit (1); +/* suppress_windows_system = 1; */ + } else { /* Iterate over one-letter options. */ @@ -450,11 +460,11 @@ { fprintf (stderr, #ifdef INTERNET_DOMAIN_SOCKETS - "Usage: %s [-nw] [-display display] [-q] [-v] [-l library]\n" + "Usage: %s [-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] " + "Usage: %s [-q] [-v] [-l library] [-f function] [-eval form] " "[[+line] path] ...\n", #endif /* !INTERNET_DOMAIN_SOCKETS */ progname); @@ -466,8 +476,8 @@ progname); exit (1); } -#if defined(INTERNET_DOMAIN_SOCKETS) - if (suppress_windows_system && hostarg) +#ifdef INTERNET_DOMAIN_SOCKETS + if (suppress_windows_system && hostarg && (!batch)) { fprintf (stderr, "%s: Remote editing is available only on X\n", progname); --- gnuserv-3.12.6.orig/gnuserv.1 +++ gnuserv-3.12.6/gnuserv.1 @@ -4,7 +4,7 @@ gnuserv, gnuclient \- Server and Clients for XEmacs .SH SYNOPSIS .B gnuclient -[-nw] [-display display] [-q] [-v] [-l library] [-batch] [-f function] [-eval form] +[-display display] [-q] [-v] [-l library] [-batch] [-f function] [-eval form] [-h hostname] [-p port] [-r remote-pathname] [[+line] file] ... .br .B gnudoit [-q] @@ -31,8 +31,7 @@ directly, but is started from XEmacs by loading the \fIgnuserv\fP package and evaluating the Lisp form (gnuserv-start). .PP -\fIgnuattach\fP no longer exists. Its functionality has been replaced by -\fIgnuclient -nw\fP. +\fIgnuattach\fP no longer exists\fP. .SH OPTIONS .PP \fIgnuclient\fP supports as much of the command line options of Emacs as @@ -41,14 +40,6 @@ Options with long names can also be specified using a double hyphen instead of a single one. .TP 8 -.BI \-nw -This option makes \fIgnuclient\fP act as a frontend such that XEmacs -can attach to the current TTY. XEmacs will then open a new TTY frame. -The effect is similar to having started a new XEmacs on this TTY with -the ``-nw'' option. It currently only works if XEmacs is running on -the same machine as gnuclient. This is the default if the `DISPLAY' -environment variable is not set. -.TP 8 .BI \-display " display, " \--display " display" If this option is given or the `DISPLAY' environment variable is set then gnuclient will tell XEmacs to edit files in a frame on the @@ -150,7 +141,7 @@ .br gnuclient -h cuckoo -r /ange@otter: /tmp/* .br -gnuclient -nw ../src/listproc.c +gnuclient ../src/listproc.c .RE .br @@ -254,6 +245,11 @@ KALI.FTM.CS.CMU.EDU:999 MIT-MAGIC-COOKIE-1 1234 .RE .PP +To create the cookie, you can use a command like +.RS 4 +xauth add `hostname`:999 MIT-MAGIC-COOKIE-1 `head -c512 /dev/urandom|md5sum` +.RE +.PP For more information on authorization files, take a look at the xauth(1X11) man page, or invoke xauth interactively (without any arguments) and type "help" at the prompt. Remember that case in the --- gnuserv-3.12.6.orig/gnuserv.c +++ gnuserv-3.12.6/gnuserv.c @@ -136,7 +136,7 @@ ipc_init (struct msgbuf **msgpp) { key_t key; /* messge key */ - char buf[GSERV_BUFSZ]; /* pathname for key */ + char buf[GSERV_BUFSZ+1]; /* pathname for key */ sprintf (buf,"%s/gsrv%d",tmpdir,(int)geteuid ()); creat (buf,0600); @@ -173,7 +173,7 @@ handle_ipc_request (struct msgbuf *msgp) { struct msqid_ds msg_st; /* message status */ - char buf[GSERV_BUFSZ]; + char buf[GSERV_BUFSZ+1]; int len; /* length of message / read */ int s, result_len; /* tag fields on the response from emacs */ int offset = 0; @@ -620,7 +620,19 @@ sizeof(host_addr), (char *)&host_addr, strlen(MCOOKIE_SCREEN), MCOOKIE_SCREEN, strlen(MCOOKIE_X_NAME), MCOOKIE_X_NAME); - hosts++; + + /* Fix suggested by Roderick Schertler to + handle cases where there's no authorization data. */ + if (server_xauth) + { + if (server_xauth->data) + hosts++; + else + { + XauDisposeAuth (server_xauth); + server_xauth = NULL; + } + } #endif /* AUTH_MAGIC_COOKIE */ --- gnuserv-3.12.6.orig/debian/changelog +++ gnuserv-3.12.6/debian/changelog @@ -0,0 +1,139 @@ +gnuserv (3.12.6-1) unstable; urgency=low + + * New upstream version (closes: #209126) + * Remove dependencies on emacs20 (closes: #232737, #232761) + * Move conffile to /etc/emacs21. Removing this package but not purging + it still makes emacs21 croak, but no more other flavours (hopefully + closes: #207245) + + -- Benjamin Drieu Mon, 16 Feb 2004 12:27:42 +0100 + +gnuserv (3.12.4-5) unstable; urgency=low + + * Remote evaluation now work without DISPLAY being set (Closes: #149938) + * install.log is now universally readable (Closes: #167717) + + -- Benjamin Drieu Wed, 12 Feb 2003 16:45:40 +0100 + +gnuserv (3.12.4-4) unstable; urgency=low + + * Quiet down postinst. (Closes: #143341) + * Install dtemacs. (Closes: #144039) + + -- Benjamin Drieu Tue, 30 Apr 2002 16:41:21 +0200 + +gnuserv (3.12.4-3) unstable; urgency=low + + * Add some hints about using xauth in gnuserv man page. (Closes: #99195) + + -- Benjamin Drieu Wed, 3 Apr 2002 17:26:08 +0200 + +gnuserv (3.12.4-2) unstable; urgency=low + + * Suppress gnuclient -nw, that does not work with GNU Emacs. As + debian's gnuserv/gnuclient is supposed to work only with GNU Emacs + since xemacs provides its own gnuclient.xemacs21, I remove any + advertisement to that feature. (Closes: #119927, #116921, + #133266, #134972) + + * Buffer overrun fix (Closes: #137912) + + * Closes: #132134. + + -- Benjamin Drieu Fri, 15 Mar 2002 20:58:10 +0100 + +gnuserv (3.12.4-1) unstable; urgency=low + + * New maintainer. (Closes: #120051) + * New upstream version. (Closes: #99915, #92642) + + -- Benjamin Drieu Thu, 21 Feb 2002 00:21:47 +0100 + +gnuserv (3.12.3-3.1) unstable; urgency=low + + * Non Maintainer Upload. + * mark /etc/emacs/site-start.d/50gnuserv.el as a conffile + (closes: #132134) + + -- David Kimdon Thu, 7 Feb 2002 23:10:16 -0800 + +gnuserv (3.12.3-3) unstable; urgency=medium + + * Urgency medium in hopes of preventing woody from releasing with + a broken gnuserv package which claims to require emacs20 even + though emacs21 works just fine. This silliness would not be + necessary had i been able to say emacs >= 20... + * Update to Standards-Version 3.5.6 (no actual changes necessary). + * debian/control: Use emacs21 | emacs20 in Depends and Build-Depends. + (Closes: #118583) + * debian/postinst: Clean up garbage left behind by potato version. + (Closes: #99191) + * Verify that symlinks to the appropriate man pages are + installed. (Closes: #99534) + + -- Eric Gillespie, Jr. Wed, 7 Nov 2001 20:56:34 +0000 + +gnuserv (3.12.3-2) unstable; urgency=low + + * Add Build-Depends: emacs20. (Closes: #90213) + + -- Eric Gillespie, Jr. Mon, 19 Mar 2001 09:53:47 -0500 + +gnuserv (3.12.3-1) unstable; urgency=low + + * New maintainer. (Closes: #89717) + * New upstream version. (Closes: #84627, #85600, #88961, #67831, #84802) + * Repackage from scratch using debhelper. The upstream package has + changed substantially, and the Debian package was out-of-date with + regard to policy, so i figured this would be for the best. + * Now uses alternatives for the programs and manpages. + (Closes: #48445, #37658) + * Now uses dh_installemacsen and follows emacsen policy. + (Closes: #62093, #67406) + * Add Build-Depends. (Closes: #89135) + + -- Eric Gillespie, Jr. Sun, 18 Mar 2001 00:49:54 -0500 + +gnuserv (2.1alpha-5.1.1) unstable; urgency=high + + * Non-Maintainer Upload by Security Team + * Applied patch from Klaus Frank that fixes weak access control which + could lead random remote users execute commands under the local user + id bypassing access control. + + -- Martin Schulze Thu, 8 Mar 2001 22:25:16 +0100 + +gnuserv (2.1alpha-5) unstable; urgency=low + + * gnuserv.el is byte compiled now. + * don't compile for xemacs. Closes Bug#33012 and Bug#28175. + + -- Frederic Lepied Tue, 16 Feb 1999 20:41:12 +0100 + +gnuserv (2.1alpha-4) unstable; urgency=low + + * added autoloads in /etc/emacs/site_start.d + + -- Frederic Lepied Thu, 19 Mar 1998 06:16:39 +0100 + +gnuserv (2.1alpha-3) unstable; urgency=low + + * depends on emacsen. + + -- Frederic Lepied Sun, 15 Mar 1998 08:09:17 +0100 + +gnuserv (2.1alpha-2) unstable; urgency=low + + * Uncompress the copyright file (Fixes Bug#14399). + * README.debian: corrected bad spelling and changed to a more secure + xauth command (Fixes Bug#13943). + + -- Frederic Lepied Wed, 28 Jan 1998 05:33:46 +0100 + +gnuserv (2.1alpha-1) unstable; urgency=low + + * Initial Release. + + -- Frederic Lepied Mon, 13 Oct 1997 22:22:05 +0200 + + --- gnuserv-3.12.6.orig/debian/conffiles +++ gnuserv-3.12.6/debian/conffiles @@ -0,0 +1 @@ +/etc/emacs21/site-start.d/50gnuserv.el --- gnuserv-3.12.6.orig/debian/control +++ gnuserv-3.12.6/debian/control @@ -0,0 +1,22 @@ +Source: gnuserv +Section: editors +Priority: optional +Maintainer: Benjamin Drieu +Build-Depends: debhelper (>> 2.0.0), xlibs-dev, emacs21 +Standards-Version: 3.6.10 + +Package: gnuserv +Architecture: any +Depends: emacs21, ${shlibs:Depends} +Description: Allows you to attach to an already running Emacs + gnuserv allows you to attach to an already running Emacs. This + allows external programs to make use of Emacs' editing + capabilities. It is like GNU Emacs' emacsserver/server.el, but + has many more features. + . + You do not need this package if you use XEmacs; it already + includes gnuserv and gnuclient. If you want to use gnuserv with + both GNU Emacs and XEmacs, you will only be able to use the + alternative /usr/bin/gnuclient with one flavor of emacs; you will + have to use either gnuclient.xemacs or gnuclient.emacs for the + other flavor. --- gnuserv-3.12.6.orig/debian/copyright +++ gnuserv-3.12.6/debian/copyright @@ -0,0 +1,13 @@ +This package was debianized by Eric Gillespie, Jr. on +Sat, 17 Mar 2001 00:46:01 -0500. + +It was downloaded from http://meltin.net/hacks/emacs/ + +Upstream Authors: +Martin Schwenke +XEmacs Development Team (http://www.xemacs.org/) + +Copyright: + +gnuserv is released under the GNU GPL. The full text of this +license can be found in /usr/share/common-licenses/GPL. --- gnuserv-3.12.6.orig/debian/dirs +++ gnuserv-3.12.6/debian/dirs @@ -0,0 +1,3 @@ +usr/bin +usr/share/emacs/site-lisp/gnuserv +usr/share/man/man1 --- gnuserv-3.12.6.orig/debian/docs +++ gnuserv-3.12.6/debian/docs @@ -0,0 +1 @@ +README --- gnuserv-3.12.6.orig/debian/dtemacs +++ gnuserv-3.12.6/debian/dtemacs @@ -0,0 +1,33 @@ +#!/bin/sh + +# $Id: dtemacs,v 1.2 2004/02/16 11:23:59 benj Exp $ + +# Try to contact Emacs with gnuclient, starting Emacs if no answer. +# Pass all options to gnuclient. This version is standalone and doesn't +# need any fancy elisp. + +GNUCLIENT=gnuclient +GNUCLIENTPINGOPTIONS="-batch -eval t" +EMACS=emacs +TIMEOUT=20 + +# If Emacs doesn't seem to be running then make it so. +if ${GNUCLIENT} ${GNUCLIENTPINGOPTIONS} >/dev/null 2>&1 ; then + : +else + ${EMACS} -iconic -eval "(setq gnuserv-kill-quietly t)" -f gnuserv-start 2>&1 >/dev/null & +fi + +# Try for TIMEOUT seconds to talk to the Emacs process. + +count=0 +until ${GNUCLIENT} ${GNUCLIENTPINGOPTIONS} >/dev/null 2>&1 ; do + if [ ${count} -gt ${TIMEOUT} ] ; then + echo "dtemacs: error starting Emacs" 1>&2 + exit 1 + fi + sleep 1 + count=`expr ${count} + 1` +done + +exec ${GNUCLIENT} ${1+"$@"} --- gnuserv-3.12.6.orig/debian/dtemacs.1 +++ gnuserv-3.12.6/debian/dtemacs.1 @@ -0,0 +1,21 @@ +.TH dtemacs 1 +.SH NAME +dtemacs \- contact Emacs with gnuclient, starting Emacs if no answer. +.SH SYNOPSIS +.B dtemacs +.SH DESCRIPTION +.I dtemacs +tries to contact Emacs with gnuclient, starting Emacs if no answer. +Pass all options to gnuclient. This version is standalone and doesn't +need any fancy elisp. +.SH "SEE ALSO" +.IR emacs (1), +.IR gnuserv (1). +.SH "AUTHOR" +.PP +This manual page was written by Benjamin Drieu for +the \fBDebian\fP system (but may be used by others). Permission is +granted to copy, distribute and/or modify this document under the +terms of the GNU Free Documentation License, Version 1.1 or any later +version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts and no Back-Cover Texts. --- gnuserv-3.12.6.orig/debian/emacsen-install +++ gnuserv-3.12.6/debian/emacsen-install @@ -0,0 +1,54 @@ +#! /bin/sh -e +# /usr/lib/emacsen-common/packages/install/gnuserv + +# $Id: emacsen-install,v 1.3 2004/02/16 11:23:59 benj Exp $ + +# Written by Jim Van Zandt , borrowing heavily +# from the install scripts for gettext by Santiago Vila +# and octave by Dirk Eddelbuettel . + +FLAVOR=$1 +PACKAGE=gnuserv + +if [ ${FLAVOR} = emacs ]; then exit 0; fi + +echo install/${PACKAGE}: Handling install for emacsen flavor ${FLAVOR} + +#FLAVORTEST=`echo $FLAVOR | cut -c-6` +#if [ ${FLAVORTEST} = xemacs ] ; then +# SITEFLAG="-no-site-file" +#else +# SITEFLAG="--no-site-file" +#fi + +# Need to load gnuserv-compat because gnuserv.el will not +# byte-compile withou it. +FLAGS="${SITEFLAG} -q -batch -l path.el -l gnuserv-compat -f batch-byte-compile" + +ELDIR=/usr/share/emacs/site-lisp/${PACKAGE} +ELCDIR=/usr/share/${FLAVOR}/site-lisp/${PACKAGE} + +# Install-info-altdir does not actually exist. +# Maybe somebody will write it. +if test -x /usr/sbin/install-info-altdir; then + echo install/${PACKAGE}: install Info links for ${FLAVOR} + install-info-altdir --quiet --section "" "" --dirname=${FLAVOR} /usr/info/${PACKAGE}.info.gz +fi + +install -m 755 -d ${ELCDIR} +cd ${ELDIR} +FILES=`echo *.el` +cp ${FILES} ${ELCDIR} +cd ${ELCDIR} + +cat << EOF > path.el +(setq load-path (cons "." load-path) byte-compile-warnings nil) +EOF +log=`tempfile` +${FLAVOR} ${FLAGS} ${FILES} >>${log} 2>&1 +rm -f *.el path.el +mv ${log} ${ELCDIR}/install.log +chmod 644 ${ELCDIR}/install.log +echo "Compilation log saved to ${ELCDIR}/install.log" + +exit 0 --- gnuserv-3.12.6.orig/debian/emacsen-remove +++ gnuserv-3.12.6/debian/emacsen-remove @@ -0,0 +1,17 @@ +#!/bin/sh -e +# /usr/lib/emacsen-common/packages/remove/gnuserv + +# $Id: emacsen-remove,v 1.3 2004/02/16 11:23:59 benj Exp $ + +FLAVOR=$1 +PACKAGE=gnuserv + +if [ ${FLAVOR} != emacs ]; then + if test -x /usr/sbin/install-info-altdir; then + echo remove/${PACKAGE}: removing Info links for ${FLAVOR} + install-info-altdir --quiet --remove --dirname=${FLAVOR} /usr/info/gnuserv.info.gz + fi + + echo remove/${PACKAGE}: purging byte-compiled files for ${FLAVOR} + rm -rf /usr/share/${FLAVOR}/site-lisp/${PACKAGE} +fi --- gnuserv-3.12.6.orig/debian/emacsen-startup +++ gnuserv-3.12.6/debian/emacsen-startup @@ -0,0 +1,28 @@ +;; -*-emacs-lisp-*- +;; +;; Emacs startup file for the Debian GNU/Linux gnuserv package +;; +;; $Id: emacsen-startup,v 1.3 2004/02/16 11:23:59 benj Exp $ +;; +;; Originally contributed by Nils Naumann +;; Modified by Dirk Eddelbuettel +;; Adapted for dh-make by Jim Van Zandt + +;; The gnuserv package follows the Debian/GNU Linux 'emacsen' policy and +;; byte-compiles its elisp files for each 'emacs flavor' (emacs19, +;; xemacs19, emacs20, xemacs20...). The compiled code is then +;; installed in a subdirectory of the respective site-lisp directory. +;; We have to add this to the load-path: +(setq load-path (cons (concat "/usr/share/" + (symbol-name flavor) + "/site-lisp/gnuserv") load-path)) + +(autoload (quote gnuserv-start) "gnuserv-compat" + "Allow this Emacs process to be a server for client processes. +This starts a gnuserv communications subprocess through which +client \"editors\" (gnuclient and gnudoit) can send editing commands to +this Emacs job. See the gnuserv(1) manual page for more details. + +Prefix arg means just kill any existing server communications subprocess." + + t nil) --- gnuserv-3.12.6.orig/debian/postinst +++ gnuserv-3.12.6/debian/postinst @@ -0,0 +1,28 @@ +#!/bin/sh -e + +# $Id: postinst,v 1.3 2004/02/16 11:23:59 benj Exp $ + +# Borrowed from xterm postinst +trap "echo ;\ + echo 'Received signal. Aborting configuration of gnuserv package.';\ + echo ;\ + exit 1" 1 2 3 15 + +case $1 in + configure) + for i in gnuattach gnuclient gnudoit; do + update-alternatives --install /usr/bin/$i $i /usr/bin/$i.emacs 40 \ + --slave /usr/share/man/man1/$i.1.gz $i.1.gz \ + /usr/share/man/man1/$i.emacs.1.gz + done + ;; + + *) + ;; +esac + +# Clean up cruft left behind by the potato version. Kill this after +# woody is released. +rm -f /usr/share/emacs/site-lisp/gnuserv/gnuserv.elc + +#DEBHELPER# --- gnuserv-3.12.6.orig/debian/prerm +++ gnuserv-3.12.6/debian/prerm @@ -0,0 +1,15 @@ +#!/bin/sh -e + +# $Id: prerm,v 1.3 2004/02/16 11:23:59 benj Exp $ + +# Borrowed from xterm postinst +trap "echo ;\ + echo 'Received signal. Aborting configuration of gnuserv package.';\ + echo ;\ + exit 1" 1 2 3 15 + +for i in gnuattach gnuclient gnudoit; do + update-alternatives --remove $i /usr/bin/$i.emacs +done + +#DEBHELPER# --- gnuserv-3.12.6.orig/debian/rules +++ gnuserv-3.12.6/debian/rules @@ -0,0 +1,101 @@ +#!/usr/bin/make -f + +# $Id: rules,v 1.6 2004/02/16 12:05:03 benj Exp $ + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +# This is the debhelper compatability version to use. +export DH_COMPAT=2 + +lispdir = $(CURDIR)/debian/gnuserv/usr/share/emacs/site-lisp/gnuserv + + +configure: configure-stamp +configure-stamp: + dh_testdir + + ./configure --prefix=/usr --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info + + touch configure-stamp + +build: configure-stamp build-stamp +build-stamp: + dh_testdir + + $(MAKE) + + touch build-stamp + +clean: + dh_testdir + dh_testroot + rm -f build-stamp configure-stamp + + -$(MAKE) distclean + + dh_clean + +install: build + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs + +# Deal with brain-damaged Makefile's treatment of manpages + mkdir -p $(CURDIR)/debian/gnuserv/usr/man/man1 + + $(MAKE) install prefix=$(CURDIR)/debian/gnuserv/usr + cp devices.el gnuserv-compat.el gnuserv.el $(lispdir) + +# Install dtemacs, small wrapper to emacs & gnuclient + install -m 755 debian/dtemacs $(CURDIR)/debian/gnuserv/usr/bin + +# Now put the manpages where they belong + mv $(CURDIR)/debian/gnuserv/usr/man/man1/* \ + $(CURDIR)/debian/gnuserv/usr/share/man/man1 + cp $(CURDIR)/debian/dtemacs.1 \ + $(CURDIR)/debian/gnuserv/usr/share/man/man1 + rm -rf $(CURDIR)/debian/gnuserv/usr/man + +# Rename the programs for update-alternatives + for i in gnuattach gnuclient gnudoit; do\ + mv $(CURDIR)/debian/gnuserv/usr/bin/$$i \ + $(CURDIR)/debian/gnuserv/usr/bin/$${i}.emacs;\ + done + +# Prepare the manpages for update-alternatives. This can't be +# done in the loop above because they're all symlinks to +# the one gnuserv manpage. + for i in gnuattach gnuclient gnudoit; do\ + rm -f $(CURDIR)/debian/gnuserv/usr/share/man/man1/$${i}.1;\ + ln -sf gnuserv.1.gz $(CURDIR)/debian/gnuserv/usr/share/man/man1/$${i}.emacs.1.gz;\ + done + + +# Build architecture-independent files here. +binary-indep: build install +# We have nothing to do by default. + +# Build architecture-dependent files here. +binary-arch: build install + dh_testdir + dh_testroot +# dh_installdebconf + dh_installdocs +# dh_installexamples + dh_installemacsen --flavor=emacs21 + dh_installman + dh_installinfo + dh_installchangelogs ChangeLog + dh_strip + dh_compress + dh_fixperms + dh_installdeb + dh_shlibdeps + dh_gencontrol + dh_md5sums + dh_builddeb + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install configure