--- gnuserv-3.12.7.orig/debian/emacsen-remove +++ gnuserv-3.12.7/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.7.orig/debian/README.Debian +++ gnuserv-3.12.7/debian/README.Debian @@ -0,0 +1,21 @@ +Debian specific documentation for gnuserv: +----------------------------------------- + +In order to start the server automatically, place the following line +in your .emacs: + + (gnuserv-start) + +-- + +The gnuserv package also distributes a script named "dtemacs" which +will run check for an already running instance of emacs, and start one +if non is found. + +-- + +More information about gnuserv can be found at: + + http://www.emacswiki.org/cgi-bin/wiki/GnuClient + +- Mike O'Connor Wed Oct 18 01:14:47 EDT 2006 --- gnuserv-3.12.7.orig/debian/gnuserv.desktop +++ gnuserv-3.12.7/debian/gnuserv.desktop @@ -0,0 +1,12 @@ +[Desktop Entry] +Version=1.0 +Encoding=UTF-8 +Name=gnuclient +GenericName=gnuclient +Comment=Client for the GNU Emacs Text Editor +Exec=/usr/bin/gnuclient +TryExec=gnuclient +Terminal=false +Type=Application +Categories=Application;Utility;TextEditor; +MimeType=text/plain --- gnuserv-3.12.7.orig/debian/control +++ gnuserv-3.12.7/debian/control @@ -0,0 +1,22 @@ +Source: gnuserv +Section: editors +Priority: optional +Maintainer: Mike O'Connor +Build-Depends: debhelper (>> 5.0.0), dpatch, libxau-dev, libxt-dev, emacs21 | emacsen +Standards-Version: 3.7.2 + +Package: gnuserv +Architecture: any +Depends: emacs21 | emacsen, emacsen-common (>= 1.4.14), ${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.7.orig/debian/dtemacs +++ gnuserv-3.12.7/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.7.orig/debian/prerm +++ gnuserv-3.12.7/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.7.orig/debian/emacsen-install +++ gnuserv-3.12.7/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.7.orig/debian/postinst +++ gnuserv-3.12.7/debian/postinst @@ -0,0 +1,24 @@ +#!/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 + +#DEBHELPER# --- gnuserv-3.12.7.orig/debian/rules +++ gnuserv-3.12.7/debian/rules @@ -0,0 +1,104 @@ +#!/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. +include /usr/share/dpatch/dpatch.make + +export DH_COMPAT=5 + +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 --x-includes=/usr/include --x-libraries=/usr/lib + + touch configure-stamp + +build: build-stamp +build-stamp: patch-stamp configure-stamp + dh_testdir + + $(MAKE) + + touch build-stamp + +clean: unpatch + 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 + +# Install .desktop file + install -m 644 debian/gnuserv.desktop $(CURDIR)/debian/gnuserv/usr/share/applications + + + +# 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_installdocs + 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 --- gnuserv-3.12.7.orig/debian/dtemacs.1 +++ gnuserv-3.12.7/debian/dtemacs.1 @@ -0,0 +1,18 @@ +.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). It is placed +under public domain. --- gnuserv-3.12.7.orig/debian/patches/40-fix-x-includes.dpatch +++ gnuserv-3.12.7/debian/patches/40-fix-x-includes.dpatch @@ -0,0 +1,22 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 40-fix-x-includes.dpatch by > +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: No description. + +@DPATCH@ +diff -urNad gnuserv-3.12.7~/configure gnuserv-3.12.7/configure +--- gnuserv-3.12.7~/configure 2004-10-19 21:26:59.000000000 -0400 ++++ gnuserv-3.12.7/configure 2006-10-18 00:34:17.000000000 -0400 +@@ -1494,11 +1494,9 @@ + # bogus both because they are the default anyway, and because + # using them would break gcc on systems where it needs fixed includes. + case "$ac_im_incroot" in +- /usr/include) ;; + *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes="$ac_im_incroot" ;; + esac + case "$ac_im_usrlibdir" in +- /usr/lib | /lib) ;; + *) test -d "$ac_im_usrlibdir" && ac_x_libraries="$ac_im_usrlibdir" ;; + esac + fi --- gnuserv-3.12.7.orig/debian/patches/10-fix-bufffer-overflow.dpatch +++ gnuserv-3.12.7/debian/patches/10-fix-bufffer-overflow.dpatch @@ -0,0 +1,28 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 10-fix-bufffer-overflow.dpatch by > +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: No description. + +@DPATCH@ +diff -urNad gnuserv-3.12.7~/gnuserv.c gnuserv-3.12.7/gnuserv.c +--- gnuserv-3.12.7~/gnuserv.c 2002-09-13 08:19:16.000000000 -0400 ++++ gnuserv-3.12.7/gnuserv.c 2006-10-18 00:13:06.000000000 -0400 +@@ -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; --- gnuserv-3.12.7.orig/debian/patches/50-remove-strerror.dpatch +++ gnuserv-3.12.7/debian/patches/50-remove-strerror.dpatch @@ -0,0 +1,25 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 50-remove-strerror.dpatch by > +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: No description. + +@DPATCH@ +diff -urNad gnuserv-3.12.7~/sysfile.h gnuserv-3.12.7/sysfile.h +--- gnuserv-3.12.7~/sysfile.h 2004-10-19 04:51:09.000000000 -0400 ++++ gnuserv-3.12.7/sysfile.h 2006-10-18 01:42:57.000000000 -0400 +@@ -387,14 +387,6 @@ + int dup2 (int oldd, int newd); + #endif + +-#ifndef HAVE_STRERROR +-/* X11R6 defines strerror as a macro */ +-# ifdef strerror +-# undef strerror +-# endif +-const char *strerror (int); +-#endif +- + + + /* --- gnuserv-3.12.7.orig/debian/patches/30-fix-missing-xauth.dpatch +++ gnuserv-3.12.7/debian/patches/30-fix-missing-xauth.dpatch @@ -0,0 +1,993 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 30-fix-missing-xauth.dpatch by > +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: No description. + +@DPATCH@ +diff -urNad gnuserv-3.12.7~/gnuserv.1 gnuserv-3.12.7/gnuserv.1 +--- gnuserv-3.12.7~/gnuserv.1 2002-09-13 08:18:01.000000000 -0400 ++++ gnuserv-3.12.7/gnuserv.1 2006-10-18 00:14:26.000000000 -0400 +@@ -254,6 +254,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 +diff -urNad gnuserv-3.12.7~/gnuserv.c gnuserv-3.12.7/gnuserv.c +--- gnuserv-3.12.7~/gnuserv.c 2002-09-13 08:19:16.000000000 -0400 ++++ gnuserv-3.12.7/gnuserv.c 2006-10-18 00:14:26.000000000 -0400 +@@ -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 */ + +diff -urNad gnuserv-3.12.7~/gnuserv.c.orig gnuserv-3.12.7/gnuserv.c.orig +--- gnuserv-3.12.7~/gnuserv.c.orig 1969-12-31 19:00:00.000000000 -0500 ++++ gnuserv-3.12.7/gnuserv.c.orig 2002-09-13 08:19:16.000000000 -0400 +@@ -0,0 +1,943 @@ ++/* -*-C-*- ++ Server code for handling requests from clients and forwarding them ++ on to the XEmacs process. ++ ++ This file is part of XEmacs. ++ ++ 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' ++ 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 , ++ * Darrell Kindred and Arup Mukherjee . ++ * 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) ++ */ ++ ++#include "gnuserv.h" ++ ++char gnuserv_version[] = "gnuserv version" GNUSERV_VERSION; ++ ++ ++#ifdef USE_LITOUT ++#ifdef linux ++#include ++#else ++#include ++#endif ++#endif ++ ++#ifdef AIX ++#include ++#endif ++ ++#include ++#include ++#include ++#include ++ ++#ifdef HAVE_UNISTD_H ++#include ++#endif /* HAVE_UNISTD_H */ ++ ++#ifdef HAVE_STRING_H ++#include ++#endif /* HAVE_STRING_H */ ++ ++#if !defined(SYSV_IPC) && !defined(UNIX_DOMAIN_SOCKETS) && \ ++ !defined(INTERNET_DOMAIN_SOCKETS) ++main () ++{ ++ 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 */ ++ ++#ifdef SYSV_IPC ++ ++int ipc_qid = 0; /* ipc message queue id */ ++pid_t ipc_wpid = 0; /* watchdog task pid */ ++ ++ ++/* ++ ipc_exit -- clean up the queue id and queue, then kill the watchdog task ++ if it exists. exit with the given status. ++*/ ++void ++ipc_exit (int stat) ++{ ++ msgctl (ipc_qid,IPC_RMID,0); ++ ++ if (ipc_wpid != 0) ++ kill (ipc_wpid, SIGKILL); ++ ++ exit (stat); ++} /* ipc_exit */ ++ ++ ++/* ++ ipc_handle_signal -- catch the signal given and clean up. ++*/ ++void ++ipc_handle_signal(int sig) ++{ ++ ipc_exit (0); ++} /* ipc_handle_signal */ ++ ++ ++/* ++ ipc_spawn_watchdog -- spawn a watchdog task to clean up the message queue should the ++ server process die. ++*/ ++void ++ipc_spawn_watchdog (void) ++{ ++ if ((ipc_wpid = fork ()) == 0) ++ { /* child process */ ++ pid_t ppid = getppid (); /* parent's process id */ ++ ++ setpgrp(); /* gnu kills process group on exit */ ++ ++ while (1) ++ { ++ if (kill (ppid, 0) < 0) /* ppid is no longer valid, parent ++ may have died */ ++ { ++ ipc_exit (0); ++ } /* if */ ++ ++ sleep(10); /* have another go later */ ++ } /* while */ ++ } /* if */ ++ ++} /* ipc_spawn_watchdog */ ++ ++ ++/* ++ ipc_init -- initialize server, setting the global msqid that can be listened on. ++*/ ++void ++ipc_init (struct msgbuf **msgpp) ++{ ++ key_t key; /* messge key */ ++ char buf[GSERV_BUFSZ]; /* pathname for key */ ++ ++ sprintf (buf,"%s/gsrv%d",tmpdir,(int)geteuid ()); ++ creat (buf,0600); ++ key = ftok (buf,1); ++ ++ if ((ipc_qid = msgget (key,0600|IPC_CREAT)) == -1) ++ { ++ perror (progname); ++ fprintf (stderr, "%s: unable to create msg queue\n", progname); ++ ipc_exit (1); ++ } /* if */ ++ ++ ipc_spawn_watchdog (); ++ ++ signal (SIGTERM,ipc_handle_signal); ++ signal (SIGINT,ipc_handle_signal); ++ ++ if ((*msgpp = (struct msgbuf *) ++ malloc (sizeof **msgpp + GSERV_BUFSZ)) == NULL) ++ { ++ fprintf (stderr, ++ "%s: unable to allocate space for message buffer\n", progname); ++ ipc_exit(1); ++ } /* if */ ++} /* ipc_init */ ++ ++ ++/* ++ handle_ipc_request -- accept a request from a client, pass the request on ++ to the XEmacs process, then wait for its reply and ++ pass that on to the client. ++*/ ++void ++handle_ipc_request (struct msgbuf *msgp) ++{ ++ struct msqid_ds msg_st; /* message status */ ++ char buf[GSERV_BUFSZ]; ++ int len; /* length of message / read */ ++ int s, result_len; /* tag fields on the response from emacs */ ++ int offset = 0; ++ int total = 1; /* # bytes that will actually be sent off */ ++ ++ if ((len = msgrcv (ipc_qid, msgp, GSERV_BUFSZ - 1, 1, 0)) < 0) ++ { ++ perror (progname); ++ fprintf (stderr, "%s: unable to receive\n", progname); ++ ipc_exit (1); ++ } /* if */ ++ ++ msgctl (ipc_qid, IPC_STAT, &msg_st); ++ strncpy (buf, msgp->mtext, len); ++ buf[len] = '\0'; /* terminate */ ++ ++ printf ("%d %s", ipc_qid, buf); ++ fflush (stdout); ++ ++ /* now for the response from gnu */ ++ msgp->mtext[0] = '\0'; ++ ++#if 0 ++ if ((len = read(0,buf,GSERV_BUFSZ-1)) < 0) ++ { ++ perror (progname); ++ fprintf (stderr, "%s: unable to read\n", progname); ++ ipc_exit (1); ++ } /* if */ ++ ++ sscanf (buf, "%d:%[^\n]\n", &junk, msgp->mtext); ++#else ++ ++ /* read in "n/m:" (n=client fd, m=message length) */ ++ ++ while (offset < (GSERV_BUFSZ-1) && ++ ((len = read (0, buf + offset, 1)) > 0) && ++ buf[offset] != ':') ++ { ++ offset += len; ++ } ++ ++ if (len < 0) ++ { ++ perror (progname); ++ fprintf (stderr, "%s: unable to read\n", progname); ++ exit(1); ++ } ++ ++ /* parse the response from emacs, getting client fd & result length */ ++ buf[offset] = '\0'; ++ sscanf (buf, "%d/%d", &s, &result_len); ++ ++ while (result_len > 0) ++ { ++ if ((len = read(0, buf, min2 (result_len, GSERV_BUFSZ - 1))) < 0) ++ { ++ perror (progname); ++ fprintf (stderr, "%s: unable to read\n", progname); ++ exit (1); ++ } ++ ++ /* Send this string off, but only if we have enough space */ ++ ++ if (GSERV_BUFSZ > total) ++ { ++ if (total + len <= GSERV_BUFSZ) ++ buf[len] = 0; ++ else ++ buf[GSERV_BUFSZ - total] = 0; ++ ++ send_string(s,buf); ++ total += strlen(buf); ++ } ++ ++ result_len -= len; ++ } ++ ++ /* eat the newline */ ++ while ((len = read (0,buf,1)) == 0) ++ ; ++ if (len < 0) ++ { ++ perror(progname); ++ fprintf (stderr,"%s: unable to read\n", progname); ++ exit (1); ++ } ++ if (buf[0] != '\n') ++ { ++ fprintf (stderr,"%s: garbage after result [%c]\n", progname, buf[0]); ++ exit (1); ++ } ++#endif ++ ++ /* Send a response back to the client. */ ++ ++ msgp->mtype = msg_st.msg_lspid; ++ if (msgsnd (ipc_qid,msgp,strlen(msgp->mtext)+1,0) < 0) ++ perror ("msgsend(gnuserv)"); ++ ++} /* handle_ipc_request */ ++#endif /* SYSV_IPC */ ++ ++ ++#if defined(INTERNET_DOMAIN_SOCKETS) || defined(UNIX_DOMAIN_SOCKETS) ++/* ++ echo_request -- read request from a given socket descriptor, and send the information ++ to stdout (the gnu process). ++*/ ++static void ++echo_request (int s) ++{ ++ char buf[GSERV_BUFSZ]; ++ int len; ++ ++ printf("%d ",s); ++ ++ /* read until we get a newline or no characters */ ++ while ((len = recv(s,buf,GSERV_BUFSZ-1,0)) > 0) { ++ buf[len] = '\0'; ++ printf("%s",buf); ++ ++ if (buf[len-1] == EOT_CHR) { ++ fflush(stdout); ++ break; /* end of message */ ++ } ++ ++ } /* while */ ++ ++ if (len < 0) { ++ perror(progname); ++ fprintf(stderr,"%s: unable to recv\n",progname); ++ exit(1); ++ } /* if */ ++ ++} /* echo_request */ ++ ++ ++/* ++ handle_response -- accept a response from stdin (the gnu process) and pass the ++ information on to the relevant client. ++*/ ++static void ++handle_response (void) ++{ ++ char buf[GSERV_BUFSZ+1]; ++ int offset=0; ++ int s; ++ int len = 0; ++ int result_len; ++ ++ /* read in "n/m:" (n=client fd, m=message length) */ ++ while (offset < GSERV_BUFSZ && ++ ((len = read(0,buf+offset,1)) > 0) && ++ buf[offset] != ':') { ++ offset += len; ++ } ++ ++ if (len < 0) { ++ perror(progname); ++ fprintf(stderr,"%s: unable to read\n",progname); ++ exit(1); ++ } ++ ++ /* parse the response from emacs, getting client fd & result length */ ++ buf[offset] = '\0'; ++ sscanf(buf,"%d/%d", &s, &result_len); ++ ++ while (result_len > 0) { ++ if ((len = read(0,buf,min2(result_len,GSERV_BUFSZ))) < 0) { ++ perror(progname); ++ fprintf(stderr,"%s: unable to read\n",progname); ++ exit(1); ++ } ++ buf[len] = '\0'; ++ send_string(s,buf); ++ result_len -= len; ++ } ++ ++ /* eat the newline */ ++ while ((len = read(0,buf,1)) == 0) ++ ; ++ if (len < 0) ++ { ++ perror(progname); ++ fprintf(stderr,"%s: unable to read\n",progname); ++ exit(1); ++ } ++ if (buf[0] != '\n') ++ { ++ fprintf(stderr,"%s: garbage after result\n",progname); ++ exit(1); ++ } ++ /* send the newline */ ++ buf[1] = '\0'; ++ send_string(s,buf); ++ close(s); ++ ++} /* handle_response */ ++#endif /* INTERNET_DOMAIN_SOCKETS || UNIX_DOMAIN_SOCKETS */ ++ ++ ++#ifdef INTERNET_DOMAIN_SOCKETS ++struct entry { ++ unsigned long host_addr; ++ struct entry *next; ++}; ++ ++struct entry *permitted_hosts[TABLE_SIZE]; ++ ++#ifdef AUTH_MAGIC_COOKIE ++# include ++# include ++ ++static Xauth *server_xauth = NULL; ++#endif ++ ++static int ++timed_read (int fd, char *buf, int max, int timeout, int one_line) ++{ ++ fd_set rmask; ++ struct timeval tv; /* = {timeout, 0}; */ ++ char c = 0; ++ int nbytes = 0; ++ int r; ++ ++ tv.tv_sec = timeout; ++ tv.tv_usec = 0; ++ ++ FD_ZERO(&rmask); ++ FD_SET(fd, &rmask); ++ ++ do ++ { ++ r = select(fd + 1, &rmask, NULL, NULL, &tv); ++ ++ if (r > 0) ++ { ++ if (read (fd, &c, 1) == 1 ) ++ { ++ *buf++ = c; ++ ++nbytes; ++ } ++ else ++ { ++ printf ("read error on socket\004\n"); ++ return -1; ++ } ++ } ++ else if (r == 0) ++ { ++ printf ("read timed out\004\n"); ++ return -1; ++ } ++ else ++ { ++ printf ("error in select\004\n"); ++ return -1; ++ } ++ } while ((nbytes < max) && !(one_line && (c == '\n'))); ++ ++ --buf; ++ if (one_line && *buf == '\n') ++ { ++ *buf = 0; ++ } ++ ++ return nbytes; ++} ++ ++ ++ ++/* ++ permitted -- return whether a given host is allowed to connect to the server. ++*/ ++static int ++permitted (unsigned long host_addr, int fd) ++{ ++ int key; ++ struct entry *entry; ++ ++ char auth_protocol[128]; ++ char buf[1024]; ++ int auth_data_len; ++ ++ if (fd > 0) ++ { ++ /* we are checking permission on a real connection */ ++ ++ /* Read auth protocol name */ ++ ++ if (timed_read(fd, auth_protocol, AUTH_NAMESZ, AUTH_TIMEOUT, 1) <= 0) ++ return FALSE; ++ ++ if (strcmp (auth_protocol, DEFAUTH_NAME) && ++ strcmp (auth_protocol, MCOOKIE_NAME)) ++ { ++ printf ("authentication protocol (%s) from client is invalid...\n", ++ auth_protocol); ++ printf ("... Was the client an old version of gnuclient/gnudoit?\004\n"); ++ ++ return FALSE; ++ } ++ ++ if (!strcmp(auth_protocol, MCOOKIE_NAME)) ++ { ++ ++ /* ++ * doing magic cookie auth ++ */ ++ ++ if (timed_read (fd, buf, 10, AUTH_TIMEOUT, 1) <= 0) ++ return FALSE; ++ ++ auth_data_len = atoi (buf); ++ ++ if (auth_data_len <= 0 || auth_data_len > (int) sizeof (buf)) ++ { ++ return FALSE; ++ } ++ ++ if (timed_read (fd, buf, auth_data_len, AUTH_TIMEOUT, 0) != ++ auth_data_len) ++ return FALSE; ++ ++#ifdef AUTH_MAGIC_COOKIE ++ if (server_xauth && server_xauth->data) ++ { ++ /* Do a compare without comprising info about ++ the size of the cookie */ ++ int auth_data_pos; ++ int auth_mismatches = ++ ( auth_data_len ^ ++ server_xauth->data_length ); ++ ++ for(auth_data_pos = 0; auth_data_pos < auth_data_len; ++ ++auth_data_pos) ++ auth_mismatches |= ++ ( buf[auth_data_pos] ^ ++ server_xauth->data[auth_data_pos % ++ server_xauth->data_length]); ++ ++ if (auth_mismatches == 0) ++ return TRUE; ++ ++ for(;rand() % 1000;); ++ } ++ ++#else ++ printf ("client tried Xauth, but server is not compiled with Xauth\n"); ++#endif ++ ++ /* ++ * auth failed, but allow this to fall through to the GNU_SECURE ++ * protocol.... ++ */ ++ ++ printf ("Xauth authentication failed, trying GNU_SECURE auth...\004\n"); ++ ++ } ++ ++ /* Other auth protocols go here, and should execute only if the ++ * auth_protocol name matches. ++ */ ++ ++ } ++ ++ ++ /* Now, try the old GNU_SECURE stuff... */ ++ ++ /* First find the hash key */ ++ key = HASH(host_addr) % TABLE_SIZE; ++ ++ /* Now check the chain for that hash key */ ++ for(entry=permitted_hosts[key]; entry != NULL; entry=entry->next) ++ if (host_addr == entry->host_addr) ++ return(TRUE); ++ ++ return(FALSE); ++ ++} /* permitted */ ++ ++ ++/* ++ add_host -- add the given host to the list of permitted hosts, provided it isn't ++ already there. ++*/ ++static void ++add_host (unsigned long host_addr) ++{ ++ int key; ++ struct entry *new_entry; ++ ++ if (!permitted(host_addr, -1)) ++ { ++ if ((new_entry = (struct entry *) malloc(sizeof(struct entry))) == NULL) { ++ fprintf(stderr,"%s: unable to malloc space for permitted host entry\n", ++ progname); ++ exit(1); ++ } /* if */ ++ ++ new_entry->host_addr = host_addr; ++ key = HASH(host_addr) % TABLE_SIZE; ++ new_entry->next = permitted_hosts[key]; ++ permitted_hosts[key] = new_entry; ++ } /* if */ ++ ++} /* add_host */ ++ ++ ++/* ++ setup_table -- initialize the table of hosts allowed to contact the server, ++ by reading from the file specified by the GNU_SECURE ++ environment variable ++ Put in the local machine, and, if a security file is specifed, ++ add each host that is named in the file. ++ Return the number of hosts added. ++*/ ++static int ++setup_table (void) ++{ ++ FILE *host_file; ++ char *file_name; ++ char hostname[HOSTNAMSZ]; ++ unsigned int host_addr; ++ int i, hosts=0; ++ ++ /* Make sure every entry is null */ ++ for (i=0; is_port; ++ ++ /* Create the listen socket. */ ++ if ((ls = socket (AF_INET,SOCK_STREAM, 0)) == -1) ++ { ++ perror(progname); ++ fprintf(stderr,"%s: unable to create socket\n",progname); ++ exit(1); ++ } /* if */ ++ ++ /* Bind the listen address to the socket. */ ++ if (bind(ls,(struct sockaddr *) &server,sizeof(struct sockaddr_in)) == -1) ++ { ++ perror(progname); ++ fprintf(stderr,"%s: unable to bind socket\n",progname); ++ exit(1); ++ } /* if */ ++ ++ /* Initiate the listen on the socket so remote users ++ * can connect. ++ */ ++ if (listen(ls,20) == -1) ++ { ++ perror(progname); ++ fprintf(stderr,"%s: unable to listen\n",progname); ++ exit(1); ++ } /* if */ ++ ++ return(ls); ++ ++} /* internet_init */ ++ ++ ++/* ++ handle_internet_request -- accept a request from a client and send the information ++ to stdout (the gnu process). ++*/ ++static void ++handle_internet_request (int ls) ++{ ++ int s; ++ socklen_t addrlen = sizeof (struct sockaddr_in); ++ struct sockaddr_in peer; /* for peer socket address */ ++ ++ memset (&peer, '\0', sizeof (peer)); ++ ++ if ((s = accept(ls,(struct sockaddr *)&peer, &addrlen)) == -1) ++ { ++ perror(progname); ++ fprintf(stderr,"%s: unable to accept\n",progname); ++ exit(1); ++ } /* if */ ++ ++ /* Check that access is allowed - if not return crud to the client */ ++ if (!permitted(peer.sin_addr.s_addr, s)) ++ { ++ send_string(s,"gnudoit: Connection refused\ngnudoit: unable to connect to remote"); ++ close(s); ++ ++ printf("Refused connection from %s\004\n", inet_ntoa(peer.sin_addr)); ++ return; ++ } /* if */ ++ ++ echo_request(s); ++ ++} /* handle_internet_request */ ++#endif /* INTERNET_DOMAIN_SOCKETS */ ++ ++ ++#ifdef UNIX_DOMAIN_SOCKETS ++/* ++ unix_init -- initialize server, returning an unix-domain socket that can ++ be listened on. ++*/ ++static int ++unix_init (void) ++{ ++ int ls; /* socket descriptor */ ++ struct sockaddr_un server; /* unix socket address */ ++ socklen_t bindlen; ++ ++ if ((ls = socket(AF_UNIX,SOCK_STREAM, 0)) < 0) ++ { ++ perror(progname); ++ fprintf(stderr,"%s: unable to create socket\n",progname); ++ exit(1); ++ } /* if */ ++ ++ /* Set up address structure for the listen socket. */ ++#ifdef HIDE_UNIX_SOCKET ++ sprintf(server.sun_path,"%s/gsrvdir%d",tmpdir,(int)geteuid()); ++ if (mkdir(server.sun_path, 0700) < 0) ++ { ++ /* assume it already exists, and try to set perms */ ++ if (chmod(server.sun_path, 0700) < 0) ++ { ++ perror(progname); ++ fprintf(stderr,"%s: can't set permissions on %s\n", ++ progname, server.sun_path); ++ exit(1); ++ } ++ } ++ strcat(server.sun_path,"/gsrv"); ++ unlink(server.sun_path); /* remove old file if it exists */ ++#else /* HIDE_UNIX_SOCKET */ ++ sprintf(server.sun_path,"%s/gsrv%d",tmpdir,(int)geteuid()); ++ unlink(server.sun_path); /* remove old file if it exists */ ++#endif /* HIDE_UNIX_SOCKET */ ++ ++ server.sun_family = AF_UNIX; ++#ifdef HAVE_SOCKADDR_SUN_LEN ++ /* See W. R. Stevens "Advanced Programming in the Unix Environment" ++ p. 502 */ ++ bindlen = (sizeof (server.sun_len) + sizeof (server.sun_family) ++ + strlen (server.sun_path) + 1); ++ server.sun_len = bindlen; ++#else ++ bindlen = strlen (server.sun_path) + sizeof (server.sun_family); ++#endif ++ ++ if (bind(ls,(struct sockaddr *)&server,bindlen) < 0) ++ { ++ perror(progname); ++ fprintf(stderr,"%s: unable to bind socket\n",progname); ++ exit(1); ++ } /* if */ ++ ++ chmod(server.sun_path,0700); /* only this user can send commands */ ++ ++ if (listen(ls,20) < 0) { ++ perror(progname); ++ fprintf(stderr,"%s: unable to listen\n",progname); ++ exit(1); ++ } /* if */ ++ ++ /* #### there are also better ways of dealing with this when ++ sigvec() is present. */ ++#if defined (HAVE_SIGPROCMASK) ++ { ++ sigset_t _mask; ++ sigemptyset (&_mask); ++ sigaddset (&_mask, SIGPIPE); ++ sigprocmask (SIG_BLOCK, &_mask, NULL); ++ } ++#else ++ signal(SIGPIPE,SIG_IGN); /* in case user kills client */ ++#endif ++ ++ return(ls); ++ ++} /* unix_init */ ++ ++ ++/* ++ handle_unix_request -- accept a request from a client and send the information ++ to stdout (the gnu process). ++*/ ++static void ++handle_unix_request (int ls) ++{ ++ int s; ++ socklen_t len = sizeof (struct sockaddr_un); ++ struct sockaddr_un server; /* for unix socket address */ ++ ++ server.sun_family = AF_UNIX; ++ ++ if ((s = accept(ls,(struct sockaddr *)&server, &len)) < 0) ++ { ++ perror(progname); ++ fprintf(stderr,"%s: unable to accept\n",progname); ++ } /* if */ ++ ++ echo_request(s); ++ ++} /* handle_unix_request */ ++#endif /* UNIX_DOMAIN_SOCKETS */ ++ ++ ++int ++main (int argc, char *argv[]) ++{ ++ int chan; /* temporary channel number */ ++#ifdef SYSV_IPC ++ struct msgbuf *msgp; /* message buffer */ ++#else ++ int ils = -1; /* internet domain listen socket */ ++ int uls = -1; /* unix domain listen socket */ ++#endif /* SYSV_IPC */ ++ ++ progname = argv[0]; ++ ++ for(chan=3; chan < _NFILE; close(chan++)) /* close unwanted channels */ ++ ; ++ ++ ++#ifdef WIN32_NATIVE ++ tmpdir = getenv ("TEMP"); ++ if (!tmpdir) ++ tmpdir = getenv ("TMP"); ++ if (!tmpdir) ++ tmpdir = "c:\\"; ++#else ++#ifdef USE_TMPDIR ++ tmpdir = getenv ("TMPDIR"); ++#endif ++ if (!tmpdir) ++ tmpdir = "/tmp"; ++#endif /* WIN32_NATIVE */ ++#ifdef USE_LITOUT ++ { ++ /* this is to allow ^D to pass to emacs */ ++ int d = LLITOUT; ++ (void) ioctl(fileno(stdout), TIOCLBIS, &d); ++ } ++#endif ++ ++#ifdef SYSV_IPC ++ ipc_init(&msgp); /* get a msqid to listen on, and a message buffer */ ++#endif /* SYSV_IPC */ ++ ++#ifdef INTERNET_DOMAIN_SOCKETS ++ ils = internet_init(); /* get an internet domain socket to listen on */ ++#endif /* INTERNET_DOMAIN_SOCKETS */ ++ ++#ifdef UNIX_DOMAIN_SOCKETS ++ uls = unix_init(); /* get a unix domain socket to listen on */ ++#endif /* UNIX_DOMAIN_SOCKETS */ ++ ++ while (1) { ++#ifdef SYSV_IPC ++ handle_ipc_request(msgp); ++#else /* NOT SYSV_IPC */ ++ fd_set rmask; ++ FD_ZERO(&rmask); ++ FD_SET(fileno(stdin), &rmask); ++ if (uls >= 0) ++ FD_SET(uls, &rmask); ++ if (ils >= 0) ++ FD_SET(ils, &rmask); ++ ++ if (select(max2(fileno(stdin),max2(uls,ils)) + 1, &rmask, ++ (fd_set *)NULL, (fd_set *)NULL, (struct timeval *)NULL) < 0) ++ { ++ perror(progname); ++ fprintf(stderr,"%s: unable to select\n",progname); ++ return 1; ++ } /* if */ ++ ++#ifdef UNIX_DOMAIN_SOCKETS ++ if (uls > 0 && FD_ISSET(uls, &rmask)) ++ handle_unix_request(uls); ++#endif ++ ++#ifdef INTERNET_DOMAIN_SOCKETS ++ if (ils > 0 && FD_ISSET(ils, &rmask)) ++ handle_internet_request(ils); ++#endif /* INTERNET_DOMAIN_SOCKETS */ ++ ++ if (FD_ISSET(fileno(stdin), &rmask)) /* from stdin (gnu process) */ ++ handle_response(); ++#endif /* NOT SYSV_IPC */ ++ } /* while (1) */ ++} /* main */ ++ ++#endif /* SYSV_IPC || UNIX_DOMAIN_SOCKETS || INTERNET_DOMAIN_SOCKETS */ --- gnuserv-3.12.7.orig/debian/patches/20-remove-nw.dpatch +++ gnuserv-3.12.7/debian/patches/20-remove-nw.dpatch @@ -0,0 +1,400 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 20-remove-nw.dpatch by > +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: No description. + +@DPATCH@ +diff -urNad gnuserv-3.12.7~/gnuclient.c gnuserv-3.12.7/gnuclient.c +--- gnuserv-3.12.7~/gnuclient.c 2002-09-15 06:14:37.000000000 -0400 ++++ gnuserv-3.12.7/gnuclient.c 2006-10-18 00:13:56.000000000 -0400 +@@ -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); +diff -urNad gnuserv-3.12.7~/gnuserv.1 gnuserv-3.12.7/gnuserv.1 +--- gnuserv-3.12.7~/gnuserv.1 2002-09-13 08:18:01.000000000 -0400 ++++ gnuserv-3.12.7/gnuserv.1 2006-10-18 00:13:56.000000000 -0400 +@@ -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 + +diff -urNad gnuserv-3.12.7~/gnuserv.1.orig gnuserv-3.12.7/gnuserv.1.orig +--- gnuserv-3.12.7~/gnuserv.1.orig 1969-12-31 19:00:00.000000000 -0500 ++++ gnuserv-3.12.7/gnuserv.1.orig 2002-09-13 08:18:01.000000000 -0400 +@@ -0,0 +1,296 @@ ++.TH GNUSERV 1 "" "XEmacs Server" ++.UC 4 ++.SH NAME ++gnuserv, gnuclient \- Server and Clients for XEmacs ++.SH SYNOPSIS ++.B gnuclient ++[-nw] [-display display] [-q] [-v] [-l library] [-batch] [-f function] [-eval form] ++[-h hostname] [-p port] [-r remote-pathname] [[+line] file] ... ++.br ++.B gnudoit [-q] ++form ++.br ++.B gnuserv ++.br ++.B gnuattach ++Removed as of gnuserv 3.x ++.SH DESCRIPTION ++ ++.PP ++\fIgnuclient\fP allows the user to request a running XEmacs process to ++edit the named files or directories and/or evaluate lisp forms. ++Depending on your environment, it can be an X frame or a TTY frame. ++One typical use for this is with a dialup connection to a machine on ++which an XEmacs process is currently running. ++.PP ++\fIgnudoit\fP is a shell script frontend to ``gnuclient -batch -eval form''. ++Its use is deprecated. Try to get used to calling gnuclient directly. ++.PP ++\fIgnuserv\fP is the server program that is set running by XEmacs to ++handle all incoming and outgoing requests. It is not usually invoked ++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. ++.SH OPTIONS ++.PP ++\fIgnuclient\fP supports as much of the command line options of Emacs as ++makes sense in this context. In addition it adds a few of its own. ++.br ++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 ++specified X device. ++.TP 8 ++.BI \-q ++This option informs \fIgnuclient\fP to exit once connection has been ++made with the XEmacs process. Normally \fIgnuclient\fP waits until ++all of the files on the command line have been finished with (their ++buffers killed) by the XEmacs process, and all the forms have been ++evaluated. ++.TP 8 ++.BI \-v ++When this option is specified \fIgnuclient\fP will request for the ++specified files to be viewed instead of edited. ++.TP 8 ++.BI \-l " library" ++Tell Emacs to load the specified library. ++.TP 8 ++.BI \-batch ++Tell Emacs not to open any frames. Just load libraries and evaluate ++lisp code. If no files to execute, functions to call or forms to eval ++are given using the ++.BR \-l , ++.BR \-f , ++or ++.B \-eval ++options, then forms to eval are read from STDIN. ++.TP 8 ++.BI \-f " function," ++Make Emacs execute the lisp function. ++.TP 8 ++.BI \-eval " form" ++Make Emacs execute the lisp form. ++.TP 8 ++.BI \-h " hostname" ++Used only with Internet-domain sockets, this option specifies the host ++machine which should be running \fIgnuserv\fP. If this option is not ++specified then the value of the environment variable GNU_HOST is used ++if set. If no hostname is specified, and the GNU_HOST variable is not ++set, an internet connection will not be attempted. N\.B.: ++\fIgnuserv\fP does NOT allow internet connections unless XAUTH ++authentication is used or the GNU_SECURE variable has been specified ++and points at a file listing all trusted hosts. (See SECURITY below.) ++ ++.br ++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. ++ ++.br ++Note also that a hostname of \fBunix\fP 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. ++.TP 8 ++.BI \-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. ++.br ++Note that since \fIgnuserv\fP doesn't allow command-line options, the port for ++it will have to be specified via one of the alternative methods. ++.TP 8 ++.BI \-r " pathname" ++Used only with Internet-domain sockets, the pathname argument may be ++needed to inform XEmacs how to reach the root directory of a remote ++machine. \fIgnuclient\fP 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. ++.TP 8 ++.BI "[+n] file" ++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. ++The cursor is put at line number 'n' if specified. ++ ++.SH SETUP ++\fIgnuserv\fP is packaged standardly with recent versions of XEmacs. ++Therefore, you should be able to start the server simply by evaluating ++the XEmacs Lisp form (gnuserv-start), or equivalently by typing ++`M-x gnuserv-start'. ++ ++.SH CONFIGURATION ++The behavior of this suite of program is mostly controlled on the lisp ++side in Emacs and its behavior can be customized to a large extent. ++Type `M-x customize-group RET gnuserv RET' for easy access. More ++documentation can be found in the file `gnuserv.el' ++ ++.SH EXAMPLE ++.RS 4 ++gnuclient -q -f mh-smail ++.br ++gnuclient -h cuckoo -r /ange@otter: /tmp/* ++.br ++gnuclient -nw ../src/listproc.c ++.RE ++.br ++ ++.br ++More examples and sample wrapper scripts are provided in the ++etc/gnuserv directory of the Emacs installation. ++ ++ ++.SH SYSV IPC ++SysV IPC is used to communicate between \fIgnuclient\fP and ++\fIgnuserv\fP 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. ++.SH UNIX-DOMAIN SOCKETS ++A Unix-domain socket is used to communicate between \fIgnuclient\fP ++and \fIgnuserv\fP if the symbol UNIX_DOMAIN_SOCKETS is defined at the ++top of gnuserv.h. A file called /tmp/gsrvdir????/gsrv is created for ++communication. If the symbol USE_TMPDIR is set at the top of gnuserv.h, ++$TMPDIR, when set, is used instead of /tmp. If that file is deleted, ++or TMPDIR has different values for the server and the client, communication ++between server and client will fail. Only the user running gnuserv will be ++able to connect to the socket. ++.SH INTERNET-DOMAIN SOCKETS ++Internet-domain sockets are used to communicate between ++\fIgnuclient\fP and \fIgnuserv\fP 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. If a hostname is specified via -h or via the GNU_HOST ++environment variable, \fIgnuclient\fP establish connections using an ++internet domain socket. If not, a local connection is attempted via ++either a unix-domain socket or SYSV IPC. ++.SH 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. Currently, two authentication protocols are supported to provide ++this: MIT-MAGIC-COOKIE-1 (based on the X11 xauth(1) program) and a ++simple host-based access control mechanism, hereafter called ++GNUSERV-1. The GNUSERV-1 protocol is always available, whereas support ++for MIT-MAGIC-COOKIE-1 may or may not have been enabled (via a #define ++at the top of gnuserv.h) at compile-time. ++.PP ++\fIgnuserv\fP, using GNUSERV-1, performs a limited form of access ++control at the machine level. By default no internet-domain socket is ++opened. If the variable GNU_SECURE can be found in \fIgnuserv\fP'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. Connections from any other host will be ++rejected. Even the machine on which \fIgnuserv\fP is running is not ++permitted to make connections via the internet socket unless its ++hostname is explicitly specified in this file. Note that a host may ++be either a numeric IP address or a hostname, and that ++.I any ++user on an approved host may connect to your gnuserv and execute arbitrary ++elisp (e.g., delete all your files). ++If this file contains a lot of ++hostnames then the server may take quite a time to start up. ++.PP ++When the MIT-MAGIC-COOKIE-1 protocol is enabled, an internet socket ++\fIis\fP opened by default. \fIgnuserv\fP will accept a connection from ++any host, and will wait for a "magic cookie" (essentially, a password) ++to be presented by the client. If the client doesn't present the ++cookie, or if the cookie is wrong, the authentication of the client is ++considered to have failed. At this point. \fIgnuserv\fP falls back to ++the GNUSERV-1 protocol; If the client is calling from a host listed in ++the GNU_SECURE file, the connection will be accepted, otherwise it ++will be rejected. ++.TP 4 ++.I Using MIT-MAGIC-COOKIE-1 authentication ++When the \fIgnuserv\fP server is started, it looks for a cookie ++defined for display 999 on the machine where it is running. If the ++cookie is found, it will be stored for use as the authentication ++cookie. These cookies are defined in an authorization file (usually ++~/.Xauthority) that is manipulated by the X11 xauth(1) program. For ++example, a machine "kali" which runs an emacs that invokes ++\fIgnuserv\fP should respond as follows (at the shell prompt) when set ++up correctly. ++.PP ++.RS 8 ++kali% xauth list ++.br ++GS65.SP.CS.CMU.EDU:0 MIT-MAGIC-COOKIE-1 11223344 ++.br ++KALI.FTM.CS.CMU.EDU:999 MIT-MAGIC-COOKIE-1 1234 ++.RE ++.PP ++.RS 4 ++In the above case, the authorization file defines two cookies. The ++second one, defined for screen 999 on the server machine, is used for ++gnuserv authentication. ++.PP ++On the client machine's side, the authorization file must contain an ++identical line, specifying the ++.I server's ++cookie. In other words, on a machine "foobar" which wishes to connect ++to "kali," the `xauth list' output should contain the line: ++.PP ++.RS 4 ++KALI.FTM.CS.CMU.EDU:999 MIT-MAGIC-COOKIE-1 1234 ++.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 ++name of the authorization protocol (i.e.`MIT-MAGIC-COOKIE-1') ++.I is ++significant! ++.RE ++ ++ ++.SH ENVIRONMENT ++.PP ++.TP 8 ++.B DISPLAY ++Default X device to put edit frame. ++ ++.SH FILES ++.PP ++.TP 8 ++.B /tmp/gsrv??? ++(SYSV_IPC only) ++.TP 8 ++.B /tmp/gsrvdir???/gsrv ++(unix domain sockets only) ++.TP 8 ++.B ~/.emacs ++XEmacs customization file, see xemacs(1). ++.SH SEE ALSO ++.PP ++.TP 8 ++xauth(1X11), Xsecurity(1X11), gnuserv.el ++.SH BUGS ++.PP ++NULs occurring in result strings don't get passed back to gnudoit properly. ++ ++.SH 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. Various modifications from Bob Weiner (weiner@mot.com), ++Darrell Kindred (dkindred@cmu.edu), Arup Mukherjee (arup@cmu.edu), Ben ++Wing (ben@xemacs.org) and Hrvoje Niksic (hniksic@xemacs.org). --- gnuserv-3.12.7.orig/debian/patches/00list +++ gnuserv-3.12.7/debian/patches/00list @@ -0,0 +1,6 @@ +10-fix-bufffer-overflow +20-remove-nw +25-alter-manpage +30-fix-missing-xauth +40-fix-x-includes +50-remove-strerror --- gnuserv-3.12.7.orig/debian/patches/25-alter-manpage.dpatch +++ gnuserv-3.12.7/debian/patches/25-alter-manpage.dpatch @@ -0,0 +1,80 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 25-alter-manpage.dpatch by > +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: No description. + +@DPATCH@ +diff -urNad gnuserv-3.12.7~/gnuserv.1 gnuserv-3.12.7/gnuserv.1 +--- gnuserv-3.12.7~/gnuserv.1 2006-10-18 01:31:26.000000000 -0400 ++++ gnuserv-3.12.7/gnuserv.1 2006-10-18 01:35:35.000000000 -0400 +@@ -1,7 +1,7 @@ + .TH GNUSERV 1 "" "XEmacs Server" + .UC 4 + .SH NAME +-gnuserv, gnuclient \- Server and Clients for XEmacs ++gnuserv, gnuclient \- Server and Clients for Emacs and XEmacs + .SH SYNOPSIS + .B gnuclient + [-display display] [-q] [-v] [-l library] [-batch] [-f function] [-eval form] +@@ -17,19 +17,19 @@ + .SH DESCRIPTION + + .PP +-\fIgnuclient\fP allows the user to request a running XEmacs process to +-edit the named files or directories and/or evaluate lisp forms. +-Depending on your environment, it can be an X frame or a TTY frame. +-One typical use for this is with a dialup connection to a machine on +-which an XEmacs process is currently running. ++\fIgnuclient\fP allows the user to request a running Emacs or XEmacs process to ++edit the named files or directories and/or evaluate lisp forms. Depending on ++your environment, it can be an X frame or a TTY frame. One typical use for ++this is with a dialup connection to a machine on which an Emacs or XEmacs ++process is currently running. + .PP + \fIgnudoit\fP is a shell script frontend to ``gnuclient -batch -eval form''. + Its use is deprecated. Try to get used to calling gnuclient directly. + .PP +-\fIgnuserv\fP is the server program that is set running by XEmacs to +-handle all incoming and outgoing requests. It is not usually invoked +-directly, but is started from XEmacs by loading the \fIgnuserv\fP +-package and evaluating the Lisp form (gnuserv-start). ++\fIgnuserv\fP is the server program that is set running by Emacs or XEmacs to ++handle all incoming and outgoing requests. It is not usually invoked directly, ++but is started from Emacs or XEmacs by loading the \fIgnuserv\fP package and ++evaluating the Lisp form (gnuserv-start). + .PP + \fIgnuattach\fP no longer exists\fP. + .SH OPTIONS +@@ -42,7 +42,7 @@ + .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 ++then gnuclient will tell Emacs to edit files in a frame on the + specified X device. + .TP 8 + .BI \-q +@@ -109,7 +109,7 @@ + .TP 8 + .BI \-r " pathname" + Used only with Internet-domain sockets, the pathname argument may be +-needed to inform XEmacs how to reach the root directory of a remote ++needed to inform Emacs how to reach the root directory of a remote + machine. \fIgnuclient\fP 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 +@@ -270,11 +270,11 @@ + (unix domain sockets only) + .TP 8 + .B ~/.emacs +-XEmacs customization file, see xemacs(1). ++Emacs customization file, see emacs(1) and xemacs(1). + .SH SEE ALSO + .PP + .TP 8 +-xauth(1X11), Xsecurity(1X11), gnuserv.el ++dtemacs(1), xauth(1X11), Xsecurity(1X11), gnuserv.el + .SH BUGS + .PP + NULs occurring in result strings don't get passed back to gnudoit properly. --- gnuserv-3.12.7.orig/debian/emacsen-startup +++ gnuserv-3.12.7/debian/emacsen-startup @@ -0,0 +1,35 @@ +;; -*-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 +;; Modified by Benjamin Drieu + +;; 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: + +(let ((gnuserv-path (concat "/usr/share/" + (symbol-name flavor) + "/site-lisp/gnuserv"))) + (if (fboundp 'debian-pkg-add-load-path-item) + (debian-pkg-add-load-path-item gnuserv-path) + (setq load-path (cons gnuserv-path 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) + +(set-variable 'gnuserv-program "/usr/bin/gnuserv") --- gnuserv-3.12.7.orig/debian/changelog +++ gnuserv-3.12.7/debian/changelog @@ -0,0 +1,220 @@ +gnuserv (3.12.7-3) unstable; urgency=low + + * New Maintainer (Closes: 393257) + * Change packaging to dpatch + * Added patch for ./configure from NMU that fixes missing X includes + (Thanks: Stelios Bounanos) (Closes: 367983) + * Remove woody/potato specific code in .postinst + * Remove GFDL text from copyright, as no works in the package are + distributed under that license + * Updated Standards-Version to 3.7.2 + * Added a README.Debian documenting how to start gnuserv (Closes: 323567) + * Altered gnuserv(1) manpage to not be XEmacs specific (Closes: 379139, 368386) + * Added patch to remove strerror (Thanks Andreas Jochens) (Closes: 363277) + + -- Mike O'Connor Wed, 18 Oct 2006 01:43:49 -0400 + +gnuserv (3.12.7-2.3) unstable; urgency=low + + * Orphan package + + -- Debian QA Group Sun, 15 Oct 2006 21:36:44 +0200 + +gnuserv (3.12.7-2.2) unstable; urgency=low + + * NMU + * Rebuilt with Unix Domain sockets, Internet Domain sockets or System V IPC + (Closes: #367983) + + -- Julien Danjou Sun, 21 May 2006 22:03:29 +0200 + +gnuserv (3.12.7-2.1) unstable; urgency=low + + * NMU + * Remove declaration of strerror from sysfile.h, fixing FTBFS + (Closes: #363277) + + -- Julien Danjou Wed, 17 May 2006 11:24:02 +0200 + +gnuserv (3.12.7-2) unstable; urgency=low + + * Use debian-pkg-add-load-path-item to add a path to emacs load path + (closes: #328715) + * Fix man page (closes: #331152) + * Add gnuserv.desktop file (closes: #304062) + * Optionally depend on emacsen, thus allowing using gnuserv with other + emacsen, like emacs-snapshot (closes: #352872) + + -- Benjamin Drieu Mon, 17 Apr 2006 13:52:46 +0200 + +gnuserv (3.12.7-1.2) unstable; urgency=medium + + * NMU. + * Add a build dependency on libxt-dev to placate configure. + Closes: #349554. + + -- Matej Vela Mon, 20 Feb 2006 09:42:19 +0100 + +gnuserv (3.12.7-1.1) unstable; urgency=low + + * Non-maintainer upload. + * Replace build-dependency on xlibs-dev with an explicit build-dependency + on each required package. (Closes: #346753) + + -- Steinar H. Gunderson Mon, 23 Jan 2006 00:47:19 +0100 + +gnuserv (3.12.7-1) unstable; urgency=low + + * New upstream release (closes: #279005) + * Explicitely set gnuserv-program (closes: #291123) + + -- Benjamin Drieu Thu, 10 Mar 2005 13:43:08 +0100 + +gnuserv (3.12.6-1.1) unstable; urgency=low + + * NMU + * Added complete GFDL text to debian/copyright and correct license + location to debian/dtemacs.1 (closes: #292228) + * Corrected Standards-Version from 3.6.10 to 3.6.1. + + -- Paul Brossier Fri, 4 Feb 2005 22:36:48 +0000 + +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.7.orig/debian/dirs +++ gnuserv-3.12.7/debian/dirs @@ -0,0 +1,4 @@ +usr/bin +usr/share/emacs/site-lisp/gnuserv +usr/share/man/man1 +usr/share/applications --- gnuserv-3.12.7.orig/debian/copyright +++ gnuserv-3.12.7/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.7.orig/debian/docs +++ gnuserv-3.12.7/debian/docs @@ -0,0 +1 @@ +README