summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Greg Hudson <ghudson@mit.edu>1996-08-27 12:28:13 +0000
committerGravatar Greg Hudson <ghudson@mit.edu>1996-08-27 12:28:13 +0000
commit0415965d8fd7420417895e189c9c79f67cfaf0a6 (patch)
tree26d5d7ed56342610198af7e4a78d5fd78d7e5692
parent95bc97e24fcbff897f837117cd54afac1a54a758 (diff)
This file was deleted in the 8.0 source tree
-rw-r--r--Makefile.bak221
-rw-r--r--clients/zmailnotify/zmailwatch.c876
-rw-r--r--clients/zmailnotify/zmwnotify.c301
-rw-r--r--clients/zwrite/zwrite.c.orig514
-rw-r--r--server/acl_files.c593
-rw-r--r--server/new.h6
-rwxr-xr-xzwgc/Dictionary/generate_dictionary_instance36
-rwxr-xr-xzwgc/generate_stack_instance36
8 files changed, 0 insertions, 2583 deletions
diff --git a/Makefile.bak b/Makefile.bak
deleted file mode 100644
index 6f2ff94..0000000
--- a/Makefile.bak
+++ /dev/null
@@ -1,221 +0,0 @@
-# Makefile generated by imake - do not edit!
-# $XConsortium: imake.c,v 1.51 89/12/12 12:37:30 jim Exp $
-
-all::
-
-SHELL=/bin/sh
-MAKESHELL=/bin/sh
-
-TOP = .
-CWD = .
-CONFIGSRC = /afs/rel-eng/user/probe/newsrc/config
-DESTDIR=
-
-IRULESRC = $(CONFIGSRC)
-
-IMAKE= imake
-IFLAGS= -I$(IRULESRC) $(IFLAGS_SH) $(OTHER_IFLAGS) -DTOPDIR=/afs/rel-eng/user/probe/newsrc
-XIFLAGS= -I$(ATHXLIBDIR)/X11/config -DUseInstalled
-
-ICONFIGFILES = $(IRULESRC)/Imake.tmpl $(IRULESRC)/Imake.rules \
- $(IRULESRC)/site.def Imakefile $(PRULEDEP)
-MKDIRHIER= sh $(IRULESRC)/mkdirhier.sh
-
-ATHVERS = $(IRULESRC)/update.conf
-
-ATHBASEDIR=/usr/athena
-
-ATHLIBDIR=$(ATHBASEDIR)/lib
-ATHBINDIR=$(ATHBASEDIR)/bin
-ATHINCDIR=$(ATHBASEDIR)/include
-ATHETCDIR=$(ATHBASEDIR)/etc
-ATHCONFDIR=/etc/athena
-ATHMANDIR=$(ATHBASEDIR)/man
-ATHRBINDIR=/bin/athena
-ATHRETCDIR=/etc/athena
-
-ATHNEWDIR=$(ATHBINDIR)
-
-ATHXAPPDIR=/usr/athena/lib/X11/app-defaults
-ATHXBITDIR=/usr/athena/lib/X11/bitmaps
-ATHXINCDIR=/usr/athena/include
-ATHXLIBDIR=/usr/athena/lib
-
-AFSDIR=/mit/afsuser/@sys
-
-LINTCFLAG=-o
-LINTFLAGS=$(DEFINES) -I/usr/athena/include
-
-INSTALL=install -c
-RANLIB=ranlib
-CC=cc
-LD=cc
-AS=as
-RM=rm -f
-CP=cp -p
-
-ETCMD=compile_et
-SSCMD=mk_cmds
-
-LIB_ET = -lcom_err
-LIB_SS = -lss
-LIB_HES = -lhesiod
-LIB_KRB = -lkrb -ldes
-LIB_ZEPHYR = -lzephyr -lkrb -ldes -lcom_err
-LIB_X = -lX11 -lXext
-LIB_XT = -lXt -lX11 -lXext
-LIB_XAW = -lXaw -lXmu -lXt -lX11 -lXext
-
-CDEBUG=-O
-
-CFLAGS=$(CDEBUG) -DPOSIX $(DEFINES) -I/usr/athena/include
-LDFLAGS= $(LDDEFS)
-LDPATH=-L$(ATHLIBDIR)
-LDLIBS=
-
-install:: install_dirs
-install_dirs::
-install::
-install.man::
-
-clean::
-depend::
-
-FRC::
-
-###########################################################################
-# start of Imakefile
-###########################################################################
-
-# Copyright 1988,1993 Massachusetts Institute of Technology
-# For copying and distribution information, see the file
-# "mit-copyright.h"
-#
-# $Id$
-
-# Copyright 1988,1993 Massachusetts Institute of Technology
-# For copying and distribution information, see the file
-# "mit-copyright.h"
-#
-# $Id$
-
-ZLIBDIR = $(ATHLIBDIR)/zephyr
-ZINCDIR = $(ATHINCDIR)/zephyr
-ZACLDIR = $(ZLIBDIR)/acl
-
-BINC = $(PTOP)/include
-
-ZLIBS = $(PTOP)/lib/libzephyr.a $(LIB_KRB) $(LIB_ET)
-DYN_LIB = $(PTOP)/libdyn/libdyn.a
-
-CDEFS_KRB = -DKERBEROS
-
-CDEFS_HES = -DHESIOD
-
-DEFINES = $(CDEFS_KRB) $(CDEFS_HES) $(XDEFS) -I$(BINC) $(MACHDEFS)
-
-CC=cc
-LD=cc
-
-install_dirs:: $(DESTDIR)$(ZLIBDIR)
-$(DESTDIR)$(ZLIBDIR)::
- $(MKDIRHIER) $(DESTDIR)$(ZLIBDIR)
-
-PRULES = "config/zephyr.rules"
-PINC = -DProjectRules=\"$(PRULES)\" -DProjectRuleDep=$(PRULES)
-
-PTOP = $(TOP)/.
-IPROJ = -DProject -DProjectTop=. -I$(PTOP) $(PINC)
-
-IFLAGS_SH = -DUseSharedLibs
-
-Makefile:: $(ICONFIGFILES)
- -@if [ -f Makefile ]; then \
- echo " $(RM) Makefile.bak; mv Makefile Makefile.bak"; \
- $(RM) Makefile.bak; mv Makefile Makefile.bak; \
- else exit 0; fi
- $(IMAKE) $(IPROJ) $(IFLAGS) -DNEWTOP=$(TOP) -DNEWCWD=$(CWD)
-
-XMakefile::
- -@if [ -f Makefile ]; then \
- echo " $(RM) Makefile.bak; mv Makefile Makefile.bak"; \
- $(RM) Makefile.bak; mv Makefile Makefile.bak; \
- else exit 0; fi
- $(IMAKE) $(XIFLAGS)
-
-clean::
- $(RM) *~ *.o *.a core a.out Makefile.bak
-
-install.man:: FRC
- @for d in util include lib libdyn clients server zhm zwgc ; \
- do \
- (cd $$d; echo "### Making" install.man "in $(CWD)/$$d"; \
- make $(MFLAGS) DESTDIR=$(DESTDIR) install.man; \
- echo "### Done with $(CWD)/$$d"); \
- done
-Makefiles:: Makefile
- @echo "### Making Makefiles in $(CWD)"
- @-for d in util include lib libdyn clients server zhm zwgc ; \
- do \
- case "$$d" in \
- ./?*/?*/?*/?*) newtop=../../../.. ;; \
- ./?*/?*/?*) newtop=../../.. ;; \
- ./?*/?*) newtop=../.. ;; \
- ./?*) newtop=.. ;; \
- */?*/?*/?*) newtop=../../../.. ;; \
- */?*/?*) newtop=../../.. ;; \
- */?*) newtop=../.. ;; \
- *) newtop=.. ;; \
- esac; \
- ( cd $$d; \
- echo "### Making Makefile in $(CWD)/$$d"; \
- if [ -f Makefile ]; then \
- $(RM) Makefile.bak; \
- mv Makefile Makefile.bak; fi; \
- make -f $${newtop}/Makefile TOP=$${newtop}/$(TOP) \
- CWD=$(CWD)/$$d Makefile; \
- make $(MFLAGS) Makefiles; \
- echo "### Done with $(CWD)/$$d" ) ; \
- done
-
-all:: FRC
- @for d in util include lib libdyn clients server zhm zwgc ; \
- do \
- (cd $$d; echo "### Making" all "in $(CWD)/$$d"; \
- make $(MFLAGS) DESTDIR=$(DESTDIR) all; \
- echo "### Done with $(CWD)/$$d"); \
- done
-
-install:: FRC
- @for d in util include lib libdyn clients server zhm zwgc ; \
- do \
- (cd $$d; echo "### Making" install "in $(CWD)/$$d"; \
- make $(MFLAGS) DESTDIR=$(DESTDIR) install; \
- echo "### Done with $(CWD)/$$d"); \
- done
-
-clean:: FRC
- @for d in util include lib libdyn clients server zhm zwgc ; \
- do \
- (cd $$d; echo "### Making" clean "in $(CWD)/$$d"; \
- make $(MFLAGS) DESTDIR=$(DESTDIR) clean; \
- echo "### Done with $(CWD)/$$d"); \
- done
-
-depend:: FRC
- @for d in util include lib libdyn clients server zhm zwgc ; \
- do \
- (cd $$d; echo "### Making" depend "in $(CWD)/$$d"; \
- make $(MFLAGS) DESTDIR=$(DESTDIR) depend; \
- echo "### Done with $(CWD)/$$d"); \
- done
-util include lib libdyn clients server zhm zwgc :: FRC
- @(cd $@; echo "### Making" all "in $(CWD)/$@"; \
- make $(MFLAGS) DESTDIR=$(DESTDIR) all ; \
- echo "### Done with $(CWD)/$@")
-
-Makefiles::
-
-###########################################################################
-# dependencies generated by makedepend
-
diff --git a/clients/zmailnotify/zmailwatch.c b/clients/zmailnotify/zmailwatch.c
deleted file mode 100644
index dfe364b..0000000
--- a/clients/zmailnotify/zmailwatch.c
+++ /dev/null
@@ -1,876 +0,0 @@
-/*
- * $Source$
- * $Header$
- */
-
-#ifndef lint
-static char *rcsid_mailwatch_c = "$Header$";
-#endif lint
-
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/uio.h>
-#include <sys/ioctl.h>
-#include <sys/socket.h>
-#include <signal.h>
-#include <netinet/in.h>
-#include <netdb.h>
-#include <stdio.h>
-
-#define NOTOK (-1)
-#define OK 0
-#define DONE 1
-
-#define DEF_INTERVAL 300
-#define DEF_DEBUG 0
-
-int Pfd;
-FILE *sfi;
-FILE *sfo;
-char Errmsg[128];
-
-struct mailsav {
- struct iovec m_iov[3];
- int m_iovcnt;
- int m_seen;
-} *Mailsav[64];
-
-int MailIndex;
-int MailSize;
-int Debug = DEF_DEBUG;
-int Interval = DEF_INTERVAL;
-int List = 0;
-int Shutdown = 0;
-
-int check_mail(), cleanup();
-uid_t getuid();
-char *strcpy(), *getenv(), index();
-
-main(argc,argv)
- int argc;
- char *argv[];
-{
- char *str_index;
- register int i;
- int readfds = 0;
- int maxfds = 0;
- struct timeval timeout;
-
- for (i = 1; i < argc; i++) {
- str_index = index(argv[i], '-');
- if (str_index == (char *)NULL) syntax(argv[0]);
- if (strncmp(argv[i], "-d", 2) == 0) {
- Debug = 1;
- continue;
- }
- if (strncmp(argv[i], "-i", 2) == 0) {
- if (++i >= argc) syntax(argv[0]);
- Interval = atoi(argv[i]);
- continue;
- }
- if (strncmp(argv[i], "-l", 2) == 0) {
- List = 1;
- continue;
- }
- if (strncmp(argv[i], "-help", 5) == 0) {
- syntax(argv[0]);
- }
- syntax(argv[0]);
- }
-
- if (!Debug && !List) background();
-
- signal(SIGHUP, cleanup);
- signal(SIGTERM, cleanup);
-
- check_mail();
-
- if (List) {
- exit(0);
- }
-
- /*
- * Initialize select's maximum file descriptor number to
- * be one more than the file descriptor number of the
- * Zephyr socket.
- */
- maxfds = ZGetFD() + 1;
-
- /*
- * Initialize the select timeout structure.
- */
- timeout.tv_sec = Interval;
- timeout.tv_usec = 0;
-
- while (1) {
- /*
- * Use select on the Zephyr port to determine if there
- * is new mail. If not block untill timeout. Remember
- * to reset the file descriptor before each select.
- */
- readfds = 1 << ZGetFD();
- if (select(maxfds, &readfds, NULL, NULL, &timeout) == -1)
- fatal("select failed on Zephyr socket");
- /*
- * Check for mail.
- */
- check_mail(host, user);
- /*
- * Shutdown if requested.
- */
- if (Shutdown) {
- exit(0);
- }
- }
-}
-
-background()
-{
- register int i;
-
- if (fork()) exit(0);
- for (i = 0; i < 10; i++) close(i);
- open("/", 0);
- dup2(0, 1);
- dup2(0, 2);
- i = open("/dev/tty", 2);
- if (i >= 0) {
- ioctl(i, TIOCNOTTY, 0);
- close(i);
- }
-}
-
-check_mail()
-{
- static int LastNmsgs = -1;
- static int LastNbytes = -1;
- int nmsgs;
- int nbytes;
- static char tempname[40];
- static FILE *mbf = NULL;
- register int mbfi;
- register int i;
- register int next_msg;
- struct mailsav *ms;
- struct mailsav *build_mailsav();
-
- if (pop_init(host) == NOTOK) {
- if (Debug) printf("zmailwatch(pop_init): %s\n", Errmsg);
- error(Errmsg);
- return(1);
- }
-
- if (pop_command("USER %s", user) == NOTOK ||
- pop_command("RPOP %s", user) == NOTOK) {
- error(Errmsg);
- if (Debug) printf("zmailwatch(USER|RPOP): %s\n", Errmsg);
- pop_command("QUIT");
- pop_close();
- return(1);
- }
-
- if (pop_stat(&nmsgs, &nbytes) == NOTOK) {
- error(Errmsg);
- if (Debug) printf("zmailwatch(pop_stat): %s\n", Errmsg);
- pop_command("QUIT");
- pop_close();
- return(1);
- }
-
- if (nmsgs == 0) {
- pop_command("QUIT");
- pop_close();
- return(0);
- }
-
- if (mbf == NULL) {
- strcpy(tempname, "/tmp/pmXXXXXX");
- mbfi = mkstemp(tempname);
- if (mbfi < 0) {
- if (Debug) printf("zmailwatch: mkstemp\n");
- pop_command("QUIT");
- pop_close();
- return(1);
- }
- mbf = fdopen(mbfi, "w+");
- }
-
- next_msg = 1;
- if (nmsgs == LastNmsgs && nbytes == LastNbytes) {
- if (get_message(1, mbf) != 0) return(1);
- ms = build_mailsav(mbf);
- if (mail_compare(ms, Mailsav[0]) == 0) {
- pop_command("QUIT");
- pop_close();
- return(0);
- }
- else {
- display_mail_header(ms, 0);
- rewind(mbf);
- next_msg = 2;
- }
- }
-
- for (i = next_msg; i <= nmsgs; i++) {
- if (get_message(i, mbf) != 0) return(1);
- ms = build_mailsav(mbf);
- display_mail_header(ms, i-1);
- rewind(mbf);
- }
-
- LastNmsgs = nmsgs;
- LastNbytes = nbytes;
-
- pop_command("QUIT");
- pop_close();
- if (Shutdown) {
- fclose(mbf);
- unlink(tempname);
- }
-
- return(0);
-}
-
-cleanup()
-{
- Shutdown = 1;
-}
-
-get_message(i, mbf)
- int i;
- FILE *mbf;
-{
- int mbx_write();
-
- if (pop_retr(i, mbx_write, mbf) != OK) {
- error(Errmsg);
- if (Debug) printf("zmailwatch(pop_retr): %s\n", Errmsg);
- pop_command("QUIT");
- pop_close();
- return(1);
- }
- ftruncate(fileno(mbf), ftell(mbf));
- return(0);
-}
-
-free_all_mailsav()
-{
- register struct mailsav **msp;
- register struct mailsav *ms;
- register struct iovec *iov;
- register int iovcnt;
-
- for (msp = Mailsav; ms = *msp; msp++) {
- iov = ms->m_iov;
- iovcnt = ms->m_iovcnt;
- while (--iovcnt >= 0) {
- free(iov->iov_base);
- iov++;
- }
- free(ms);
- *msp = NULL;
- }
-}
-
-free_mailsav(ms)
- register struct mailsav *ms;
-{
- register struct iovec *iov;
- register int iovcnt;
-
- iov = ms->m_iov;
- iovcnt = ms->m_iovcnt;
- while (--iovcnt >= 0) {
- free(iov->iov_base);
- iov++;
- }
- free(ms);
-}
-
-/* Pop stuff */
-
-pop_close()
-{
- if (sfi != NULL) fclose(sfi);
- if (sfi != NULL) fclose(sfo);
- close(Pfd);
-}
-
-struct mailsav *
-build_mailsav(mbf)
- register FILE *mbf;
-{
- char line[128];
- char from[80];
- char to[80];
- char subj[80];
- register struct mailsav *ms;
- register int i;
- register char *c;
- register struct iovec *iov;
-
- ms = (struct mailsav *)malloc(sizeof (struct mailsav));
- ms->m_seen = 0;
-
- from[0] = 0;
- to[0] = 0;
- subj[0] = 0;
-
- rewind(mbf);
- while (fgets(line, 128, mbf) != NULL) {
- if (*line == '\n') break;
- if (!strncmp(line, "From:", 5))
- strcpy(from, line);
- else if (!strncmp(line, "To:", 3))
- strcpy(to, line);
- else if (!strncmp(line, "Subject:", 8))
- strcpy(subj, line);
- }
-
- /* add elipsis at end of "To:" field if it continues onto */
- /* more than one line */
- i = strlen(to) - 2;
- c = &to[i];
- if (*c++ == ',') {
- *c++ = ' ';
- *c++ = '.';
- *c++ = '.';
- *c++ = '.';
- *c++ = '\n';
- *c = 0;
- }
-
- i = 0;
- if (from[0] != 0) {
- iov = &ms->m_iov[i];
- iov->iov_len = strlen(from);
- iov->iov_base = (char *)malloc(iov->iov_len);
- bcopy(from, iov->iov_base, iov->iov_len);
- iov->iov_base[--iov->iov_len] = 0; /* remove LF */
- i++;
- }
-
- if (to[0] != 0) {
- iov = &ms->m_iov[i];
- iov->iov_len = strlen(to);
- iov->iov_base = (char *)malloc(iov->iov_len);
- bcopy(to, iov->iov_base, iov->iov_len);
- iov->iov_base[--iov->iov_len] = 0; /* remove LF */
- i++;
- }
-
- if (subj[0] != 0) {
- iov = &ms->m_iov[i];
- iov->iov_len = strlen(subj);
- iov->iov_base = (char *)malloc(iov->iov_len);
- bcopy(subj, iov->iov_base, iov->iov_len);
- iov->iov_base[--iov->iov_len] = 0; /* remove LF */
- i++;
- }
-
- ms->m_iovcnt = i;
- return(ms);
-}
-
-display_mail_header(ms, mi)
- register struct mailsav *ms;
- register int mi;
-{
- /* This is a little tricky. If the current mail number (mi) is greater */
- /* than the last saved mail index (MailIndex), then this is new mail and */
- /* mi = MailIndex + 1. (MailIndex is incremented each time new mail is */
- /* saved.) Similarly, if mi is less than or equal to MailIndex and the */
- /* mail is different, then it is new mail, and MailIndex is set back to */
- /* mi. */
-
- if (mi > MailIndex || mail_compare(ms, Mailsav[mi])) {
- if (Mailsav[mi] != NULL) free_mailsav(Mailsav[mi]);
- MailIndex = mi;
- Mailsav[mi] = ms;
- if (Debug) printf("zmailwatch: new mail\n");
- }
- else {
- free_mailsav(ms);
- ms = Mailsav[mi];
- }
- if (!ms->m_seen) {
- if (notify_user(ms->m_iov, ms->m_iovcnt) == 0) ms->m_seen = 1;
- }
-}
-
-display_unseen()
-{
- register int i;
- register struct mailsav *ms;
-
- for (i = 0; i <= MailIndex; i++) {
- ms = Mailsav[i];
- if (ms->m_seen == 0) {
- if (notify_user(ms->m_iov, ms->m_iovcnt) != 0) return;
- ms->m_seen = 1;
- }
- }
-}
-
-mail_compare(m1, m2)
- register struct mailsav *m1, *m2;
-{
- register struct iovec *iov1, *iov2;
- register int iovcnt;
-
- if (m1->m_iovcnt != m2->m_iovcnt) return(1);
- iov1 = m1->m_iov;
- iov2 = m2->m_iov;
- iovcnt = m1->m_iovcnt;
- while (--iovcnt >= 0) {
- if (strcmp(iov1->iov_base, iov2->iov_base)) return(1);
- iov1++;
- iov2++;
- }
- return(0);
-}
-
-error(msg)
-{
- fprintf(stderr, "mailwatch: %s\n");
-}
-
-fatal(msg)
-{
- error(msg);
- exit(1);
-}
-
-char *
- get_errmsg()
-{
- extern int errno, sys_nerr;
- extern char *sys_errlist[];
- char *s;
-
- if (errno < sys_nerr)
- s = sys_errlist[errno];
- else
- s = "unknown error";
- return(s);
-}
-
-/*
- * Report the syntax for calling zmailwatch.
- */
-syntax(call)
- char *call;
-{
- printf ("Usage: %s [-dl] [-i <interval>] [-help]\n", call);
- exit(0);
-}
-
-/*
- * These are the necessary KPOP routines snarfed from
- * the GNU movemail program.
- */
-
-/* Interface from movemail to Athena's post-office protocol.
- Copyright (C) 1986 Free Software Foundation, Inc.
-
-This file is part of GNU Emacs.
-
-GNU Emacs is distributed in the hope that it will be useful,
-but without any warranty. No author or distributor
-accepts responsibility to anyone for the consequences of using it
-or for whether it serves any particular purpose or works at all,
-unless he says so in writing.
-
-Everyone is granted permission to copy, modify and redistribute
-GNU Emacs, but only under the conditions described in the
-document "GNU Emacs copying permission notice". An exact copy
-of the document is supposed to have been given to you along with
-GNU Emacs so that you can know how you may redistribute it all.
-It should be in a file named COPYING. Among other things, the
-copyright notice and this notice must be preserved on all copies. */
-
-#include <sys/types.h>
-#include <sys/file.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <netdb.h>
-#include <stdio.h>
-#include "../src/config.h"
-#ifdef KPOP
-#include <krb.h>
-#endif KPOP
-
-#ifdef USG
-#include <fcntl.h>
-/* Cancel substitutions made by config.h for Emacs. */
-#undef open
-#undef read
-#undef write
-#endif /* USG */
-
-#define NOTOK (-1)
-#define OK 0
-#define DONE 1
-
-char *progname;
-FILE *sfi;
-FILE *sfo;
-char Errmsg[80];
-#ifdef KPOP
-char *PrincipalHostname(), *index();
-#endif KPOP
-
-static int debug = 0;
-
-popmail(user, outfile)
-char *user;
-char *outfile;
-{
- char *host;
- int nmsgs, nbytes;
- char response[128];
- register int i;
- int mbfi;
- FILE *mbf;
- char *getenv();
- int mbx_write();
- char *get_errmsg();
-#ifdef HESIOD
- struct hes_postoffice *p;
-#endif HESIOD
-
- host = getenv("MAILHOST");
-#ifdef HESIOD
- if (host == NULL) {
- p = hes_getmailhost(user);
- if (p != NULL && strcmp(p->po_type, "POP") == 0)
- host = p->po_host;
- else
- fatal("no POP server listed in Hesiod");
- }
-#endif HESIOD
- if (host == NULL) {
- fatal("no MAILHOST defined");
- }
-
- if (pop_init(host) == NOTOK) {
- error(Errmsg);
- return(1);
- }
-
- if ((getline(response, sizeof response, sfi) != OK) || (*response != '+')){
- error(response);
- return(1);
- }
-
-#ifdef KPOP
- if (pop_command("USER %s", user) == NOTOK ||
- pop_command("PASS %s", user) == NOTOK) {
-#else !KPOP
- if (pop_command("USER %s", user) == NOTOK ||
- pop_command("RPOP %s", user) == NOTOK) {
-#endif KPOP
- error(Errmsg);
- pop_command("QUIT");
- return(1);
- }
-
- if (pop_stat(&nmsgs, &nbytes) == NOTOK) {
- error(Errmsg);
- pop_command("QUIT");
- return(1);
- }
-
- if (!nmsgs)
- {
- pop_command("QUIT");
- return(0);
- }
-
- setuid (getuid());
-
- mbfi = open (outfile, O_WRONLY | O_CREAT | O_EXCL, 0666);
- if (mbfi < 0)
- {
- pop_command("QUIT");
- error("Error in open: %s, %s", get_errmsg(), outfile);
- return(1);
- }
-
- if ((mbf = fdopen(mbfi, "w")) == NULL)
- {
- pop_command("QUIT");
- error("Error in fdopen: %s", get_errmsg());
- close(mbfi);
- unlink(outfile);
- return(1);
- }
-
- for (i = 1; i <= nmsgs; i++) {
- mbx_delimit_begin(mbf);
- if (pop_retr(i, mbx_write, mbf) != OK) {
- error(Errmsg);
- pop_command("QUIT");
- close(mbfi);
- return(1);
- }
- mbx_delimit_end(mbf);
- fflush(mbf);
- }
-
- for (i = 1; i <= nmsgs; i++) {
- if (pop_command("DELE %d", i) == NOTOK) {
- error(Errmsg);
- pop_command("QUIT");
- close(mbfi);
- return(1);
- }
- }
-
- pop_command("QUIT");
- close(mbfi);
- return(0);
-}
-
-pop_init(host)
-char *host;
-{
- register struct hostent *hp;
- register struct servent *sp;
- int lport = IPPORT_RESERVED - 1;
- struct sockaddr_in sin;
- register int s;
-#ifdef KPOP
- KTEXT ticket = (KTEXT)NULL;
- int rem;
-#endif KPOP
- char *get_errmsg();
-
- hp = gethostbyname(host);
- if (hp == NULL) {
- sprintf(Errmsg, "MAILHOST unknown: %s", host);
- return(NOTOK);
- }
-
-#ifdef KPOP
- sp = getservbyname("knetd", "tcp");
- if (sp == 0) {
- strcpy(Errmsg, "tcp/knetd: unknown service");
- return(NOTOK);
- }
-#else !KPOP
- sp = getservbyname("pop", "tcp");
- if (sp == 0) {
- strcpy(Errmsg, "tcp/pop: unknown service");
- return(NOTOK);
- }
-#endif KPOP
-
- sin.sin_family = hp->h_addrtype;
- bcopy(hp->h_addr, (char *)&sin.sin_addr, hp->h_length);
- sin.sin_port = sp->s_port;
-#ifdef KPOP
- s = socket(AF_INET, SOCK_STREAM, 0);
-#else !KPOP
- s = rresvport(&lport);
-#endif KPOP
- if (s < 0) {
- sprintf(Errmsg, "error creating socket: %s", get_errmsg());
- return(NOTOK);
- }
-
- if (connect(s, (char *)&sin, sizeof sin) < 0) {
- sprintf(Errmsg, "error during connect: %s", get_errmsg());
- close(s);
- return(NOTOK);
- }
-#ifdef KPOP
- ticket = (KTEXT)malloc( sizeof(KTEXT_ST) );
- rem=KSUCCESS;
- rem = SendKerberosData(s, ticket, "pop", hp->h_name);
- if (rem != KSUCCESS) {
- sprintf(Errmsg, "kerberos error: %s",krb_err_txt[rem]);
- close(s);
- return(NOTOK);
- }
-#endif KPOP
-
- sfi = fdopen(s, "r");
- sfo = fdopen(s, "w");
- if (sfi == NULL || sfo == NULL) {
- sprintf(Errmsg, "error in fdopen: %s", get_errmsg());
- close(s);
- return(NOTOK);
- }
-
- return(OK);
-}
-
-pop_command(fmt, a, b, c, d)
-char *fmt;
-{
- char buf[4096];
- char errmsg[64];
-
- sprintf(buf, fmt, a, b, c, d);
-
- if (debug) fprintf(stderr, "---> %s\n", buf);
- if (putline(buf, Errmsg, sfo) == NOTOK) return(NOTOK);
-
- if (getline(buf, sizeof buf, sfi) != OK) {
- strcpy(Errmsg, buf);
- return(NOTOK);
- }
-
- if (debug) fprintf(stderr, "<--- %s\n", buf);
- if (*buf != '+') {
- strcpy(Errmsg, buf);
- return(NOTOK);
- } else {
- return(OK);
- }
-}
-
-
-pop_stat(nmsgs, nbytes)
-int *nmsgs, *nbytes;
-{
- char buf[4096];
-
- if (debug) fprintf(stderr, "---> STAT\n");
- if (putline("STAT", Errmsg, sfo) == NOTOK) return(NOTOK);
-
- if (getline(buf, sizeof buf, sfi) != OK) {
- strcpy(Errmsg, buf);
- return(NOTOK);
- }
-
- if (debug) fprintf(stderr, "<--- %s\n", buf);
- if (*buf != '+') {
- strcpy(Errmsg, buf);
- return(NOTOK);
- } else {
- sscanf(buf, "+OK %d %d", nmsgs, nbytes);
- return(OK);
- }
-}
-
-pop_retr(msgno, action, arg)
-int (*action)();
-{
- char buf[4096];
-
- sprintf(buf, "RETR %d", msgno);
- if (debug) fprintf(stderr, "%s\n", buf);
- if (putline(buf, Errmsg, sfo) == NOTOK) return(NOTOK);
-
- if (getline(buf, sizeof buf, sfi) != OK) {
- strcpy(Errmsg, buf);
- return(NOTOK);
- }
-
- while (1) {
- switch (multiline(buf, sizeof buf, sfi)) {
- case OK:
- (*action)(buf, arg);
- break;
- case DONE:
- return (OK);
- case NOTOK:
- strcpy(Errmsg, buf);
- return (NOTOK);
- }
- }
-}
-
-getline(buf, n, f)
-char *buf;
-register int n;
-FILE *f;
-{
- register char *p;
- int c;
-
- p = buf;
- while (--n > 0 && (c = fgetc(f)) != EOF)
- if ((*p++ = c) == '\n') break;
-
- if (ferror(f)) {
- strcpy(buf, "error on connection");
- return (NOTOK);
- }
-
- if (c == EOF && p == buf) {
- strcpy(buf, "connection closed by foreign host");
- return (DONE);
- }
-
- *p = NULL;
- if (*--p == '\n') *p = NULL;
- if (*--p == '\r') *p = NULL;
- return(OK);
-}
-
-multiline(buf, n, f)
-char *buf;
-register int n;
-FILE *f;
-{
- if (getline(buf, n, f) != OK) return (NOTOK);
- if (*buf == '.') {
- if (*(buf+1) == NULL) {
- return (DONE);
- } else {
- strcpy(buf, buf+1);
- }
- }
- return(OK);
-}
-
-char *
-get_errmsg()
-{
- extern int errno, sys_nerr;
- extern char *sys_errlist[];
- char *s;
-
- if (errno < sys_nerr)
- s = sys_errlist[errno];
- else
- s = "unknown error";
- return(s);
-}
-
-putline(buf, err, f)
-char *buf;
-char *err;
-FILE *f;
-{
- fprintf(f, "%s\r\n", buf);
- fflush(f);
- if (ferror(f)) {
- strcpy(err, "lost connection");
- return(NOTOK);
- }
- return(OK);
-}
-
-mbx_write(line, mbf)
-char *line;
-FILE *mbf;
-{
- fputs(line, mbf);
- fputc(0x0a, mbf);
-}
-
-mbx_delimit_begin(mbf)
-FILE *mbf;
-{
- fputs("\f\n0,unseen,,\n", mbf);
-}
-
-mbx_delimit_end(mbf)
-FILE *mbf;
-{
- putc('\037', mbf);
-}
diff --git a/clients/zmailnotify/zmwnotify.c b/clients/zmailnotify/zmwnotify.c
deleted file mode 100644
index 6395fd9..0000000
--- a/clients/zmailnotify/zmwnotify.c
+++ /dev/null
@@ -1,301 +0,0 @@
-/*
- * $Source$
- * $Header$
- */
-
-#ifndef lint
-static char *rcsid_mwnotify_c = "$Header$";
-#endif lint
-
-#include <sys/types.h>
-#include <sys/uio.h>
-#include <sys/syslog.h>
-#include <sys/wait.h>
-#include <ttyent.h>
-#include <pwd.h>
-#include <netinet/in.h>
-#include <stdio.h>
-#include <sgtty.h>
-#include <signal.h>
-#include <errno.h>
-#include <netdb.h>
-#include <X/Xlib.h>
-
-extern char **environ;
-
-short cursor[] = {0x0000, 0x7ffe, 0x4fc2, 0x4ffe, 0x7ffe,
- 0x7ffe, 0x781e, 0x7ffe , 0x7ffe, 0x0000};
-
-#define NW_TOP 5
-#define DEFAULT_WINDOWS 16
-#define MAX_WINDOWS 32
-
-WindowInfo Winfo;
-FontInfo Finfo;
-Font NoteFont;
-int Timeout = 0;
-int Bwidth = 2;
-int Inner = 2;
-int Volume = 0;
-int Forepix = BlackPixel;
-int Backpix = WhitePixel;
-int Brdrpix = BlackPixel;
-int Mouspix = BlackPixel;
-int Offset = NW_TOP;
-int VPos = NW_TOP;
-int WindowMask = 0;
-int WindowCount;
-int WindowMax = DEFAULT_WINDOWS;
-
-struct wsav {
- Window w_window;
- struct iovec *w_iov;
- int w_iovcnt;
- int w_flags;
-} Wsav[MAX_WINDOWS];
-
-#define W_MAPPED 1
-
-extern int errno;
-
-notify_user(iov, iovcnt)
-register struct iovec *iov;
-register int iovcnt;
-{
- register int i;
- register struct wsav *w;
-
- if (WindowCount == WindowMax)
- return(1);
-
- w = &Wsav[WindowCount];
- w->w_flags = 0;
- w->w_iov = (struct iovec *)malloc(sizeof (struct iovec) * iovcnt);
- w->w_iovcnt = iovcnt;
- for (i = iovcnt; --i >= 0; ) {
- w->w_iov[i].iov_base = (char *)malloc(iov[i].iov_len+1);
- bcopy(iov[i].iov_base, w->w_iov[i].iov_base, iov[i].iov_len+1);
- w->w_iov[i].iov_len = iov[i].iov_len;
- }
- w->w_window = XNotifySetup(iov, iovcnt, &VPos);
- WindowMask |= (1 << WindowCount);
- WindowCount++;
- return(0);
-}
-
-XProcessEvent()
-{
- XEvent rep;
- register struct wsav *w;
- register int i;
-
- do {
- XNextEvent(&rep);
-
- /* find the window */
- w = Wsav;
- for (i = 0; i < WindowMax; w++, i++)
- if (rep.window == w->w_window) break;
- if (i == WindowMax) return;
-
- /* process the event */
- switch (rep.type) {
- case ButtonPressed:
- for (; i >= 0; w--, i--) {
- if (w->w_window != NULL) {
- XDestroyWindow(w->w_window);
- w->w_window = NULL;
- free_iov(w->w_iov, w->w_iovcnt);
- WindowMask &= ~(1 << i);
- }
- }
- if (WindowMask == 0) {
- VPos = Offset;
- WindowCount = 0;
- }
- break;
-
- case ExposeWindow:
- case ExposeRegion:
- XClear(w->w_window);
- display_notice(w->w_window, w->w_iov, w->w_iovcnt);
- XFlush();
- break;
-
- }
- } while (XPending() > 0);
-}
-
-free_iov(iov, iovcnt)
-register struct iovec *iov;
-register int iovcnt;
-{
- register struct iovec *iovbase = iov;
-
- while (--iovcnt >= 0) {
- free(iov->iov_base);
- iov++;
- }
- free(iovbase);
-}
-
-
-XNotifyInit(dname)
-char *dname;
-{
- struct passwd *pwent;
- char *envbuf[2];
- char homebuf[280];
- int reverse = 0;
- char *option;
- char *font_name = "6x13";
- char *fore_color = NULL;
- char *back_color = NULL;
- char *brdr_color = NULL;
- char *mous_color = NULL;
- Color cdef;
- char *getlogin();
-
- if (!XOpenDisplay(dname))
- exit(0);
- if (pwent = getpwnam(getlogin())) {
- strcpy(homebuf, "HOME=");
- strcat(homebuf, pwent->pw_dir);
- envbuf[0] = homebuf;
- envbuf[1] = NULL;
- environ = envbuf;
- if (option = XGetDefault("mailwatch", "BodyFont"))
- font_name = option;
- fore_color = XGetDefault("mailwatch", "Foreground");
- back_color = XGetDefault("mailwatch", "Background");
- brdr_color = XGetDefault("mailwatch", "Border");
- mous_color = XGetDefault("mailwatch", "Mouse");
- if (option = XGetDefault("mailwatch", "BorderWidth"))
- Bwidth = atoi(option);
- if (option = XGetDefault("mailwatch", "InternalBorder"))
- Inner = atoi(option);
- if (option = XGetDefault("mailwatch", "Timeout"))
- Timeout = atoi(option);
- if (option = XGetDefault("mailwatch", "Volume"))
- Volume = atoi(option);
- if (option = XGetDefault("mailwatch", "Offset"))
- Offset = atoi(option);
- if ((option = XGetDefault("mailwatch", "ReverseVideo")) &&
- strcmp(option, "on") == 0)
- reverse = 1;
- if (option = XGetDefault("mailwatch", "MaxNotices"))
- WindowMax = atoi(option);
- }
- if (reverse) {
- Brdrpix = Backpix;
- Backpix = Forepix;
- Forepix = Brdrpix;
- Mouspix = Forepix;
- }
-
- if ((NoteFont = XGetFont(font_name)) == NULL)
- exit(0);
- if (DisplayCells() > 2) {
- if (back_color && XParseColor(back_color, &cdef) &&
- XGetHardwareColor(&cdef))
- Backpix = cdef.pixel;
- if (fore_color && XParseColor(fore_color, &cdef) &&
- XGetHardwareColor(&cdef))
- Forepix = cdef.pixel;
- if (brdr_color && XParseColor(brdr_color, &cdef) &&
- XGetHardwareColor(&cdef))
- Brdrpix = cdef.pixel;
- if (mous_color && XParseColor(mous_color, &cdef) &&
- XGetHardwareColor(&cdef))
- Mouspix = cdef.pixel;
- }
- XQueryFont(NoteFont, &Finfo);
- XQueryWindow (RootWindow, &Winfo);
- VPos = Offset;
- return(dpyno());
-}
-
-XNotifyClose()
-{
- register int i;
- register struct wsav *w;
-
- for (i = WindowMax, w = Wsav; --i >= 0; w++)
- if (w->w_window != NULL) XDestroyWindow(w->w_window);
-
-}
-
-XDisplayNewWindows()
-{
- register int i;
- register struct wsav *w;
- register int feepcount = 0;
-
- for (i = 0, w = Wsav; i < WindowMax; w++, i++)
- if (w->w_window != NULL && !(w->w_flags & W_MAPPED)) {
- XMapWindow(w->w_window);
- feepcount++;
- w->w_flags |= W_MAPPED;
- }
- XFlush();
- /* Now feep for each window, s l o w l y */
- while (--feepcount >= 0) {
- XFeep(Volume);
- XFlush();
- }
-}
-
-XNotifySetup (iov, iovcnt, vpos)
-struct iovec *iov;
-int iovcnt;
-register int *vpos;
-{
- register int i;
- register int n;
- register int width;
- register int height;
- int vertical;
- register Window w;
-
- width = 0;
- for (i = iovcnt; --i >= 0; ) {
- n = XQueryWidth (iov[i].iov_base, NoteFont);
- if (n > width) width = n;
- }
-
- width += Inner * 2;
- height = iovcnt * Finfo.height + (Inner * 2);
- vertical = *vpos;
- *vpos += height + (Finfo.height / 2);
-
- w = XCreateWindow(RootWindow, (Winfo.width - width - (Bwidth * 2)) / 2,
- vertical, width, height, Bwidth,
- XMakeTile(Brdrpix), XMakeTile(Backpix));
- XStoreName(w, "mail-notice");
- XSelectInput(w, ButtonPressed|ButtonReleased|ExposeWindow|ExposeRegion);
- XDefineCursor(w, XCreateCursor(16, 10, cursor, NULL, 7, 5,
- Mouspix, Backpix, GXcopy));
- return(w);
-}
-
-display_notice(w, iov, iovcnt)
-Window w;
-register struct iovec *iov;
-register int iovcnt;
-{
- register int in;
- register int y;
- register int height;
-
- in = Inner - 1;
- if (in <= 0) in = 1;
-
- height = Finfo.height;
- y = in;
- while (--iovcnt >= 0) {
- XText(w, in, y, iov->iov_base, iov->iov_len,
- NoteFont, Forepix, Backpix);
- y += height;
- iov++;
- }
-}
diff --git a/clients/zwrite/zwrite.c.orig b/clients/zwrite/zwrite.c.orig
deleted file mode 100644
index c8ca4ce..0000000
--- a/clients/zwrite/zwrite.c.orig
+++ /dev/null
@@ -1,514 +0,0 @@
-/* This file is part of the Project Athena Zephyr Notification System.
- * It contains code for the "zwrite" command.
- *
- * Created by: Robert French
- *
- * $Source$
- * $Author$
- *
- * Copyright (c) 1987,1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, see the file
- * "mit-copyright.h".
- */
-
-#include <zephyr/mit-copyright.h>
-
-#include <zephyr/zephyr.h>
-#include <string.h>
-#include <netdb.h>
-#include <pwd.h>
-#include <ctype.h>
-
-#ifndef lint
-static char rcsid_zwrite_c[] = "$Id$";
-#endif /* lint */
-
-#define DEFAULT_CLASS "MESSAGE"
-#define DEFAULT_INSTANCE "PERSONAL"
-#define URGENT_INSTANCE "URGENT"
-#define DEFAULT_OPCODE ""
-#define FILSRV_CLASS "FILSRV"
-
-#define MAXRECIPS 100
-
-int nrecips, msgarg, verbose, quiet, nodot;
-char *whoami, *inst, *class, *opcode, *recips[MAXRECIPS];
-int (*auth)();
-void un_tabify();
-
-char *fix_filsrv_inst();
-
-main(argc, argv)
- int argc;
- char *argv[];
-{
- int retval, arg, nocheck, nchars, msgsize, filsys, tabexpand;
- char *message, *signature = NULL;
- static char bfr[BUFSIZ], classbfr[BUFSIZ], instbfr[BUFSIZ], sigbfr[BUFSIZ];
- static char opbfr[BUFSIZ];
- static ZNotice_t notice;
-
- whoami = argv[0];
-
- if ((retval = ZInitialize()) != ZERR_NONE) {
- com_err(whoami, retval, "while initializing");
- exit(1);
- }
-
- if (argc < 2)
- usage(whoami);
-
- auth = ZAUTH;
- verbose = quiet = msgarg = nrecips = nocheck = filsys = nodot = 0;
- tabexpand = 1;
-
- if (class = ZGetVariable("zwrite-class")) {
- (void) strcpy(classbfr, class);
- class = classbfr;
- }
- else
- class = DEFAULT_CLASS;
- if (inst = ZGetVariable("zwrite-inst")) {
- (void) strcpy(instbfr, inst);
- inst = instbfr;
- }
- else
- inst = DEFAULT_INSTANCE;
-
- if (opcode = ZGetVariable("zwrite-opcode"))
- opcode = strcpy(opbfr, opcode);
- else
- opcode = DEFAULT_OPCODE;
-
- signature = ZGetVariable("zwrite-signature");
- if (signature) {
- (void) strcpy(sigbfr, signature);
- signature = sigbfr;
- }
-
- arg = 1;
-
- for (;arg<argc&&!msgarg;arg++) {
- if (*argv[arg] != '-') {
- recips[nrecips++] = argv[arg];
- continue;
- }
- if (strlen(argv[arg]) > 2)
- usage(whoami);
- switch (argv[arg][1]) {
- case 'a': /* Backwards compatibility */
- auth = ZAUTH;
- break;
- case 'o':
- class = DEFAULT_CLASS;
- inst = DEFAULT_INSTANCE;
- opcode = DEFAULT_OPCODE;
- break;
- case 'd':
- auth = ZNOAUTH;
- break;
- case 'v':
- verbose = 1;
- break;
- case 'q':
- quiet = 1;
- break;
- case 'n':
- nocheck = 1;
- break;
- case 't':
- tabexpand = 0;
- break;
- case 'u':
- inst = URGENT_INSTANCE;
- break;
- case 'O':
- if (arg == argc-1)
- usage(whoami);
- arg++;
- opcode = argv[arg];
- break;
- case 'i':
- if (arg == argc-1 || filsys == 1)
- usage(whoami);
- arg++;
- inst = argv[arg];
- filsys = -1;
- break;
- case 'c':
- if (arg == argc-1 || filsys == 1)
- usage(whoami);
- arg++;
- class = argv[arg];
- filsys = -1;
- break;
- case 'f':
- if (arg == argc-1 || filsys == -1)
- usage(whoami);
- arg++;
- class = FILSRV_CLASS;
- inst = fix_filsrv_inst(argv[arg]);
- filsys = 1;
- nocheck = 1; /* implied -n (no ping) */
- break;
- case 's':
- if (arg == argc-1)
- usage(whoami);
- arg++;
- signature = argv[arg];
- break;
- case 'm':
- if (arg == argc-1)
- usage(whoami);
- nocheck = 1; /* implied -n (no ping) */
- msgarg = arg+1;
- break;
- case 'l': /* literal */
- nodot = 1;
- break;
- default:
- usage(whoami);
- }
- }
-
- if (!nrecips && !(strcmp(class, DEFAULT_CLASS) ||
- (strcmp(inst, DEFAULT_INSTANCE) &&
- strcmp(inst, URGENT_INSTANCE)))) {
- /* must specify recipient if using default class and
- (default instance or urgent instance) */
- fprintf(stderr, "No recipients specified.\n");
- usage(whoami);
- }
-
- if (!signature) {
- /* try to find name in the password file */
- register struct passwd *pwd;
- register char *cp = sigbfr;
- register char *cp2, *pp;
-
- pwd = getpwuid(getuid());
- if (pwd) {
- cp2 = pwd->pw_gecos;
- for (; *cp2 && *cp2 != ',' ; cp2++) {
- if (*cp2 == '&') {
- pp = pwd->pw_name;
- *cp++ = islower(*pp) ? toupper(*pp) : *pp;
- pp++;
- while (*pp)
- *cp++ = *pp++;
- } else
- *cp++ = *cp2;
- }
- signature = sigbfr;
- }
- }
-
- notice.z_kind = ACKED;
- notice.z_port = 0;
- notice.z_class = class;
- notice.z_class_inst = inst;
- notice.z_opcode = "PING";
- notice.z_sender = 0;
- notice.z_message_len = 0;
- notice.z_recipient = "";
- if (filsys == 1)
- notice.z_default_format = "@bold(Filesystem Operation Message for $instance:)\nFrom: @bold($sender) at $time $date\n$message";
- else if (auth == ZAUTH) {
- if (signature)
- notice.z_default_format = "Class $class, Instance $instance:\nTo: @bold($recipient) at $time $date\nFrom: @bold($1) <$sender>\n\n$2";
- else
- notice.z_default_format = "Class $class, Instance $instance:\nTo: @bold($recipient) at $time $date\n$message";
- } else {
- if (signature)
- notice.z_default_format = "@bold(UNAUTHENTIC) Class $class, Instance $instance at $time $date:\nFrom: @bold($1) <$sender>\n\n$2";
- else
- notice.z_default_format = "@bold(UNAUTHENTIC) Class $class, Instance $instance at $time $date:\n$message";
- }
- if (!nocheck && nrecips)
- send_off(&notice, 0);
-
- if (quiet)
- notice.z_kind = UNACKED; /* change for real sending */
-
- if (!msgarg && isatty(0))
- if (nodot)
- printf("Type your message now. End with the end-of-file character.\n");
- else
- printf("Type your message now. End with control-D or a dot on a line by itself.\n");
-
- message = NULL;
- msgsize = 0;
- if (signature) {
- message = malloc((unsigned)(strlen(signature)+2));
- (void) strcpy(message, signature);
- msgsize = strlen(message);
- message[msgsize++] = '\0';
- } else {
- message = malloc(1);
- message[msgsize++] = '\0';
- }
-
- if (msgarg) {
- int size = msgsize;
- for (arg=msgarg;arg<argc;arg++)
- size += (strlen(argv[arg]) + 1);
- size++; /* for the newline */
- message = realloc(message, (unsigned) size);
- for (arg=msgarg;arg<argc;arg++) {
- (void) strcpy(message+msgsize, argv[arg]);
- msgsize += strlen(argv[arg]);
- if (arg != argc-1) {
- message[msgsize] = ' ';
- msgsize++;
- }
- }
- message[msgsize] = '\n';
- msgsize += 1;
- } else {
- if (isatty(0)) {
- for (;;) {
- unsigned int l;
- if (!fgets(bfr, sizeof bfr, stdin))
- break;
- if (!nodot && bfr[0] == '.' &&
- (bfr[1] == '\n' || bfr[1] == '\0'))
- break;
- l = strlen(bfr);
- message = realloc(message, msgsize+l+1);
- (void) strcpy(message+msgsize, bfr);
- msgsize += l;
- }
- message = realloc(message, (unsigned)(msgsize+1));
- }
- else { /* Use read so you can send binary messages... */
- while (nchars = read(fileno(stdin), bfr, sizeof bfr)) {
- if (nchars == -1) {
- fprintf(stderr, "Read error from stdin! Can't continue!\n");
- exit(1);
- }
- message = realloc(message, (unsigned)(msgsize+nchars));
- (void) memcpy(message+msgsize, bfr, nchars);
- msgsize += nchars;
- }
- /* end of msg */
- message = realloc(message, (unsigned)(msgsize+1));
- }
- }
-
- notice.z_opcode = opcode;
- if (tabexpand)
- un_tabify(&message, &msgsize);
- notice.z_message = message;
- notice.z_message_len = msgsize;
-
- send_off(&notice, 1);
- exit(0);
-}
-
-send_off(notice, real)
- ZNotice_t *notice;
- int real;
-{
- int i, success, retval;
- char bfr[BUFSIZ];
- ZNotice_t retnotice;
-
- success = 0;
-
- for (i=0;i<nrecips || !nrecips;i++) {
- notice->z_recipient = nrecips?recips[i]:"";
- if (verbose && real)
- printf("Sending %smessage, class %s, instance %s, to %s\n",
- auth?"authenticated ":"",
- class, inst,
- nrecips?notice->z_recipient:"everyone");
- if ((retval = ZSendNotice(notice, auth)) != ZERR_NONE) {
- (void) sprintf(bfr, "while sending notice to %s",
- nrecips?notice->z_recipient:inst);
- com_err(whoami, retval, bfr);
- break;
- }
- if (quiet && real) {
- if (nrecips)
- continue; /* next! */
- else
- break; /* no more */
- }
- if ((retval = ZIfNotice(&retnotice, (struct sockaddr_in *) 0,
- ZCompareUIDPred,
- (char *)&notice->z_uid)) !=
- ZERR_NONE) {
- ZFreeNotice(&retnotice);
- (void) sprintf(bfr, "while waiting for acknowledgement for %s",
- nrecips?notice->z_recipient:inst);
- com_err(whoami, retval, bfr);
- continue;
- }
- if (retnotice.z_kind == SERVNAK) {
- printf("Received authorization failure while sending to %s\n",
- nrecips?notice->z_recipient:inst);
- ZFreeNotice(&retnotice);
- break; /* if auth fails, punt */
- }
- if (retnotice.z_kind != SERVACK || !retnotice.z_message_len) {
- printf("Detected server failure while receiving acknowledgement for %s\n",
- nrecips?notice->z_recipient:inst);
- ZFreeNotice(&retnotice);
- continue;
- }
- if (!real || (!quiet && real))
- if (!strcmp(retnotice.z_message, ZSRVACK_SENT)) {
- if (real) {
- if (verbose)
- printf("Successful\n");
- else
- printf("%s: Message sent\n",
- nrecips?notice->z_recipient:inst);
- }
- else
- success = 1;
- }
- else
- if (!strcmp(retnotice.z_message,
- ZSRVACK_NOTSENT)) {
- if (verbose && real) {
- if (strcmp(class, DEFAULT_CLASS))
- printf("Not logged in or not subscribing to class %s, instance %s\n",
- class, inst);
- else
- printf("Not logged in or not subscribing to messages\n");
- }
- else
- if (!nrecips)
- printf("No one subscribing to class %s, instance %s\n",
- class, inst);
- else {
- if (strcmp(class, DEFAULT_CLASS))
- printf("%s: Not logged in or not subscribing to class %s, instance %s\n",
- notice->z_recipient, class, inst);
- else
- printf("%s: Not logged in or not subscribing to messages\n",
- notice->z_recipient);
- }
- }
- else
- printf("Internal failure - illegal message field in server response\n");
- ZFreeNotice(&retnotice);
- if (!nrecips)
- break;
- }
- if (!real && !success)
- exit(1);
-}
-
-usage(s)
- char *s;
-{
- fprintf(stderr,
- "Usage: %s [-a] [-o] [-d] [-v] [-q] [-n] [-t] [-u] [-l]\n\
-\t[-c class] [-i inst] [-O opcode] [-f fsname] [-s signature]\n\
-\t[user ...] [-m message]\n", s);
- fprintf(stderr,"\t-f and -c are mutually exclusive\n\
-\t-f and -i are mutually exclusive\n\
-\trecipients must be specified unless -c or -f specifies a class\n\
-\tother than the default class or -i or -f specifies an instance\n\
-\tother than the default or urgent instance\n");
- exit(1);
-}
-
-/*
- if the -f option is specified, this routine is called to canonicalize
- an instance of the form hostname[:pack]. It turns the hostname into the
- name returned by gethostbyname(hostname)
- */
-
-char *fix_filsrv_inst(str)
-char *str;
-{
- static char fsinst[BUFSIZ];
- char *ptr;
- struct hostent *hp;
-
- ptr = strchr(str,':');
- if (ptr)
- *ptr = '\0';
-
- hp = gethostbyname(str);
- if (!hp) {
- if (ptr)
- *ptr = ':';
- return(str);
- }
- (void) strcpy(fsinst, hp->h_name);
- if (ptr) {
- (void) strcat(fsinst, ":");
- ptr++;
- (void) strcat(fsinst, ptr);
- }
- return(fsinst);
-}
-
-/* convert tabs in the buffer into appropriate # of spaces.
- slightly tricky since the buffer can have NUL's in it. */
-
-#ifndef TABSTOP
-#define TABSTOP 8 /* #chars between tabstops */
-#endif /* ! TABSTOP */
-
-void
-un_tabify(bufp, sizep)
-char **bufp;
-register int *sizep;
-{
- register char *cp, *cp2;
- char *cp3;
- register int i;
- register int column; /* column of next character */
- register int size = *sizep;
-
- for (cp = *bufp, i = 0; size; size--, cp++)
- if (*cp == '\t')
- i++; /* count tabs in buffer */
-
- if (!i)
- return; /* no tabs == no work */
-
- /* To avoid allocation churning, allocate enough extra space to convert
- every tab into TABSTOP spaces */
- /* only add (TABSTOP-1)x because we re-use the cell holding the
- tab itself */
- cp = malloc((unsigned)(*sizep + (i * (TABSTOP-1))));
- if (!cp) /* XXX */
- return; /* punt expanding if memory fails */
- cp3 = cp;
- /* Copy buffer, converting tabs to spaces as we go */
- for (cp2 = *bufp, column = 1, size = *sizep; size; cp2++, size--) {
- switch (*cp2) {
- case '\n':
- case '\0':
- /* newline or null: reset column */
- column = 1;
- *cp++ = *cp2; /* copy the newline */
- break;
- default:
- /* copy the character */
- *cp = *cp2;
- cp++;
- column++;
- break;
- case '\t':
- /* it's a tab, compute how many spaces to expand into. */
- i = TABSTOP - ((column - 1) % TABSTOP);
- for (; i > 0; i--) {
- *cp++ = ' '; /* fill in the spaces */
- column++;
- (*sizep)++; /* increment the size */
- }
- (*sizep)--; /* remove one (we replaced the tab) */
- break;
- }
- }
- free(*bufp); /* free the old buf */
- *bufp = cp3;
- return;
-}
diff --git a/server/acl_files.c b/server/acl_files.c
deleted file mode 100644
index 3932e52..0000000
--- a/server/acl_files.c
+++ /dev/null
@@ -1,593 +0,0 @@
-/* This file is part of the Project Athena Zephyr Notification System.
- * It contains functions for maintaining Access Control Lists.
- *
- * Created by: John T. Kohl
- *
- * $Source$
- * $Author$
- *
- * Copyright (c) 1987,1988 by the Massachusetts Institute of Technology.
- * For copying and distribution information, see the file
- * "mit-copyright.h".
- */
-
-/* Define this if you really want the ACL-writing code included. */
-/* #define WRITE_ACL */
-
-/*
- * Stolen from lib/acl_files.c because acl_load needs to be externally
- * declared and not statically declared.
- */
-
-#include <zephyr/mit-copyright.h>
-
-#ifndef SABER
-#ifndef lint
-static char rcsid_acl_files_c[] = "$Id$";
-#endif /* lint */
-#endif /* SABER */
-
-/*** Routines for manipulating access control list files ***/
-
-#include <zephyr/zephyr.h>
-#include <strings.h>
-#include <sys/file.h>
-#include <sys/stat.h>
-#include <ctype.h>
-#include <sys/param.h> /* for MAXHOSTNAMELEN */
-
-/* "aname.inst@realm" */
-#define MAX_PRINCIPAL_SIZE (ANAME_SZ + INST_SZ + REALM_SZ + 3)
-#define INST_SEP '.'
-#define REALM_SEP '@'
-
-#define LINESIZE 2048 /* Maximum line length in an acl file */
-
-#define NEW_FILE "%s.~NEWACL~" /* Format for name of altered acl file */
-#define WAIT_TIME 300 /* Maximum time allowed write acl file */
-
-#define CACHED_ACLS 64 /* How many acls to cache */
-#define ACL_LEN 256 /* Twice a reasonable acl length */
-
-#define MAX(a,b) (((a)>(b))?(a):(b))
-#define MIN(a,b) (((a)<(b))?(a):(b))
-
-#define COR(a,b) ((a!=NULL)?(a):(b))
-
-extern int errno;
-
-extern time_t time();
-
-/* Canonicalize a principal name */
-/* If instance is missing, it becomes "" */
-/* If realm is missing, it becomes the local realm */
-/* Canonicalized form is put in canon, which must be big enough to hold
- MAX_PRINCIPAL_SIZE characters */
-acl_canonicalize_principal(principal, canon)
- char *principal;
- char *canon;
-{
- char *end;
- char *dot, *atsign;
- int len;
-
- dot = (char *) strchr(principal, INST_SEP);
- atsign = (char *) strchr(principal, REALM_SEP);
-
- /* Maybe we're done already */
- if(dot != NULL && atsign != NULL) {
- if(dot < atsign) {
- /* It's for real */
- /* Copy into canon */
- strncpy(canon, principal, MAX_PRINCIPAL_SIZE);
- canon[MAX_PRINCIPAL_SIZE-1] = '\0';
- return;
- } else {
- /* Nope, it's part of the realm */
- dot = NULL;
- }
- }
-
- /* No such luck */
- end = principal + strlen(principal);
-
- /* Get the principal name */
- len = MIN(ANAME_SZ, COR(dot, COR(atsign, end)) - principal);
- strncpy(canon, principal, len);
- canon += len;
-
- /* Add INST_SEP */
- *canon++ = INST_SEP;
-
- /* Get the instance, if it exists */
- if(dot != NULL) {
- ++dot;
- len = MIN(INST_SZ, COR(atsign, end) - dot);
- strncpy(canon, dot, len);
- canon += len;
- }
-
- /* Add REALM_SEP */
- *canon++ = REALM_SEP;
-
- /* Get the realm, if it exists */
- /* Otherwise, default to local realm */
- if(atsign != NULL) {
- ++atsign;
- len = MIN(REALM_SZ, end - atsign);
- strncpy(canon, atsign, len);
- canon += len;
- *canon++ = '\0';
- }
-#ifdef KERBEROS
- else if(krb_get_lrealm(canon, 1) != KSUCCESS) {
- strcpy(canon, KRB_REALM);
- }
-#endif
-}
-
-#ifdef notdef
-/* Get a lock to modify acl_file */
-/* Return new FILE pointer */
-/* or NULL if file cannot be modified */
-/* REQUIRES WRITE PERMISSION TO CONTAINING DIRECTORY */
-static FILE *acl_lock_file(acl_file)
-char *acl_file;
-{
- struct stat s;
- char new[LINESIZE];
- int nfd;
- FILE *nf;
- int mode;
-
- if(stat(acl_file, &s) < 0) return(NULL);
- mode = s.st_mode;
- sprintf(new, NEW_FILE, acl_file);
- for(;;) {
- /* Open the new file */
- if((nfd = open(new, O_WRONLY|O_CREAT|O_EXCL, mode)) < 0) {
- if(errno == EEXIST) {
- /* Maybe somebody got here already, maybe it's just old */
- if(stat(new, &s) < 0) return(NULL);
- if(time(0) - s.st_ctime > WAIT_TIME) {
- /* File is stale, kill it */
- unlink(new);
- continue;
- } else {
- /* Wait and try again */
- sleep(1);
- continue;
- }
- } else {
- /* Some other error, we lose */
- return(NULL);
- }
- }
-
- /* If we got to here, the lock file is ours and ok */
- /* Reopen it under stdio */
- if((nf = fdopen(nfd, "w")) == NULL) {
- /* Oops, clean up */
- unlink(new);
- }
- return(nf);
- }
-}
-
-/* Commit changes to acl_file written onto FILE *f */
-/* Returns zero if successful */
-/* Returns > 0 if lock was broken */
-/* Returns < 0 if some other error occurs */
-/* Closes f */
-static int acl_commit(acl_file, f)
-char *acl_file;
-FILE *f;
-{
-#ifdef WRITE_ACL
- char new[LINESIZE];
- int ret;
- struct stat s;
-
- sprintf(new, NEW_FILE, acl_file);
- if(fflush(f) < 0
- || fstat(fileno(f), &s) < 0
- || s.st_nlink == 0) {
- acl_abort(acl_file, f);
- return(-1);
- }
-
- ret = rename(new, acl_file);
- fclose(f);
- return(ret);
-#else
- abort ();
-#endif
-}
-
-/* Abort changes to acl_file written onto FILE *f */
-/* Returns 0 if successful, < 0 otherwise */
-/* Closes f */
-static int acl_abort(acl_file, f)
-char *acl_file;
-FILE *f;
-{
-#ifdef WRITE_ACL
- char new[LINESIZE];
- int ret;
- struct stat s;
-
- /* make sure we aren't nuking someone else's file */
- if(fstat(fileno(f), &s) < 0
- || s.st_nlink == 0) {
- fclose(f);
- return(-1);
- } else {
- sprintf(new, NEW_FILE, acl_file);
- ret = unlink(new);
- fclose(f);
- return(ret);
- }
-#else
- abort ();
-#endif
-}
-
-/* Initialize an acl_file */
-/* Creates the file with permissions perm if it does not exist */
-/* Erases it if it does */
-/* Returns return value of acl_commit */
-int
-acl_initialize(acl_file, perm)
- char *acl_file;
- int perm;
-{
- FILE *new;
- int fd;
-
- /* Check if the file exists already */
- if((new = acl_lock_file(acl_file)) != NULL) {
- return(acl_commit(acl_file, new));
- } else {
- /* File must be readable and writable by owner */
- if((fd = open(acl_file, O_CREAT|O_EXCL, perm|0600)) < 0) {
- return(-1);
- } else {
- close(fd);
- return(0);
- }
- }
-}
-
-#endif /* notdef */
-
-/* Eliminate all whitespace character in buf */
-/* Modifies its argument */
-static nuke_whitespace(buf)
-char *buf;
-{
- register char *pin, *pout;
-
- for(pin = pout = buf; *pin != '\0'; pin++)
- if(!isspace(*pin)) *pout++ = *pin;
- *pout = '\0'; /* Terminate the string */
-}
-
-/* Hash table stuff */
-
-struct hashtbl {
- int size; /* Max number of entries */
- int entries; /* Actual number of entries */
- char **tbl; /* Pointer to start of table */
-};
-
-/* Make an empty hash table of size s */
-static struct hashtbl *make_hash(size)
-int size;
-{
- struct hashtbl *h;
-
- if(size < 1) size = 1;
- h = (struct hashtbl *) malloc(sizeof(struct hashtbl));
- h->size = size;
- h->entries = 0;
- h->tbl = (char **) calloc(size, sizeof(char *));
- return(h);
-}
-
-/* Destroy a hash table */
-static void
-destroy_hash(h)
- struct hashtbl *h;
-{
- int i;
-
- for(i = 0; i < h->size; i++) {
- if(h->tbl[i] != NULL) free(h->tbl[i]);
- }
- free(h->tbl);
- free(h);
-}
-
-/* Compute hash value for a string */
-static unsigned int
-hashval(s)
- char *s;
-{
- register unsigned hv;
-
- for(hv = 0; *s != '\0'; s++) {
- hv ^= ((hv << 3) ^ *s);
- }
- return(hv);
-}
-
-/* Add an element to a hash table */
-static add_hash(h, el)
-struct hashtbl *h;
-char *el;
-{
- unsigned hv;
- char *s;
- char **old;
- int i;
-
-#if 0
- fprintf (stderr, "adding %s to acl hash %08X\n", el, h);
-#endif
- /* Make space if it isn't there already */
- if(h->entries + 1 > (h->size >> 1)) {
- old = h->tbl;
- h->tbl = (char **) calloc(h->size << 1, sizeof(char *));
- for(i = 0; i < h->size; i++) {
- if(old[i] != NULL) {
- hv = hashval(old[i]) % (h->size << 1);
- while(h->tbl[hv] != NULL) hv = (hv+1) % (h->size << 1);
- h->tbl[hv] = old[i];
- }
- }
- h->size = h->size << 1;
- free(old);
- }
-
- hv = hashval(el) % h->size;
- while(h->tbl[hv] != NULL && strcmp(h->tbl[hv], el)) hv = (hv+1) % h->size;
- s = (char *) malloc(strlen(el)+1);
- strcpy(s, el);
- h->tbl[hv] = s;
- h->entries++;
-}
-
-/* Returns nonzero if el is in h */
-static int
-check_hash(h, el)
- struct hashtbl *h;
- char *el;
-{
- unsigned hv;
-
-#if 0
- fprintf (stderr, "looking for %s in acl %08X\n", el, h);
-#endif
- for(hv = hashval(el) % h->size; h->tbl[hv]; hv = (hv + 1) % h->size) {
-#if 0
- fprintf (stderr, "\tstrcmp (%s,...)\n", h->tbl[hv]);
-#endif
- if (!strcmp(h->tbl[hv], el)) {
-#if 0
- fprintf (stderr, "success!\n");
-#endif
- return 1;
- }
- }
-#if 0
- fprintf (stderr, "failure\n");
-#endif
- return 0;
-}
-
-struct acl {
- char filename[LINESIZE]; /* Name of acl file */
- struct hashtbl *acl; /* Acl entries */
-};
-
-static struct acl acl_cache[CACHED_ACLS];
-
-static int acl_cache_count = 0;
-static int acl_cache_next = 0;
-
-/* Returns < 0 if unsuccessful in loading acl */
-/* Returns index into acl_cache otherwise */
-/* Note that if acl is already loaded, this is just a lookup */
-int acl_load(name)
- char *name;
-{
- int i;
- FILE *f;
- char buf[MAX_PRINCIPAL_SIZE];
- char canon[MAX_PRINCIPAL_SIZE];
-
- /* See if it's there already */
- for(i = 0; i < acl_cache_count; i++) {
- if (!strcmp(acl_cache[i].filename, name))
- goto got_it;
- }
-
- /* It isn't, load it in */
- /* maybe there's still room */
- if(acl_cache_count < CACHED_ACLS) {
- i = acl_cache_count++;
- } else {
- /* No room, clean one out */
- i = acl_cache_next;
- acl_cache_next = (acl_cache_next + 1) % CACHED_ACLS;
- if(acl_cache[i].acl) {
- destroy_hash(acl_cache[i].acl);
- acl_cache[i].acl = (struct hashtbl *) 0;
- }
- }
-
- /* Set up the acl */
- strcpy(acl_cache[i].filename, name);
- /* Force reload */
- acl_cache[i].acl = (struct hashtbl *) 0;
-
- got_it:
- /*
- * See if we need to reload the ACL
- */
- if (acl_cache[i].acl == (struct hashtbl *) 0) {
- /* Gotta reload */
-#if 0
- fprintf (stderr, "attempting to load %s\n", name);
-#endif
- if ((f = fopen(name, "r")) == NULL) {
-#if 0
- perror (name);
-#endif
- return -1;
- }
- if (acl_cache[i].acl) destroy_hash(acl_cache[i].acl);
- acl_cache[i].acl = make_hash(ACL_LEN);
- while(fgets(buf, sizeof(buf), f) != NULL) {
- nuke_whitespace(buf);
- acl_canonicalize_principal(buf, canon);
- add_hash(acl_cache[i].acl, canon);
- }
- fclose(f);
- }
- return(i);
-}
-
-/*
- * This destroys all cached ACL's so that new ones will be loaded in
- * the next time they are requested.
- */
-void
-acl_cache_reset()
-{
- int i;
-
- /* See if it's there already */
- for(i = 0; i < acl_cache_count; i++)
- if (acl_cache[i].acl) {
- destroy_hash(acl_cache[i].acl);
- acl_cache[i].acl = (struct hashtbl *) 0;
- }
- acl_cache_count = 0;
- acl_cache_next = 0;
-}
-
-
-/* Returns nonzero if it can be determined that acl contains principal */
-/* Principal is not canonicalized, and no wildcarding is done */
-acl_exact_match(acl, principal)
- char *acl;
- char *principal;
-{
- int idx;
-
-#if 0
- fprintf (stderr, "checking for %s in %s\n", principal, acl);
-#endif
- return((idx = acl_load(acl)) >= 0
- && check_hash(acl_cache[idx].acl, principal));
-}
-
-/* Returns nonzero if it can be determined that acl contains principal */
-/* Recognizes wildcards in acl of the form
- name.*@realm, *.*@realm, and *.*@* */
-int
-acl_check(acl, principal)
- char *acl;
- char *principal;
-{
- char buf[MAX_PRINCIPAL_SIZE];
- char canon[MAX_PRINCIPAL_SIZE];
- char *realm;
-
- acl_canonicalize_principal(principal, canon);
-
- /* Is it there? */
- if (acl_exact_match(acl, canon))
- return 1;
-
- /* Try the wildcards */
- realm = (char *) strchr(canon, REALM_SEP);
- *((char *)strchr(canon, INST_SEP)) = '\0'; /* Chuck the instance */
-
- sprintf(buf, "%s.*%s", canon, realm);
- if(acl_exact_match(acl, buf)) return 1;
-
- sprintf(buf, "*.*%s", realm);
- if(acl_exact_match(acl, buf) || acl_exact_match(acl, "*.*@*")) return(1);
-
- return(0);
-}
-
-#ifdef notdef
-/* Adds principal to acl */
-/* Wildcards are interpreted literally */
-int
-acl_add(acl, principal)
- char *acl;
- char *principal;
-{
- int idx;
- int i;
- FILE *new;
- char canon[MAX_PRINCIPAL_SIZE];
-
- acl_canonicalize_principal(principal, canon);
-
- if((new = acl_lock_file(acl)) == NULL) return(-1);
- if((acl_exact_match(acl, canon))
- || (idx = acl_load(acl)) < 0) {
- acl_abort(acl, new);
- return(-1);
- }
- /* It isn't there yet, copy the file and put it in */
- for(i = 0; i < acl_cache[idx].acl->size; i++) {
- if(acl_cache[idx].acl->tbl[i] != NULL) {
- if(fputs(acl_cache[idx].acl->tbl[i], new) == NULL
- || putc('\n', new) != '\n') {
- acl_abort(acl, new);
- return(-1);
- }
- }
- }
- fputs(canon, new);
- putc('\n', new);
- return(acl_commit(acl, new));
-}
-
-/* Removes principal from acl */
-/* Wildcards are interpreted literally */
-int
-acl_delete(acl, principal)
- char *acl;
- char *principal;
-{
- int idx;
- int i;
- FILE *new;
- char canon[MAX_PRINCIPAL_SIZE];
-
- acl_canonicalize_principal(principal, canon);
-
- if((new = acl_lock_file(acl)) == NULL) return(-1);
- if((!acl_exact_match(acl, canon))
- || (idx = acl_load(acl)) < 0) {
- acl_abort(acl, new);
- return(-1);
- }
- /* It isn't there yet, copy the file and put it in */
- for(i = 0; i < acl_cache[idx].acl->size; i++) {
- if(acl_cache[idx].acl->tbl[i] != NULL
- && strcmp(acl_cache[idx].acl->tbl[i], canon)) {
- fputs(acl_cache[idx].acl->tbl[i], new);
- putc('\n', new);
- }
- }
- return(acl_commit(acl, new));
-}
-#endif /* notdef */
diff --git a/server/new.h b/server/new.h
deleted file mode 100644
index 62783c6..0000000
--- a/server/new.h
+++ /dev/null
@@ -1,6 +0,0 @@
--*- text -*-
-
-This file is here just to confuse makedepend. Normally, makedepend
-will not search the directories used for C++ header files; thus,
-anything specific to C++ won't be found unless we fake it out by
-putting a file in the working directory for it to find.
diff --git a/zwgc/Dictionary/generate_dictionary_instance b/zwgc/Dictionary/generate_dictionary_instance
deleted file mode 100755
index 444d51b..0000000
--- a/zwgc/Dictionary/generate_dictionary_instance
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/bin/csh -f
-# This file is part of the Project Athena Zephyr Notification System.
-# It is a tool used in the compilation of zwgc, the Zephyr WindowGram
-# client.
-#
-# Created by: Marc Horowitz <marc@athena.mit.edu>
-#
-# $Source$
-# $Author$
-# $Id$
-#
-# Copyright (c) 1989 by the Massachusetts Institute of Technology.
-# For copying and distribution information, see the file
-# "mit-copyright.h".
-#
-
-set source=$1
-shift
-
-if (z$1x == zx) then
- echo "usage: generate_dictionary_instance <srcdir> <typename> [<include file>]"
- exit 1
-endif
-if (-r $source/dictionary.c) then
-else
- echo "generate_dictionary_instance: unable to open" $source/dictionary.c
- exit 2
-endif
-
-if (z$2x == zx) then
- echo > $1_dictionary.h
-else
- echo "#include" '"'$2'"' > $1_dictionary.h
-endif
-sed "s/TYPE_T/$1/g" $source/dictionary.h >> $1_dictionary.h
-sed "s/TYPE_T/$1/g" $source/dictionary.c > $1_dictionary.c
diff --git a/zwgc/generate_stack_instance b/zwgc/generate_stack_instance
deleted file mode 100755
index da237ca..0000000
--- a/zwgc/generate_stack_instance
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/bin/csh -f
-
-# This file is part of the Project Athena Zephyr Notification System.
-# It is one of the source files comprising zwgc, the Zephyr WindowGram
-# client.
-#
-# Created by: Marc Horowitz <marc@athena.mit.edu>
-#
-# $Source$
-# $Author$
-#
-# Copyright (c) 1989 by the Massachusetts Institute of Technology.
-# For copying and distribution information, see the file
-# "mit-copyright.h".
-#
-set rcsid_generate_stack_instance='$Id$'
-
-set source=$1
-shift
-
-if (z$1x == zx) then
- echo "usage: generate_stack_instance <srcdir> <typename> [<include file>]"
- exit 1
-endif
-if (-r $source/stack.h) then
-else
- echo "generate_stack_instance: unable to open" $source/stack.h
- exit 2
-endif
-
-if (z$2x == zx) then
- echo > $1_stack.h
-else
- echo "#include" '"'$2'"' > $1_stack.h
-endif
-sed "s/TYPE_T/$1/g" $source/stack.h >> $1_stack.h