changeset 51:a1dc75e38e73

rogue4: ported to autoconf.
author elwin
date Tue, 11 Oct 2011 15:20:40 +0000
parents c9382913d6df
children ae4f413fe76c
files rogue4/Makefile rogue4/Makefile.in rogue4/acinclude.m4 rogue4/configure.ac rogue4/install-sh rogue4/rogue.6 rogue4/rogue.6.in rogue4/rogue.h rogue4/rogue.me rogue4/rogue.me.in
diffstat 10 files changed, 1956 insertions(+), 1003 deletions(-) [+]
line wrap: on
line diff
--- a/rogue4/Makefile	Mon Oct 10 20:57:51 2011 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,149 +0,0 @@
-#
-# Makefile for rogue
-# @(#)Makefile	4.13 (Berkeley) 1/23/82
-#
-# Rogue: Exploring the Dungeons of Doom
-# Copyright (C) 1980, 1981, 1982 Michael Toy, Ken Arnold and Glenn Wichman
-# All rights reserved.
-#
-# See the file LICENSE.TXT for full copyright and licensing information.
-#
-
-DISTNAME=rogue5.2.2
-
-HDRS=	rogue.h extern.h
-DOBJS=	vers.o extern.o armor.o chase.o command.o daemon.o daemons.o \
-	fight.o init.o io.o list.o main.o misc.o monsters.o move.o \
-	new_level.o options.o pack.o passages.o potions.o rings.o rip.o \
-	rooms.o save.o scrolls.o state.o sticks.o things.o weapons.o wizard.o\
-        xcrypt.o mdport.o
-OBJS=	$(DOBJS) mach_dep.o
-CFILES=	vers.c extern.c armor.c chase.c command.c daemon.c daemons.c \
-	fight.c init.c io.c list.c main.c misc.c monsters.c move.c \
-	new_level.c options.c pack.c passages.c potions.c rings.c rip.c \
-	rooms.c save.c scrolls.c state.c sticks.c things.c weapons.c wizard.c \
-	mach_dep.c xcrypt.c mdport.c
-MISC=	Makefile LICENSE.TXT rogue.6 rogue.me
-
-CC    = gcc
-CFLAGS= -O3 -DSAVEDIR=\"/usr/local/games/roguelike/rogue4save/\" \
-        -DLOGFILE=\"/usr/local/games/roguelike/rogue4.log\"
-CRLIB = -lcurses
-RM    = rm -f
-TAR   = tar
-
-SCOREFILE=
-SF=-DSCOREFILE=\"/usr/local/games/roguelike/rogue4.scr\" \
-    -DLOCKFILE=\"/usr/local/games/roguelike/rogue4save/rogue4.lck\"
-NAMELIST=
-NL=
-#MACHDEP=	-DMAXLOAD=40 -DLOADAV -DCHECKTIME=4
-MACHDEP=
-
-.c.o:
-	@echo $(CC) -c $(CFLAGS) $*.c
-	@$(CC) -c $(CFLAGS) $*.c -o $*.o
-#	@cpp -P $(CFLAGS) $*.c | ./xstr -v -c -
-#	@cc -c $(CFLAGS) x.c
-#	@mv x.o $*.o
-
-rogue: $(HDRS) $(OBJS) # xs.o
-#	@rm -f x.c
-#	$(CC) $(LDFLAGS) xs.o $(OBJS) $(CRLIB) 
-	$(CC) $(LDFLAGS) $(OBJS) $(CRLIB) -o $@
-
-vers.o:
-	$(CC) -c $(CFLAGS) vers.c
-
-mach_dep.o: mach_dep.c
-	$(CC) -c $(CFLAGS) $(SF) $(NL) $(MACHDEP) mach_dep.c
-
-xs.o: strings
-	./xstr
-	$(CC) -c $(CFLAGS) xs.c
-
-xstr: xstr.c
-	$(CC) -s -O -o xstr xstr.c
-
-findpw: findpw.c xcrypt.c
-	$(CC) -s -o findpw findpw.c xcrypt.c
-
-prob: prob.o extern.o xs.o
-	$(CC) -O -o prob prob.o extern.o xs.o
-
-prob.o: prob.c rogue.h
-	$(CC) -O -c prob.c
-
-clean:
-	rm -f $(POBJS) $(OBJS) core a.out p.out rogue strings make.out rogue.tar vgrind.* x.c x.o xs.c xs.o linterrs findpw distmod.o xs.po xstr rogue rogue.exe rogue.tar.gz rogue.cat rogue.doc xstr.exe
-
-dist.src:
-	make clean
-	tar cf $(DISTNAME)-src.tar $(CFILES) $(HDRS) $(MISC)
-	gzip -f $(DISTNAME)-src.tar
-
-debug.irix:
-	make clean
-	make CC=cc CFLAGS="-woff 1116 -g -DWIZARD" rogue
-dist.irix:
-	make clean
-	make CC=cc CFLAGS="-woff 1116 -O3" rogue
-	tbl rogue.me | nroff -me | colcrt - > rogue.doc
-	nroff -man rogue.6 | colcrt - > rogue.cat
-	tar cf $(DISTNAME)-irix.tar rogue LICENSE.TXT rogue.cat rogue.doc
-	gzip -f $(DISTNAME)-irix.tar
-
-debug.aix:
-	make clean
-	make CC=xlc CFLAGS="-qmaxmem=16768 -g -qstrict -DWIZARD" rogue
-dist.aix:
-	make clean
-	make CC=xlc CFLAGS="-qmaxmem=16768 -O3 -qstrict" rogue
-	tbl rogue.me | nroff -me | colcrt - > rogue.doc
-	nroff -man rogue.6 | colcrt - > rogue.cat
-	tar cf $(DISTNAME)-aix.tar rogue LICENSE.TXT rogue.cat rogue.doc
-	gzip -f $(DISTNAME)-aix.tar
-
-debug.linux:
-	make clean
-	make CFLAGS="-g3 -DWIZARD" rogue
-dist.linux:
-	make clean
-	make rogue
-	groff -P-c -t -me -Tascii rogue.me | sed -e 's/.\x08//g' > rogue.doc
-	groff -man rogue.6 | sed -e 's/.\x08//g' > rogue.cat
-	tar cf $(DISTNAME)-linux.tar rogue LICENSE.TXT rogue.cat rogue.doc
-	gzip -f $(DISTNAME)-linux.tar
-	
-debug.interix:
-	make clean
-	make CFLAGS="-g3 -DWIZARD" rogue
-dist.interix: 
-	make clean
-	make rogue
-	groff -P-b -P-u -t -me -Tascii rogue.me > rogue.doc
-	groff -P-b -P-u -man -Tascii rogue.6 > rogue.cat
-	tar cf $(DISTNAME)-interix.tar rogue LICENSE.TXT rogue.cat rogue.doc
-	gzip -f $(DISTNAME)-interix.tar
-	
-debug.cygwin:
-	make clean
-	make CFLAGS="-g3 -DWIZARD" rogue
-dist.cygwin:
-	make clean
-	make rogue
-	groff -P-c -t -me -Tascii rogue.me | sed -e 's/.\x08//g' > rogue.doc
-	groff -P-c -man -Tascii rogue.6 | sed -e 's/.\x08//g' > rogue.cat
-	tar cf $(DISTNAME)-cygwin.tar rogue.exe LICENSE.TXT rogue.cat rogue.doc
-	gzip -f $(DISTNAME)-cygwin.tar
-	
-debug.djgpp:
-	make clean
-	make CFLAGS="-g3 -DWIZARD" LDFLAGS="-L$(DJDIR)/LIB" CRLIB="-lpdcurses" rogue
-dist.djgpp: 
-	make clean
-	make CFLAGS="-O3" LDFLAGS="-L$(DJDIR)/LIB" CRLIB="-lpdcurses" rogue
-	groff -t -me -Tascii rogue.me | sed -e 's/.\x08//g' > rogue.doc
-	groff -man -Tascii rogue.6 | sed -e 's/.\x08//g' > rogue.cat
-	rm -f $(DISTNAME)-djgpp.zip
-	zip $(DISTNAME)-djgpp.zip rogue.exe LICENSE.TXT rogue.cat rogue.doc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rogue4/Makefile.in	Tue Oct 11 15:20:40 2011 +0000
@@ -0,0 +1,227 @@
+#
+# Makefile for rogue
+# @(#)Makefile	4.13 (Berkeley) 1/23/82
+#
+# Rogue: Exploring the Dungeons of Doom
+# Copyright (C) 1980, 1981, 1982 Michael Toy, Ken Arnold and Glenn Wichman
+# All rights reserved.
+#
+# See the file LICENSE.TXT for full copyright and licensing information.
+#
+
+DISTNAME=@PACKAGE_TARNAME@@PACKAGE_VERSION@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@-@PACKAGE_VERSION@
+PROGRAM=@PROGRAM@
+
+CC    = @CC@
+LIBS =	@LIBS@
+
+#SCOREFILE=\"/usr/local/games/roguelike/rogue4.scr\"
+SCOREFILE=@SCOREFILE@
+#LOGFILE=\"/usr/local/games/roguelike/rogue4.log\"
+LOGFILE=@LOGFILE@
+#SAVEDIR=\"/usr/local/games/roguelike/rogue4save/\"
+SAVEDIR=@SAVEDIR@
+#LOCKFILE=\"/usr/local/games/roguelike/rogue4save/rogue4.lck\"
+LOCKFILE=@LOCKFILE@
+#GROUPOWNER=games
+GROUPOWNER=@GROUPOWNER@
+
+DESTDIR=@DESTDIR@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+datarootdir=@datarootdir@
+bindir=@bindir@
+mandir=@mandir@
+man6dir=$(mandir)/man6
+docdir=@docdir@
+
+HDRS=	rogue.h extern.h
+DOBJS=	vers.o extern.o armor.o chase.o command.o daemon.o daemons.o \
+	fight.o init.o io.o list.o main.o misc.o monsters.o move.o \
+	new_level.o options.o pack.o passages.o potions.o rings.o rip.o \
+	rooms.o save.o scrolls.o state.o sticks.o things.o weapons.o wizard.o\
+        xcrypt.o mdport.o
+OBJS=	$(DOBJS) mach_dep.o
+CFILES=	vers.c extern.c armor.c chase.c command.c daemon.c daemons.c \
+	fight.c init.c io.c list.c main.c misc.c monsters.c move.c \
+	new_level.c options.c pack.c passages.c potions.c rings.c rip.c \
+	rooms.c save.c scrolls.c state.c sticks.c things.c weapons.c wizard.c \
+	mach_dep.c xcrypt.c mdport.c
+MISC=	Makefile LICENSE.TXT rogue.6 rogue.me
+
+CFLAGS= -O3
+CRLIB = -lcurses
+RM    = rm -f
+TAR   = tar
+TOUCH=touch
+MKDIR=mkdir
+CHGRP=chgrp
+CHMOD=chmod
+INSTALL=@INSTALL@
+
+SF=
+NAMELIST=
+NL=
+#MACHDEP=	-DMAXLOAD=40 -DLOADAV -DCHECKTIME=4
+MACHDEP=
+
+.c.o:
+	@echo $(CC) -c $(CFLAGS) $*.c
+	@$(CC) -c $(CFLAGS) $*.c -o $*.o
+#	@cpp -P $(CFLAGS) $*.c | ./xstr -v -c -
+#	@cc -c $(CFLAGS) x.c
+#	@mv x.o $*.o
+
+@PROGRAM@: $(HDRS) $(OBJS) # xs.o
+#	@rm -f x.c
+#	$(CC) $(LDFLAGS) xs.o $(OBJS) $(CRLIB) 
+	$(CC) $(LDFLAGS) $(OBJS) $(LIBS) -o $@
+
+main.o: main.c $(HDRS)
+	$(CC) -c $(CFLAGS) -o $@ main.c
+
+vers.o:
+	$(CC) -c $(CFLAGS) vers.c
+
+mach_dep.o: mach_dep.c
+	$(CC) -c $(CFLAGS) $(SF) $(NL) $(MACHDEP) mach_dep.c
+
+xs.o: strings
+	./xstr
+	$(CC) -c $(CFLAGS) xs.c
+
+xstr: xstr.c
+	$(CC) -s -O -o xstr xstr.c
+
+findpw: findpw.c xcrypt.c
+	$(CC) -s -o findpw findpw.c xcrypt.c
+
+prob: prob.o extern.o xs.o
+	$(CC) -O -o prob prob.o extern.o xs.o
+
+prob.o: prob.c rogue.h
+	$(CC) -O -c prob.c
+
+clean:
+	rm -f $(POBJS) $(OBJS) core a.out p.out @PROGRAM@ strings make.out rogue.tar vgrind.* x.c x.o xs.c xs.o linterrs findpw distmod.o xs.po xstr rogue rogue.exe rogue.tar.gz rogue.cat rogue.doc xstr.exe
+
+maintainer-clean:
+	make clean
+	$(RM) Makefile config.h
+	$(RM) config.status config.log
+	$(RM) $(PROGRAM).scr $(PROGRAM).log $(PROGRAM).lck
+	$(RM) rogue.6 rogue.me
+
+install: $(PROGRAM)
+	-$(TOUCH) test
+	-if test ! -f $(DESTDIR)$(SCOREFILE) ; \
+	 then $(INSTALL) -m 0664 test $(DESTDIR)$(SCOREFILE) ; fi
+	-if test "x$(LOGFILE)" != "x" -a ! -f $(DESTDIR)$(LOGFILE) ; then \
+	$(INSTALL) -m 0664 test $(DESTDIR)$(LOGFILE) ; fi
+	-if test "x$(SAVEDIR)" != "x" -a ! -d $(DESTDIR)$(SAVEDIR) ; then \
+	$(MKDIR) -p $(DESTDIR)$(SAVEDIR) ; fi
+	-$(INSTALL) -m 0755 $(PROGRAM) $(DESTDIR)$(bindir)/$(PROGRAM)
+	-if test "x$(GROUPOWNER)" != "x" ; then \
+	    $(CHGRP) $(GROUPOWNER) $(DESTDIR)$(SCOREFILE) ; \
+	    $(CHGRP) $(GROUPOWNER) $(DESTDIR)$(LOGFILE) ; \
+	    $(CHGRP) $(GROUPOWNER) $(DESTDIR)$(bindir)/$(PROGRAM) ; \
+	    $(CHGRP) $(GROUPOWNER) $(DESTDIR)$(SAVEDIR) ; \
+	    $(CHMOD) 02755 $(DESTDIR)$(bindir)/$(PROGRAM) ; \
+	    $(CHMOD) 0464 $(DESTDIR)$(SCOREFILE) ; \
+	    $(CHMOD) 0464 $(DESTDIR)$(LOGFILE) ; \
+	    $(CHMOD) 0775 $(DESTDIR)$(SAVEDIR) ; \
+         fi
+	-if test -d $(DESTDIR)$(man6dir) ; \
+	 then $(INSTALL) -m 0644 rogue.6 $(DESTDIR)$(man6dir)/$(PROGRAM).6 ; fi
+	-if test ! -d $(DESTDIR)$(man6dir) ; \
+	 then $(INSTALL) -m 0644 rogue.6 $(DESTDIR)$(mandir)/$(PROGRAM).6 ; fi
+	-if test ! -d $(DESTDIR)$(docdir) ; \
+	    then $(MKDIR) -p $(DESTDIR)$(docdir) ; fi
+	-$(INSTALL) -m 0644 LICENSE.TXT $(DESTDIR)$(docdir)/LICENSE.TXT
+	-$(INSTALL) -m 0644 rogue.me $(DESTDIR)$(docdir)/$(PROGRAM).me
+	-if test "x$(LOCKFILE)" != "x" -a ! -f $(DESTDIR)$(LOCKFILE)  ; then \
+	    $(INSTALL) -m 0666 test $(DESTDIR)$(LOCKFILE)  ; \
+	    $(RM) $(DESTDIR)$(LOCKFILE) ; \
+	 fi
+	-$(RM) test
+
+uninstall:	
+	-$(RM) $(DESTDIR)$(bindir)/$(PROGRAM)
+	-$(RM) $(DESTDIR)$(man6dir)/$(PROGRAM).6
+	-$(RM) $(DESTDIR)$(docdir)$(PROGRAM)/$(PROGRAM).doc
+	-$(RM) $(DESTDIR)$(LOCKFILE)
+	-$(RMDIR) $(DESTDIR)$(docdir)$(PROGRAM)
+    
+reinstall: uninstall install
+
+dist.src:
+	make clean
+	tar cf $(DISTNAME)-src.tar $(CFILES) $(HDRS) $(MISC)
+	gzip -f $(DISTNAME)-src.tar
+
+debug.irix:
+	make clean
+	make CC=cc CFLAGS="-woff 1116 -g -DWIZARD" rogue
+dist.irix:
+	make clean
+	make CC=cc CFLAGS="-woff 1116 -O3" rogue
+	tbl rogue.me | nroff -me | colcrt - > rogue.doc
+	nroff -man rogue.6 | colcrt - > rogue.cat
+	tar cf $(DISTNAME)-irix.tar rogue LICENSE.TXT rogue.cat rogue.doc
+	gzip -f $(DISTNAME)-irix.tar
+
+debug.aix:
+	make clean
+	make CC=xlc CFLAGS="-qmaxmem=16768 -g -qstrict -DWIZARD" rogue
+dist.aix:
+	make clean
+	make CC=xlc CFLAGS="-qmaxmem=16768 -O3 -qstrict" rogue
+	tbl rogue.me | nroff -me | colcrt - > rogue.doc
+	nroff -man rogue.6 | colcrt - > rogue.cat
+	tar cf $(DISTNAME)-aix.tar rogue LICENSE.TXT rogue.cat rogue.doc
+	gzip -f $(DISTNAME)-aix.tar
+
+debug.linux:
+	make clean
+	make CFLAGS="-g3 -DWIZARD" rogue
+dist.linux:
+	make clean
+	make rogue
+	groff -P-c -t -me -Tascii rogue.me | sed -e 's/.\x08//g' > rogue.doc
+	groff -man rogue.6 | sed -e 's/.\x08//g' > rogue.cat
+	tar cf $(DISTNAME)-linux.tar rogue LICENSE.TXT rogue.cat rogue.doc
+	gzip -f $(DISTNAME)-linux.tar
+	
+debug.interix:
+	make clean
+	make CFLAGS="-g3 -DWIZARD" rogue
+dist.interix: 
+	make clean
+	make rogue
+	groff -P-b -P-u -t -me -Tascii rogue.me > rogue.doc
+	groff -P-b -P-u -man -Tascii rogue.6 > rogue.cat
+	tar cf $(DISTNAME)-interix.tar rogue LICENSE.TXT rogue.cat rogue.doc
+	gzip -f $(DISTNAME)-interix.tar
+	
+debug.cygwin:
+	make clean
+	make CFLAGS="-g3 -DWIZARD" rogue
+dist.cygwin:
+	make clean
+	make rogue
+	groff -P-c -t -me -Tascii rogue.me | sed -e 's/.\x08//g' > rogue.doc
+	groff -P-c -man -Tascii rogue.6 | sed -e 's/.\x08//g' > rogue.cat
+	tar cf $(DISTNAME)-cygwin.tar rogue.exe LICENSE.TXT rogue.cat rogue.doc
+	gzip -f $(DISTNAME)-cygwin.tar
+	
+debug.djgpp:
+	make clean
+	make CFLAGS="-g3 -DWIZARD" LDFLAGS="-L$(DJDIR)/LIB" rogue
+dist.djgpp: 
+	make clean
+	make CFLAGS="-O3" LDFLAGS="-L$(DJDIR)/LIB" rogue
+	groff -t -me -Tascii rogue.me | sed -e 's/.\x08//g' > rogue.doc
+	groff -man -Tascii rogue.6 | sed -e 's/.\x08//g' > rogue.cat
+	rm -f $(DISTNAME)-djgpp.zip
+	zip $(DISTNAME)-djgpp.zip rogue.exe LICENSE.TXT rogue.cat rogue.doc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rogue4/acinclude.m4	Tue Oct 11 15:20:40 2011 +0000
@@ -0,0 +1,122 @@
+AC_DEFUN([MP_WITH_CURSES],
+  [AC_ARG_WITH(ncurses, [  --with-ncurses          Force the use of ncurses over curses],,)
+   mp_save_LIBS="$LIBS"
+   CURSES_LIB=""
+   if test "$with_ncurses" != yes
+   then
+     AC_CACHE_CHECK([for working curses], mp_cv_curses,
+       [LIBS="$LIBS -lcurses"
+        AC_TRY_LINK(
+          [#include <curses.h>],
+          [chtype a; int b=A_STANDOUT, c=KEY_LEFT; initscr(); ],
+          mp_cv_curses=yes, mp_cv_curses=no)])
+     if test "$mp_cv_curses" = yes
+     then
+       AC_DEFINE(HAVE_CURSES_H, 1, [Define to 1 if libcurses is requested])
+       #AC_DEFINE(HAVE_CURSES_H)
+       CURSES_LIB="-lcurses"
+     fi
+   fi
+   if test ! "$CURSES_LIB"
+   then
+     AC_CACHE_CHECK([for working ncurses], mp_cv_ncurses,
+       [LIBS="$mp_save_LIBS -lncurses"
+        AC_TRY_LINK(
+          [#include <ncurses.h>],
+          [chtype a; int b=A_STANDOUT, c=KEY_LEFT; initscr(); ],
+          mp_cv_ncurses=yes, mp_cv_ncurses=no)])
+     if test "$mp_cv_ncurses" = yes
+     then
+       AC_DEFINE(HAVE_NCURSES_H, 1, [Define to 1 if libncurses is requested])
+       CURSES_LIB="-lncurses"
+     fi
+   fi
+   if test ! "$CURSES_LIB"
+   then
+     AC_CACHE_CHECK([for working pdcurses], mp_cv_pdcurses,
+       [LIBS="$mp_save_LIBS -lpdcurses"
+        AC_TRY_LINK(
+          [#include <curses.h>],
+          [chtype a; int b=A_STANDOUT, c=KEY_LEFT; initscr(); ],
+          mp_cv_pdcurses=yes, mp_cv_pdcurses=no)])
+     if test "$mp_cv_pdcurses" = yes
+     then
+       AC_DEFINE(HAVE_CURSES_H, 1, [Define to 1 if libcurses is requested])
+       CURSES_LIB="-lpdcurses"
+     fi
+   fi
+   if test ! "$CURSES_LIB"
+   then
+     AC_CACHE_CHECK([for working pdcur], mp_cv_pdcur,
+       [LIBS="$mp_save_LIBS -lpdcur"
+        AC_TRY_LINK(
+          [#include <curses.h>],
+          [chtype a; int b=A_STANDOUT, c=KEY_LEFT; initscr(); ],
+          mp_cv_pdcur=yes, mp_cv_pdcur=no)])
+     if test "$mp_cv_pdcur" = yes
+     then
+       AC_DEFINE(HAVE_CURSES_H, 1, [Define to 1 if libcurses is requested])
+       CURSES_LIB="-lpdcur"
+     fi
+   fi
+   if test ! "$CURSES_LIB"
+   then
+     AC_CACHE_CHECK([for working peer pdcurses], mp_cv_lpdcurses,
+       [LIBS="$mp_save_LIBS ../pdcurses/pdcurses.a"
+        AC_TRY_LINK(
+          [#include "../pdcurses/curses.h"],
+          [chtype a; int b=A_STANDOUT, c=KEY_LEFT; initscr(); ],
+          mp_cv_lpdcurses=yes, mp_cv_lpdcurses=no)])
+     if test "$mp_cv_lpdcurses" = yes
+     then
+       AC_DEFINE(HAVE_CURSES_H, 1, [Define to 1 if libcurses is requested])
+       CURSES_LIB="../pdcurses/pdcurses.a"
+       RF_ADDTO(CPPFLAGS,"-I../pdcurses")
+     fi
+   fi
+   AC_CACHE_CHECK([for ESCDELAY variable],
+		   [mc_cv_ncurses_escdelay],
+		   [AC_TRY_LINK([], [
+			extern int ESCDELAY;
+			ESCDELAY = 0;
+			],
+			[mc_cv_ncurses_escdelay=yes],
+			[mc_cv_ncurses_escdelay=no])
+    ])
+    if test "$mc_cv_ncurses_escdelay" = yes; then
+	AC_DEFINE(HAVE_ESCDELAY, 1,
+		  [Define if ncurses has ESCDELAY variable])
+    fi
+   if test ! "$CURSES_LIB" ; then
+       LIBS="$mp_save_LIBS"
+   fi
+])dnl
+
+dnl
+dnl RF_ADDTO(variable, value)
+dnl
+dnl  Add value to variable
+dnl
+AC_DEFUN([RF_ADDTO],[
+  if test "x$$1" = "x"; then
+    test "x$silent" != "xyes" && echo "  setting $1 to \"$2\""
+    $1="$2"
+  else
+    apr_addto_bugger="$2"
+    for i in $apr_addto_bugger; do
+      apr_addto_duplicate="0"
+      for j in $$1; do
+        if test "x$i" = "x$j"; then
+          apr_addto_duplicate="1"
+          break
+        fi
+      done
+      if test $apr_addto_duplicate = "0"; then
+        test "x$silent" != "xyes" && echo "  adding \"$i\" to $1"
+        $1="$$1 $i"
+      fi
+    done
+  fi
+])dnl
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rogue4/configure.ac	Tue Oct 11 15:20:40 2011 +0000
@@ -0,0 +1,232 @@
+#                                               -*- Autoconf -*-
+# Process this file with autoconf to produce a configure script.
+
+AC_PREREQ(2.56)
+AC_INIT([Rogue],[5.2.2], [yendor@rogueforge.net])
+AC_CONFIG_SRCDIR([armor.c])
+AC_CONFIG_HEADERS([config.h])
+# May not be needed for the documentation
+AC_CONFIG_FILES([Makefile rogue.6 rogue.me])
+
+# Checks for programs.
+AC_PROG_CC
+# Checks for libraries.
+MP_WITH_CURSES
+# Checks for header files.
+AC_HEADER_STDC
+AC_CHECK_HEADERS([arpa/inet.h sys/utsname.h pwd.h fcntl.h limits.h nlist.h stdlib.h string.h sys/ioctl.h termios.h unistd.h utmp.h term.h ncurses/term.h process.h])
+# WARN: the sources often don't include the headers when needed.  That is one
+# reason why adding "-Wall" to CFLAGS produces 1246 lines of messages.
+
+# Checks for typedefs, structures, and compiler characteristics.
+AC_TYPE_UID_T
+AC_TYPE_SIZE_T
+AC_STRUCT_TM
+# Checks for library functions.
+AC_FUNC_FORK
+AC_PROG_GCC_TRADITIONAL
+AC_FUNC_LSTAT
+AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK
+AC_TYPE_SIGNAL
+AC_FUNC_STAT
+AC_FUNC_VPRINTF
+AC_CHECK_FUNCS([erasechar killchar alarm getpass memset setenv strchr nlist _spawnl spawnl getpwuid loadav getloadavg strerror setgid setuid getuid getgid])
+AC_PROG_INSTALL
+
+# Programs to process the documentation
+AC_CHECK_PROG([NROFF], [nroff], [nroff],)
+AC_CHECK_PROG([GROFF], [groff], [groff],)
+AC_CHECK_PROG([COLCRT], [colcrt], [colcrt],)
+AC_CHECK_PROG([TBL], [tbl], [tbl],)
+AC_CHECK_PROG([SED], [sed], [sed],)
+
+AC_ARG_WITH(program-name, AC_HELP_STRING([--with-program-name=NAME],[alternate executable name]),[progname="$withval" ], [progname="rogue4"] )
+PROGRAM=$progname
+AC_SUBST(PROGRAM)
+
+AC_ARG_ENABLE(setgid, AC_HELP_STRING([--enable-setgid=NAME],[install executable as setgid with group ownership of NAME @<:@default=no@:>@])],[],[])
+AC_MSG_CHECKING([if using setgid execute bit])
+if test "x$enable_setgid" = "xno" ; then
+GROUPOWNER=
+elif test "x$enable_setgid" = "xyes" ; then
+GROUPOWNER=games
+elif test "x$enable_setgid" = "x" ; then
+GROUPOWNER=
+else
+GROUPOWNER=$enable_setgid
+fi
+
+if test "x$GROUPOWNER" != "x" ; then
+AC_DEFINE_UNQUOTED([GROUPOWNER],[$GROUPOWNER], [Define to group owner of setgid executable])
+AC_MSG_RESULT([$GROUPOWNER])
+else
+AC_MSG_RESULT([no])
+fi
+
+AC_SUBST(GROUPOWNER)
+
+AC_ARG_ENABLE([scorefile],[AC_HELP_STRING([--enable-scorefile=SCOREFILE], [enable scoreboard with given filename])],[],[])
+AC_MSG_CHECKING([for scoreboard file])
+if test "x$enable_scorefile" = "xno" ; then
+SCOREFILE=
+elif test "x$enable_scorefile" = "xyes" ;  then
+SCOREFILE=$progname.scr
+elif test "x$enable_scorefile" = "x" ; then
+SCOREFILE=$progname.scr
+else
+SCOREFILE=$enable_scorefile
+fi
+
+if test "x$SCOREFILE" != "x" ; then
+AC_DEFINE_UNQUOTED([SCOREFILE], ["$SCOREFILE"], [Define to file to use for scoreboard])
+AC_MSG_RESULT([$SCOREFILE])
+else
+AC_MSG_RESULT([disabled])
+fi
+
+AC_SUBST(SCOREFILE)
+
+AC_ARG_ENABLE([logfile],[AC_HELP_STRING([--enable-logfile=LOGFILE], [enable logfile with given filename])],[],[])
+AC_MSG_CHECKING([for log file])
+if test "x$enable_logfile" = "xno" ; then
+LOGFILE=
+elif test "x$enable_logfile" = "xyes" ;  then
+LOGFILE=$progname.log
+elif test "x$enable_logfile" = "x" ; then
+LOGFILE=$progname.log
+else
+LOGFILE=$enable_logfile
+fi
+
+if test "x$LOGFILE" != "x" ; then
+AC_DEFINE_UNQUOTED([LOGFILE], ["$LOGFILE"], [Define to file to use for log])
+AC_MSG_RESULT([$LOGFILE])
+else
+AC_MSG_RESULT([disabled])
+fi
+
+AC_SUBST(LOGFILE)
+
+AC_ARG_ENABLE([lockfile],[AC_HELP_STRING([--enable-lockfile=LOCKFILE], [enable scoreboard lockfile with given filename])],[],[])
+AC_MSG_CHECKING([for scoreboard lockfile file])
+if test "x$enable_lockfile" = "xno" ; then
+LOCKFILE=
+elif test "x$enable_lockfile" = "xyes" ; then
+LOCKFILE=$progname.lck
+elif test "x$enable_lockfile" = "x" ; then
+LOCKFILE=$progname.lck
+else
+LOCKFILE=$enable_lockfile
+fi
+
+if test "x$LOCKFILE" != "x" ; then
+AC_DEFINE_UNQUOTED([LOCKFILE], ["$LOCKFILE"], [Define to file to use for scoreboard lockfile])
+AC_MSG_RESULT([$LOCKFILE])
+else
+AC_MSG_RESULT([disabled])
+fi
+
+AC_SUBST(LOCKFILE)
+
+AC_ARG_ENABLE([savedir],[AC_HELP_STRING([--enable-savedir=SAVEDIR], [enable systemwide location for saved games])],[],[])
+AC_MSG_CHECKING([for save directory])
+if test "x$enable_savedir" = "xno" ; then
+SAVEDIR=
+elif test "x$enable_savedir" = "xyes" ; then
+SAVEDIR=$progname/
+elif test "x$enable_savedir" = "x" ; then
+SAVEDIR=
+else
+SAVEDIR=$enable_savedir
+fi
+
+if test "x$SAVEDIR" != "x" ; then
+AC_DEFINE_UNQUOTED([SAVEDIR], ["$SAVEDIR"], [Define to systemwide directory for storing saved games])
+AC_MSG_RESULT([$SAVEDIR])
+else
+AC_MSG_RESULT([disabled])
+fi
+
+AC_SUBST(SAVEDIR)
+
+AC_ARG_ENABLE([destdir],[AC_HELP_STRING([--enable-destdir=DESTDIR], [chroot to install into])],[],[])
+AC_MSG_CHECKING([for chrooted install])
+if test "x$enable_destdir" = "xno" ; then
+DESTDIR=
+elif test "x$enable_destdir" = "xyes" ; then
+DESTDIR=
+elif test "x$enable_destdir" = "x" ; then
+DESTDIR=
+else
+DESTDIR=$enable_destdir
+fi
+
+if test "x$DESTDIR" != "x" ; then
+AC_MSG_RESULT([$DESTDIR])
+else
+AC_MSG_RESULT([disabled])
+fi
+
+AC_SUBST(DESTDIR)
+
+AC_ARG_ENABLE([wizardmode],[AC_HELP_STRING([--enable-wizardmode], [enable availability of wizard mode @<:@default=no@:>@])],[],[])
+AC_MSG_CHECKING([if wizard mode is enabled])
+if test "x$enable_wizardmode" = "xno" ; then
+AC_MSG_RESULT([no])
+elif test "x$enable_wizardmode" = "x" ; then
+AC_MSG_RESULT([no])
+else
+AC_DEFINE([WIZARD], [], [Define to include wizard mode])
+if test "x$enable_wizardmode" != "xyes" ; then
+AC_DEFINE_UNQUOTED([PASSWD],["$enable_wizardmode"], [Define crypt(3) wizard mode password])
+fi
+AC_MSG_RESULT([yes])
+fi
+
+AC_ARG_ENABLE([checktime],[AC_HELP_STRING([--enable-checktime], [enable checktime @<:@default=no@:>@])],[],[])
+AC_MSG_CHECKING([if checktime is enabled])
+if test "x$enable_checktime" = "xyes" ; then
+AC_DEFINE([CHECKTIME], [1], [Define if checktime feature should be enabled])
+AC_MSG_RESULT([yes])
+else
+AC_MSG_RESULT([no])
+fi
+
+AC_ARG_ENABLE([maxload],[AC_HELP_STRING([--enable-maxload], [enable maxload @<:@default=no@:>@])],[],[])
+AC_MSG_CHECKING([runtime execution limit (maximum system load average)])
+if test "x$enable_maxload" = "xyes" ; then
+AC_DEFINE([MAXLOAD], [100], [Define if maxload feature should be enabled])
+AC_MSG_RESULT([100])
+elif test "x$enable_maxload" = "x" ; then
+AC_MSG_RESULT([unlimited])
+elif test "x$enable_maxload" = "xno" ; then
+AC_MSG_RESULT([unlimited])
+else
+AC_DEFINE_UNQUOTED([MAXLOAD], [$enable_maxload], [Define if maxload feature should be enabled])
+AC_MSG_RESULT([$enable_maxload])
+fi
+
+AC_ARG_ENABLE([maxusers],[AC_HELP_STRING([--enable-maxusers], [enable maxuser @<:@default=no@:>@])],[],[])
+AC_MSG_CHECKING([runtime execution limit (maximum online system users)])
+if test "x$enable_maxusers" = "xyes" ; then
+AC_DEFINE([MAXUSERS], [100], [Define if maxusers feature should be enabled])
+AC_MSG_RESULT([100])
+elif test "x$enable_maxusers" = "x" ; then
+AC_MSG_RESULT([unlimited])
+elif test "x$enable_maxload" = "xno" ; then 
+AC_MSG_RESULT([unlimited])
+else
+AC_DEFINE_UNQUOTED([MAXLOAD], [$enable_maxusers], [Define if maxusers feature should be enabled])
+AC_MSG_RESULT([$enable_maxusers])
+fi
+
+AC_MSG_CHECKING([whether to docdir is defined])
+if test "x$docdir" = "x" ; then
+AC_MSG_RESULT([docdir undefined])
+docdir=\${datadir}/doc/\${PACKAGE_TARNAME}
+AC_SUBST(docdir)
+else
+AC_MSG_RESULT([docdir defined])
+fi
+
+AC_OUTPUT
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rogue4/install-sh	Tue Oct 11 15:20:40 2011 +0000
@@ -0,0 +1,520 @@
+#!/bin/sh
+# install - install a program, script, or datafile
+
+scriptversion=2009-04-28.21; # UTC
+
+# This originates from X11R5 (mit/util/scripts/install.sh), which was
+# later released in X11R6 (xc/config/util/install.sh) with the
+# following copyright and license.
+#
+# Copyright (C) 1994 X Consortium
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+# Except as contained in this notice, the name of the X Consortium shall not
+# be used in advertising or otherwise to promote the sale, use or other deal-
+# ings in this Software without prior written authorization from the X Consor-
+# tium.
+#
+#
+# FSF changes to this file are in the public domain.
+#
+# Calling this script install-sh is preferred over install.sh, to prevent
+# `make' implicit rules from creating a file called install from it
+# when there is no Makefile.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch.
+
+nl='
+'
+IFS=" ""	$nl"
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+doit=${DOITPROG-}
+if test -z "$doit"; then
+  doit_exec=exec
+else
+  doit_exec=$doit
+fi
+
+# Put in absolute file names if you don't have them in your path;
+# or use environment vars.
+
+chgrpprog=${CHGRPPROG-chgrp}
+chmodprog=${CHMODPROG-chmod}
+chownprog=${CHOWNPROG-chown}
+cmpprog=${CMPPROG-cmp}
+cpprog=${CPPROG-cp}
+mkdirprog=${MKDIRPROG-mkdir}
+mvprog=${MVPROG-mv}
+rmprog=${RMPROG-rm}
+stripprog=${STRIPPROG-strip}
+
+posix_glob='?'
+initialize_posix_glob='
+  test "$posix_glob" != "?" || {
+    if (set -f) 2>/dev/null; then
+      posix_glob=
+    else
+      posix_glob=:
+    fi
+  }
+'
+
+posix_mkdir=
+
+# Desired mode of installed file.
+mode=0755
+
+chgrpcmd=
+chmodcmd=$chmodprog
+chowncmd=
+mvcmd=$mvprog
+rmcmd="$rmprog -f"
+stripcmd=
+
+src=
+dst=
+dir_arg=
+dst_arg=
+
+copy_on_change=false
+no_target_directory=
+
+usage="\
+Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
+   or: $0 [OPTION]... SRCFILES... DIRECTORY
+   or: $0 [OPTION]... -t DIRECTORY SRCFILES...
+   or: $0 [OPTION]... -d DIRECTORIES...
+
+In the 1st form, copy SRCFILE to DSTFILE.
+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
+In the 4th, create DIRECTORIES.
+
+Options:
+     --help     display this help and exit.
+     --version  display version info and exit.
+
+  -c            (ignored)
+  -C            install only if different (preserve the last data modification time)
+  -d            create directories instead of installing files.
+  -g GROUP      $chgrpprog installed files to GROUP.
+  -m MODE       $chmodprog installed files to MODE.
+  -o USER       $chownprog installed files to USER.
+  -s            $stripprog installed files.
+  -t DIRECTORY  install into DIRECTORY.
+  -T            report an error if DSTFILE is a directory.
+
+Environment variables override the default commands:
+  CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
+  RMPROG STRIPPROG
+"
+
+while test $# -ne 0; do
+  case $1 in
+    -c) ;;
+
+    -C) copy_on_change=true;;
+
+    -d) dir_arg=true;;
+
+    -g) chgrpcmd="$chgrpprog $2"
+	shift;;
+
+    --help) echo "$usage"; exit $?;;
+
+    -m) mode=$2
+	case $mode in
+	  *' '* | *'	'* | *'
+'*	  | *'*'* | *'?'* | *'['*)
+	    echo "$0: invalid mode: $mode" >&2
+	    exit 1;;
+	esac
+	shift;;
+
+    -o) chowncmd="$chownprog $2"
+	shift;;
+
+    -s) stripcmd=$stripprog;;
+
+    -t) dst_arg=$2
+	shift;;
+
+    -T) no_target_directory=true;;
+
+    --version) echo "$0 $scriptversion"; exit $?;;
+
+    --)	shift
+	break;;
+
+    -*)	echo "$0: invalid option: $1" >&2
+	exit 1;;
+
+    *)  break;;
+  esac
+  shift
+done
+
+if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
+  # When -d is used, all remaining arguments are directories to create.
+  # When -t is used, the destination is already specified.
+  # Otherwise, the last argument is the destination.  Remove it from $@.
+  for arg
+  do
+    if test -n "$dst_arg"; then
+      # $@ is not empty: it contains at least $arg.
+      set fnord "$@" "$dst_arg"
+      shift # fnord
+    fi
+    shift # arg
+    dst_arg=$arg
+  done
+fi
+
+if test $# -eq 0; then
+  if test -z "$dir_arg"; then
+    echo "$0: no input file specified." >&2
+    exit 1
+  fi
+  # It's OK to call `install-sh -d' without argument.
+  # This can happen when creating conditional directories.
+  exit 0
+fi
+
+if test -z "$dir_arg"; then
+  trap '(exit $?); exit' 1 2 13 15
+
+  # Set umask so as not to create temps with too-generous modes.
+  # However, 'strip' requires both read and write access to temps.
+  case $mode in
+    # Optimize common cases.
+    *644) cp_umask=133;;
+    *755) cp_umask=22;;
+
+    *[0-7])
+      if test -z "$stripcmd"; then
+	u_plus_rw=
+      else
+	u_plus_rw='% 200'
+      fi
+      cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
+    *)
+      if test -z "$stripcmd"; then
+	u_plus_rw=
+      else
+	u_plus_rw=,u+rw
+      fi
+      cp_umask=$mode$u_plus_rw;;
+  esac
+fi
+
+for src
+do
+  # Protect names starting with `-'.
+  case $src in
+    -*) src=./$src;;
+  esac
+
+  if test -n "$dir_arg"; then
+    dst=$src
+    dstdir=$dst
+    test -d "$dstdir"
+    dstdir_status=$?
+  else
+
+    # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
+    # might cause directories to be created, which would be especially bad
+    # if $src (and thus $dsttmp) contains '*'.
+    if test ! -f "$src" && test ! -d "$src"; then
+      echo "$0: $src does not exist." >&2
+      exit 1
+    fi
+
+    if test -z "$dst_arg"; then
+      echo "$0: no destination specified." >&2
+      exit 1
+    fi
+
+    dst=$dst_arg
+    # Protect names starting with `-'.
+    case $dst in
+      -*) dst=./$dst;;
+    esac
+
+    # If destination is a directory, append the input filename; won't work
+    # if double slashes aren't ignored.
+    if test -d "$dst"; then
+      if test -n "$no_target_directory"; then
+	echo "$0: $dst_arg: Is a directory" >&2
+	exit 1
+      fi
+      dstdir=$dst
+      dst=$dstdir/`basename "$src"`
+      dstdir_status=0
+    else
+      # Prefer dirname, but fall back on a substitute if dirname fails.
+      dstdir=`
+	(dirname "$dst") 2>/dev/null ||
+	expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	     X"$dst" : 'X\(//\)[^/]' \| \
+	     X"$dst" : 'X\(//\)$' \| \
+	     X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
+	echo X"$dst" |
+	    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+		   s//\1/
+		   q
+		 }
+		 /^X\(\/\/\)[^/].*/{
+		   s//\1/
+		   q
+		 }
+		 /^X\(\/\/\)$/{
+		   s//\1/
+		   q
+		 }
+		 /^X\(\/\).*/{
+		   s//\1/
+		   q
+		 }
+		 s/.*/./; q'
+      `
+
+      test -d "$dstdir"
+      dstdir_status=$?
+    fi
+  fi
+
+  obsolete_mkdir_used=false
+
+  if test $dstdir_status != 0; then
+    case $posix_mkdir in
+      '')
+	# Create intermediate dirs using mode 755 as modified by the umask.
+	# This is like FreeBSD 'install' as of 1997-10-28.
+	umask=`umask`
+	case $stripcmd.$umask in
+	  # Optimize common cases.
+	  *[2367][2367]) mkdir_umask=$umask;;
+	  .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
+
+	  *[0-7])
+	    mkdir_umask=`expr $umask + 22 \
+	      - $umask % 100 % 40 + $umask % 20 \
+	      - $umask % 10 % 4 + $umask % 2
+	    `;;
+	  *) mkdir_umask=$umask,go-w;;
+	esac
+
+	# With -d, create the new directory with the user-specified mode.
+	# Otherwise, rely on $mkdir_umask.
+	if test -n "$dir_arg"; then
+	  mkdir_mode=-m$mode
+	else
+	  mkdir_mode=
+	fi
+
+	posix_mkdir=false
+	case $umask in
+	  *[123567][0-7][0-7])
+	    # POSIX mkdir -p sets u+wx bits regardless of umask, which
+	    # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
+	    ;;
+	  *)
+	    tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+	    trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
+
+	    if (umask $mkdir_umask &&
+		exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
+	    then
+	      if test -z "$dir_arg" || {
+		   # Check for POSIX incompatibilities with -m.
+		   # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+		   # other-writeable bit of parent directory when it shouldn't.
+		   # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+		   ls_ld_tmpdir=`ls -ld "$tmpdir"`
+		   case $ls_ld_tmpdir in
+		     d????-?r-*) different_mode=700;;
+		     d????-?--*) different_mode=755;;
+		     *) false;;
+		   esac &&
+		   $mkdirprog -m$different_mode -p -- "$tmpdir" && {
+		     ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
+		     test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+		   }
+		 }
+	      then posix_mkdir=:
+	      fi
+	      rmdir "$tmpdir/d" "$tmpdir"
+	    else
+	      # Remove any dirs left behind by ancient mkdir implementations.
+	      rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
+	    fi
+	    trap '' 0;;
+	esac;;
+    esac
+
+    if
+      $posix_mkdir && (
+	umask $mkdir_umask &&
+	$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+      )
+    then :
+    else
+
+      # The umask is ridiculous, or mkdir does not conform to POSIX,
+      # or it failed possibly due to a race condition.  Create the
+      # directory the slow way, step by step, checking for races as we go.
+
+      case $dstdir in
+	/*) prefix='/';;
+	-*) prefix='./';;
+	*)  prefix='';;
+      esac
+
+      eval "$initialize_posix_glob"
+
+      oIFS=$IFS
+      IFS=/
+      $posix_glob set -f
+      set fnord $dstdir
+      shift
+      $posix_glob set +f
+      IFS=$oIFS
+
+      prefixes=
+
+      for d
+      do
+	test -z "$d" && continue
+
+	prefix=$prefix$d
+	if test -d "$prefix"; then
+	  prefixes=
+	else
+	  if $posix_mkdir; then
+	    (umask=$mkdir_umask &&
+	     $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
+	    # Don't fail if two instances are running concurrently.
+	    test -d "$prefix" || exit 1
+	  else
+	    case $prefix in
+	      *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
+	      *) qprefix=$prefix;;
+	    esac
+	    prefixes="$prefixes '$qprefix'"
+	  fi
+	fi
+	prefix=$prefix/
+      done
+
+      if test -n "$prefixes"; then
+	# Don't fail if two instances are running concurrently.
+	(umask $mkdir_umask &&
+	 eval "\$doit_exec \$mkdirprog $prefixes") ||
+	  test -d "$dstdir" || exit 1
+	obsolete_mkdir_used=true
+      fi
+    fi
+  fi
+
+  if test -n "$dir_arg"; then
+    { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
+    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
+    { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
+      test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
+  else
+
+    # Make a couple of temp file names in the proper directory.
+    dsttmp=$dstdir/_inst.$$_
+    rmtmp=$dstdir/_rm.$$_
+
+    # Trap to clean up those temp files at exit.
+    trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
+
+    # Copy the file name to the temp name.
+    (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
+
+    # and set any options; do chmod last to preserve setuid bits.
+    #
+    # If any of these fail, we abort the whole thing.  If we want to
+    # ignore errors from any of these, just make sure not to ignore
+    # errors from the above "$doit $cpprog $src $dsttmp" command.
+    #
+    { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
+    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
+    { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
+    { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
+
+    # If -C, don't bother to copy if it wouldn't change the file.
+    if $copy_on_change &&
+       old=`LC_ALL=C ls -dlL "$dst"	2>/dev/null` &&
+       new=`LC_ALL=C ls -dlL "$dsttmp"	2>/dev/null` &&
+
+       eval "$initialize_posix_glob" &&
+       $posix_glob set -f &&
+       set X $old && old=:$2:$4:$5:$6 &&
+       set X $new && new=:$2:$4:$5:$6 &&
+       $posix_glob set +f &&
+
+       test "$old" = "$new" &&
+       $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
+    then
+      rm -f "$dsttmp"
+    else
+      # Rename the file to the real destination.
+      $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
+
+      # The rename failed, perhaps because mv can't rename something else
+      # to itself, or perhaps because mv is so ancient that it does not
+      # support -f.
+      {
+	# Now remove or move aside any old file at destination location.
+	# We try this two ways since rm can't unlink itself on some
+	# systems and the destination file might be busy for other
+	# reasons.  In this case, the final cleanup might fail but the new
+	# file should still install successfully.
+	{
+	  test ! -f "$dst" ||
+	  $doit $rmcmd -f "$dst" 2>/dev/null ||
+	  { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
+	    { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
+	  } ||
+	  { echo "$0: cannot unlink or rename $dst" >&2
+	    (exit 1); exit 1
+	  }
+	} &&
+
+	# Now rename the file to the real destination.
+	$doit $mvcmd "$dsttmp" "$dst"
+      }
+    fi || exit 1
+
+    trap '' 0
+  fi
+done
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
--- a/rogue4/rogue.6	Mon Oct 10 20:57:51 2011 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-.TH ROGUE 6 "1 April 1981"
-.UC 4
-.SH NAME
-rogue \- Exploring The Dungeons of Doom
-.SH SYNOPSIS
-.B rogue
-[
-.I save_file
-]
-.SH DESCRIPTION
-.PP
-.I Rogue
-is a computer fantasy game with a new twist.  It is crt oriented and the
-object of the game is to survive the attacks of various monsters and get
-a lot of gold, rather than the puzzle solving orientation of most computer
-fantasy games.
-.PP
-To get started you really only need to know two commands.  The command
-.B ?
-will give you a list of the available commands and the command
-.B /
-will identify the things you see on the screen.
-.PP
-To win the game (as opposed to merely playing to beat other people high
-scores) you must locate the Amulet of Yendor which is somewhere below
-the 20th level of the dungeon and get it out.  Nobody has achieved this
-yet and if somebody does, they will probably go down in history as a hero
-among heros.
-.PP
-When the game ends, either by your death, when you quit, or if you (by
-some miracle) manage to win,
-.I rogue
-will give you alist of the top-ten scorers.  The scoring is based entirely
-upon how much gold you get.  There is a 10% penalty for getting yourself
-killed.
-.PP
-For more detailed directions, read the document
-.I "A Guide to the Dungeons of Doom."
-.SH FILES
-.DT
-.B Score file is searched for in these directories:
-.PP
-$ROGUEHOME/rogue52.scr
-.br
-/var/games/roguelike/rogue52.scr
-.br
-/var/lib/roguelike/rogue52.scr
-.br
-/var/roguelike/rogue52.scr
-.br
-/usr/games/lib/rogue52.scr
-.br
-/games/roguelik/rogue52.scr
-.br
-rogue52.scr
-.PP
-.B Default save file
-.PP
-~/rogue.sav
-.SH SEE ALSO
-Michael C. Toy,
-.I "A guide to the Dungeons of Doom"
-.SH BUGS
-.PP
-Probably infinite.  Currently known bugs are: Sometimes you are still hungry
-even after you eat food and sometimes you get a monster on the screen in
-reverse video which may or may not cause a core dump.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rogue4/rogue.6.in	Tue Oct 11 15:20:40 2011 +0000
@@ -0,0 +1,67 @@
+.TH ROGUE 6 "1 April 1981"
+.UC 4
+.SH NAME
+rogue \- Exploring The Dungeons of Doom
+.SH SYNOPSIS
+.B rogue
+[
+.I save_file
+]
+.SH DESCRIPTION
+.PP
+.I Rogue
+is a computer fantasy game with a new twist.  It is crt oriented and the
+object of the game is to survive the attacks of various monsters and get
+a lot of gold, rather than the puzzle solving orientation of most computer
+fantasy games.
+.PP
+To get started you really only need to know two commands.  The command
+.B ?
+will give you a list of the available commands and the command
+.B /
+will identify the things you see on the screen.
+.PP
+To win the game (as opposed to merely playing to beat other people high
+scores) you must locate the Amulet of Yendor which is somewhere below
+the 20th level of the dungeon and get it out.  Nobody has achieved this
+yet and if somebody does, they will probably go down in history as a hero
+among heros.
+.PP
+When the game ends, either by your death, when you quit, or if you (by
+some miracle) manage to win,
+.I rogue
+will give you alist of the top-ten scorers.  The scoring is based entirely
+upon how much gold you get.  There is a 10% penalty for getting yourself
+killed.
+.PP
+For more detailed directions, read the document
+.I "A Guide to the Dungeons of Doom."
+.SH FILES
+.DT
+.B Score file is searched for in these directories:
+.PP
+$ROGUEHOME/rogue52.scr
+.br
+/var/games/roguelike/rogue52.scr
+.br
+/var/lib/roguelike/rogue52.scr
+.br
+/var/roguelike/rogue52.scr
+.br
+/usr/games/lib/rogue52.scr
+.br
+/games/roguelik/rogue52.scr
+.br
+rogue52.scr
+.PP
+.B Default save file
+.PP
+~/rogue.sav
+.SH SEE ALSO
+Michael C. Toy,
+.I "A guide to the Dungeons of Doom"
+.SH BUGS
+.PP
+Probably infinite.  Currently known bugs are: Sometimes you are still hungry
+even after you eat food and sometimes you get a monster on the screen in
+reverse video which may or may not cause a core dump.
--- a/rogue4/rogue.h	Mon Oct 10 20:57:51 2011 +0000
+++ b/rogue4/rogue.h	Tue Oct 11 15:20:40 2011 +0000
@@ -479,6 +479,7 @@
 
 struct room	*roomin();
 
+#include "config.h"
 #include "extern.h"
 
 #ifndef PATH_MAX
--- a/rogue4/rogue.me	Mon Oct 10 20:57:51 2011 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,787 +0,0 @@
-.ds E \s-2<ESCAPE>\s0
-.ds R \s-2<RETURN>\s0
-.ds U \s-2UNIX\s0
-.ie t .ds _ \d\(mi\u
-.el .ds _ _
-.de Cs
-\&\\$3\*(lq\\$1\*(rq\\$2
-..
-.sp 5
-.ce 1000
-.ps +4
-.vs +4p
-.b
-A Guide to the Dungeons of Doom
-.r
-.vs
-.ps
-.sp 2
-.i
-Michael C. Toy
-Kenneth C. R. C. Arnold
-.r
-.sp 2
-Computer Systems Research Group
-Department of Electrical Engineering and Computer Science
-University of California
-Berkeley, California  94720
-.sp 4
-.i ABSTRACT
-.ce 0
-.(b I F
-.bi Rogue
-is a visual CRT based fantasy game
-which runs under the \*U\(dg timesharing system.
-.(f
-\fR\(dg\*U is a trademark of Bell Laboratories\fP
-.)f
-This paper describes how to play rogue,
-and gives a few hints
-for those who might otherwise get lost in the Dungeons of Doom.
-.)b
-.he '''\fBA Guide to the Dungeons of Doom\fP'
-.fo ''- % -''
-.bp 1
-.sh 1 Introduction
-.pp
-You have just finished your years as a student at the local fighter's guild.
-After much practice and sweat you have finally completed your training
-and are ready to embark upon a perilous adventure.
-As a test of your skills,
-the local guildmasters have sent you into the Dungeons of Doom.
-Your task is to return with the Amulet of Yendor.
-Your reward for the completion of this task
-will be a full membership in the local guild.
-In addition,
-you are allowed to keep all the loot you bring back from the dungeons.
-.pp
-In preparation for your journey,
-you are given an enchanted mace,
-a bow, and a quiver of arrows
-taken from a dragon's hoard in the far off Dark Mountains.
-You are also outfitted with elf-crafted armor
-and given enough food to reach the dungeons.
-You say goodbye to family and friends for what may be the last time
-and head up the road.
-.pp
-You set out on your way to the dungeons
-and after several days of uneventful travel,
-you see the ancient ruins
-that mark the entrance to the Dungeons of Doom.
-It is late at night,
-so you make camp at the entrance
-and spend the night sleeping under the open skies.
-In the morning you gather your mace,
-put on your armor,
-eat what is almost your last food,
-and enter the dungeons.
-.sh 1 "What is going on here?"
-.pp
-You have just begun a game of rogue.
-Your goal is to grab as much treasure as you can,
-find the Amulet of Yendor,
-and get out of the Dungeons of Doom alive.
-On the screen,
-a map of where you have been
-and what you have seen on the current dungeon level is kept.
-As you explore more of the level,
-it appears on the screen in front of you.
-.pp
-Rogue differs from most computer fantasy games in that it is screen oriented.
-Commands are all one or two keystrokes\**
-.(f
-\** As opposed to pseudo English sentences.
-.)f
-and the results of your commands
-are displayed graphically on the screen rather
-than being explained in words.
-.pp
-Another major difference between rogue and other computer fantasy games
-is that once you have solved all the puzzles in a standard fantasy game,
-it has lost most of its excitement and it ceases to be fun.
-Rogue,
-on the other hand,
-generates a new dungeon every time you play it
-and even the author finds it an entertaining and exciting game.
-.sh 1 "What do all those things on the screen mean?"
-.pp
-In order to understand what is going on in rogue
-you have to first get some grasp of what rogue is doing with the screen.
-The rogue screen is intended
-to replace the \*(lqYou can see ...\*(rq descriptions
-of standard fantasy games.
-Figure 1 is a sample of what a rogue screen might look like.
-.(z
-.hl
-.nf
-.TS
-center;
-ce0 ce0 ce0 ce0 ce0 ce0 ce0 ce0 ce0 ce0 ce0 ce.
--	-	-	-	-	-	-	-	-	-	-	-
-|	.	.	.	.	.	.	.	.	.	.	+
-|	.	.	@	.	.	.	.	]	.	.	|
-|	.	.	.	.	B	.	.	.	.	.	|
-|	.	.	.	.	.	.	.	.	.	.	|
--	-	-	-	-	+	-	-	-	-	-	-
-.TE
-
-
-.ce 1000
-Level: 1  Gold: 0      Hp: 12(12)  Str: 16(16)  Ac: 6  Exp: 1/0
-
-Figure 1
-.ce
-.hl
-.)z
-.sh 2 "The bottom line"
-.pp
-At the bottom line of the screen
-are a few pieces of cryptic information
-describing your current status.
-Here is an explanation of what these things mean:
-.ip Level \w'Level\ \ 'u
-This number indicates how deep you have gone in the dungeon.
-It starts at one and goes up as you go deeper into the dungeon.
-.ip Gold \w'Level\ \ 'u
-The number of gold pieces you have managed to find
-and keep with you so far.
-.ip Hp \w'Level\ \ 'u
-Your current and maximum hit points.
-Hit points indicate how much damage you can take before you die.
-The more you get hit in a fight,
-the lower they get.
-You can regain hit points by resting.
-The number in parentheses
-is the maximum number your hit points can reach.
-.ip Str \w'Level\ \ 'u
-Your current strength and maximum ever strength.
-This can be any integer less than or equal to 31,
-or greater than or equal to three.
-The higher the number,
-the stronger you are.
-The number in the parentheses
-is the maximum strength you have attained so far this game.
-.ip Ac \w'Level\ \ 'u
-Your current armor class.
-This number indicates how effective your armor is
-in stopping blows from unfriendly creatures.
-The lower this number is,
-the more effective the armor.
-.ip Exp \w'Level\ \ 'u
-These two numbers give your current experience level
-and experience points.
-As you do things,
-you gain experience points.
-At certain experience point totals,
-you gain an experience level.
-The more experienced you are,
-the better you are able to fight and to withstand magical attacks.
-.sh 2 "The top line"
-.pp
-The top line of the screen is reserved
-for printing messages that describe things
-that are impossible to represent visually.
-If you see a \*(lq--More--\*(rq on the top line,
-this means that rogue wants to print another message on the screen,
-but it wants to make certain
-that you have read the one that is there first.
-To read the next message,
-just type a space.
-.sh 2 "The rest of the screen"
-.pp
-The rest of the screen is the map of the level
-as you have explored it so far.
-Each symbol on the screen represents something.
-Here is a list of what the various symbols mean:
-.ip @
-This symbol represents you, the adventurer.
-.ip "-\^|"
-These symbols represent the walls of rooms.
-.ip +
-A door to/from a room.
-.ip .
-The floor of a room.
-.ip #
-The floor of a passage between rooms.
-.ip *
-A pile or pot of gold.
-.ip )
-A weapon of some sort.
-.ip ]
-A piece of armor.
-.ip !
-A flask containing a magic potion.
-.ip ?
-A piece of paper, usually a magic scroll.
-.ip =
-A ring with magic properties
-.ip /
-A magical staff or wand
-.ip ^
-A trap, watch out for these.
-.ip %
-A staircase to other levels
-.ip :
-A piece of food.
-.ip A-Z
-The uppercase letters
-represent the various inhabitants of the Dungeons of Doom.
-Watch out, they can be nasty and vicious.
-.sh 1 Commands
-.pp
-Commands are given to rogue by typing one or two characters.
-Most commands can be preceded by a count to repeat them
-(e.g. typing 
-.Cs 10s
-will do ten searches).
-Commands for which counts make no sense
-have the count ignored.
-To cancel a count or a prefix,
-type \*E.
-The list of commands is rather long,
-but it can be read at any time during the game with the
-.Cs ?
-command.
-Here it is for reference,
-with a short explanation of each command.
-.ip ?
-The help command.
-Asks for a character to give help on.
-If you type a
-.Cs * ,
-it will list all the commands,
-otherwise it will explain what the character you typed does.
-.ip /
-This is the \*(lqWhat is that on the screen?\*(rq command.
-A
-.Cs /
-followed by any character that you see on the level,
-will tell you what that character is.
-For instance,
-typing
-.Cs /@
-will tell you that the
-.Cs @
-symbol represents you, the player.
-.ip "h, H"
-Move left.
-You move one space to the left.
-If you use upper case
-.Cs h ,
-you will continue to move left until you run into something.
-This works for all movement commands
-(e.g.
-.Cs L
-means run in direction 
-.Cs l )
-.ip j
-Move down.
-.ip k
-Move up.
-.ip l
-Move right.
-.ip y
-Move diagonally up and left.
-.ip u
-Move diagonally up and right.
-.ip b
-Move diagonally down and left.
-.ip n
-Move diagonally down and right.
-.ip t
-Throw an object.
-This is a prefix command.
-When followed with a direction
-it throws an object in the specified direction.
-(e.g. type
-.Cs th
-to throw
-something to the left.)
-.ip f
-Find prefix.
-When followed by a direction
-it means to continue moving in the specified direction
-until you pass something interesting or run into a wall.
-You should experiment with this,
-since it is a very useful command,
-but very difficult to describe.
-.ip z
-Zap prefix.
-Point a staff or wand in a given direction
-and fire it.
-Even non-directional staves must be pointed in some direction
-to be used.
-.ip ^
-Identify trap command.
-If a trap is on your map
-and you can't remember what type it is,
-you can get rogue to remind you
-by getting next to it and typing
-.Cs ^
-followed by the direction that would move you on top of it.
-.ip s
-Search for traps and secret doors.
-Examine each space immediately adjacent to you
-for the existence of a trap or secret door.
-There is a large chance that even if there is something there,
-you won't find it,
-so you might have to search a while before you find something.
-.ip >
-Climb down a staircase to the next level.
-Not surprisingly, this can only be done if you are standing on staircase.
-.ip <
-Climb up a staircase to the level above.
-This can't be done without the Amulet of Yendor in your posession.
-.ip "."
-Rest.
-This is the \*(lqdo nothing\*(rq command.
-This is good for waiting and healing.
-.ip i
-Inventory.
-List what you are carrying in your pack.
-.ip I
-Selective inventory.
-Tells you what a single item in your pack is.
-.ip q
-Quaff one of the potions you are carrying.
-.ip r
-Read one of the scrolls in your pack.
-.ip e
-Eat food from your pack.
-.ip w
-Wield a weapon.
-Take a weapon out of your pack and carry it for use in combat,
-replacing the one you are currently using (if any).
-.ip W
-Wear armor.
-You can only wear one suit of armor at a time.
-This takes extra time.
-.ip T
-Take armor off.
-You can't remove armor that is cursed.
-This takes extra time.
-.ip P
-Put on a ring.
-You can wear only two rings at a time
-(one on each hand).
-If you aren't wearing any rings,
-this command will ask you which hand you want to wear it on,
-otherwise, it will place it on the unused hand.
-The program assumes that you wield your sword in your right hand.
-.ip R
-Remove a ring.
-If you are only wearing one ring,
-this command takes it off.
-If you are wearing two,
-it will ask you which one you wish to remove,
-.ip d
-Drop an object.
-Take something out of your pack and leave it lying on the floor.
-Only one object can occupy each space.
-You cannot drop a cursed object at all
-if you are wielding or wearing it.
-.ip c
-Call an object something.
-If you have a type of object in your pack
-which you wish to remember something about,
-you can use the call command to give a name to that type of object.
-This is usually used when you figure out what a
-potion, scroll, ring, or staff is
-after you pick it up.
-(See the
-.Cs askme
-option below.)
-.ip D
-Print out which things you've discovered something about.
-This command will ask you what type of thing you are interested in.
-If you type the character for a given type of object
-(\fIe.g.\fP
-.Cs !
-for potion)
-it will tell you which kinds of that type of object you've discovered
-(\fIi.e.\fP, figured out what they are).
-This command works for potions, scrolls, rings, and staves and wands.
-.ip o
-Examine and set options.
-This command is further explained in the section on options.
-.ip ^L
-Redraws the screen.
-Useful if spurious messages or transmission errors
-have messed up the display.
-.ip ^R
-Repeat last message.
-Useful when a message disappears before you can read it.
-This only repeats the last message
-that was not a mistyped command
-so that you don't loose anything by accidentally typing
-the wrong character instead of ^R.
-.ip \*E
-Cancel a command, prefix, or count.
-.ip !
-Escape to a shell for some commands.
-.ip Q
-Quit.
-Leave the game.
-.ip S
-Save the current game in a file.
-It will ask you whether you wish to use the default save file.
-.i Caveat :
-Rogue won't let you start up a copy of a saved game,
-and it removes the save file as soon as you start up a restored game.
-This is to prevent people from saving a game just before a dangerous position
-and then restarting it if they die.
-To restore a saved game,
-give the file name as an argument to rogue.
-As in
-.ti +1i
-.nf
-% rogue \fIsave\*_file\fP
-.ip
-To restart from the default save file (see below),
-run
-.ti +1i
-.nf
-% rogue \-r
-.ip v
-Prints the program version number.
-.sh 1 Rooms
-.pp
-Rooms in the dungeons are either lit or dark.
-If you walk into a lit room,
-the entire room will be drawn on the screen as soon as you enter.
-If you walk into a dark room,
-it will only be displayed as you explore it.
-Upon leaving a room,
-all objects inside the room which might move
-or be removed
-are erased from the screen.
-In the darkness you can only see one space
-in all directions around you.
-A corridor is always dark.
-.sh 1 Fighting
-.pp
-If you see a monster and you wish to fight it,
-just attempt to run into it.
-Many times a monster you find will mind its own business
-unless you attack it.
-It is often the case that discretion is the better part of valor.
-.sh 1 "Objects you can find"
-.pp
-When you find something in the dungeon,
-it is common to want to pick the object up.
-This is accomplished in rogue by walking over the object.
-If you are carrying too many things,
-the program will tell you and it won't pick up the object,
-otherwise it will add it to your pack
-and tell you what you just picked up.
-.pp
-Many of the commands that operate on objects must prompt you
-to find out which object you want to use.
-If you change your mind and don't want to do that command after all,
-just type an \*E and the command will be aborted.
-.pp
-Some objects, like armor and weapons,
-are easily differentiated.
-Others, like scrolls and potions,
-are given labels which vary according to type.
-During a game,
-any two of the same kind of object
-with the same label
-are the same type.
-However,
-the labels will vary from game to game.
-.pp
-When you use one of these labeled objects,
-if its effect is obvious,
-rogue will remember what it is for you.
-If it's effect isn't extremely obvious, you can use the
-.Cs call
-command
-(see above)
-or the
-.Cs askme
-option
-(see below)
-to scribble down something about it
-so you will recognize it later.
-.sh 2 Weapons
-.pp
-Some weapons,
-like arrows,
-come in bunches,
-but most come one at a time.
-In order to use a weapon,
-you must wield it.
-To fire an arrow out of a bow,
-you must first wield the bow,
-then throw the arrow.
-You can only wield one weapon at a time,
-but you can't change weapons if the one
-you are currently wielding is cursed.
-.sh 2 Armor
-.pp
-There are various sorts of armor lying around in the dungeon.
-Some of it is enchanted,
-some is cursed,
-and some is just normal.
-Different armor types have different armor classes.
-The lower the armor class,
-the more protection the armor affords against the blows of monsters.
-Here is a list of the various armor types and their normal armor class:
-.(b
-.TS
-center;
-l r.
-Type	Class
-=
-None	10
-Leather armor	8
-Studded leather / Ring mail	7
-Scale mail	6
-Chain mail	5
-Banded mail / Splint mail	4
-Plate mail	3
-.TE
-.)b
-.lp
-If a piece of armor is enchanted,
-its armor class will be lower than normal.
-If a suit of armor is cursed,
-its armor class will be higher,
-and you will not be able to remove it.
-However, not all armor with a class that is higher than normal is cursed.
-.sh 2 Scrolls
-.pp
-Scrolls come with titles in an unknown tongue.
-After you read a scroll,
-it disappears from your pack.
-.sh 2 Potions
-.pp
-Potions are labeled by the color of the liquid inside the flask.
-They disappear after being quaffed.
-.sh 2 "Staves and Wands"
-.pp
-Staves and wands do the same kinds of things.
-Staves are identified by a type of wood;
-wands by a type of metal or bone.
-They are generally things you want to do to something
-over a long distance,
-so you must point them at what you wish to affect
-to use them.
-Some staves are not affected by the direction they are pointed, though.
-Staves come with multiple magic charges,
-the number being random,
-and when they are used up,
-the staff is just a piece of wood or metal.
-.sh 2 Rings
-.pp
-Rings are very useful items,
-since they are relatively permanent magic,
-unlike the usually fleeting effects of potions, scrolls, and staves.
-Of course,
-the bad rings are also more powerful.
-Most rings also cause you to use up food more rapidly,
-the rate varying with the type of ring.
-Rings are differentiated by their stone settings.
-.sh 1 Options
-.pp
-Due to variations in personal tastes
-and conceptions of the way rogue should do things,
-there are a set of options you can set
-that cause rogue to behave in various different ways.
-.sh 2 "Setting the options"
-.pp
-There are two ways to set the options.
-The first is with the
-.Cs o
-command of rogue;
-the second is with the
-.Cs ROGUEOPTS
-environment variable\**.
-.(f
-\** On Version 6 systems,
-there is no equivalent of the ROGUEOPTS feature.
-.br
-.)f
-.br
-.sh 3 "Using the `o' command"
-.pp
-When you type
-.Cs o
-in rogue,
-it clears the screen
-and displays the current settings for all the options.
-It then places the cursor by the value of the first option
-and waits for you to type.
-You can type a \*R
-which means to go to the next option,
-a
-.Cs \-
-which means to go to the previous option,
-an \*E
-which means to return to the game,
-or you can give the option a value.
-For boolean options this merely involves typing
-.Cs t
-for true or
-.Cs f
-for false.
-For string options,
-type the new value followed by a \*R.
-.sh 3 "Using the ROGUEOPTS variable"
-.pp
-The ROGUEOPTS variable is a string
-containing a comma separated list of initial values
-for the various options.
-Boolean variables can be turned on by listing their name
-or turned off by putting a
-.Cs no
-in front of the name.
-Thus to set up an environment variable so that
-.b jump
-is on,
-.b terse
-is off,
-and the
-.b name
-is set to \*(lqBlue Meanie\*(rq,
-use the command
-.nf
-.ti +3n
-% setenv ROGUEOPTS "jump,noterse,name=Blue Meanie"\**
-.fi
-.(f
-\**
-For those of you who use the bourne shell, the commands would be
-.in +3
-.nf
-$ ROGUEOPTS="jump,noterse,name=Blue Meanie"
-$ export ROGUEOPTS
-.fi
-.in +0
-.)f
-.sh 2 "Option list"
-.pp
-Here is a list of the options
-and an explanation of what each one is for.
-The default value for each is enclosed in square brackets.
-For character string options,
-input over fifty characters will be ignored.
-.ip "\fBterse\fP [\fI\^noterse\^\fP]"
-Useful for those who are tired of the sometimes lengthy messages of rogue.
-This is a useful option for playing on slow terminals,
-so this option defaults to
-.b terse
-if your
-are on a slow (1200 baud or under) terminal.
-.ip "\fBjump\fP [\fI\^nojump\^\fP]"
-If this option is set,
-running moves will not be displayed
-until you reach the end of the move.
-This saves considerable cpu and display time.
-This option defaults to
-.b jump
-if you are using a slow terminal.
-.ip "\fBstep\fP [\fI\^nostep\^\fP]"
-When
-.b step
-is set,
-lists of things,
-like inventories or
-.Cs *
-responses to
-\*(lqWhich item do you wish to \fB. . .\fP? \*(rq questions,
-are displayed one item at a time on the top of the screen,
-rather than clearing the screen,
-displaying the list,
-then re-displaying the dungeon level.
-.ip "\fBflush\fP [\fI\^noflush\^\fP]"
-All typeahead is thrown away after each round of battle.
-This is useful for those who type far ahead
-and then watch in dismay as a Kobold kills them.
-.ip "\fBaskme\fP [\fI\^noaskme\^\fP]"
-Upon reading a scroll or quaffing a potion
-which does not automatically identify itself upon use,
-rogue will ask you what to name it
-so you can recognize it if you encounter it again.
-.ip "\fBpassgo\fP [\fI\^nopassgo\^\fP]"
-Follow turnings in passageways.
-If you run in a passage
-and you run into stone or a wall,
-rogue will see if it can turn to the right or left.
-If it can only turn one way,
-it will turn that way.
-If it can turn either or neither,
-it will stop.
-This is followed strictly,
-which can sometimes lead to slightly confusing occurrences
-(which is why it defaults to being off).
-The
-.Cs f
-prefix still works.
-.ip "\fBname\fP [account name]"
-This is the name of your character.
-It is used if you get on the top ten scorer's list.
-.ip "\fBfruit\fP [\fI\^slime-mold\^\fP]"
-This should hold the name of a fruit that you enjoy eating.
-It is basically a whimsey that the program uses in a couple of places.
-.ip "\fBfile\fP [\fI\^~/rogue.save\^\fP]"
-The default file name for saving the game.
-If your phone is hung up by accident,
-rogue will automatically save the game in this file.
-The file name may contain the special character
-.Cs ~
-which expands to be your home directory.
-.sh 1 Scoring
-.pp
-Rogue usually maintains a list
-of the top ten scoring people on your machine.
-Some installations limit each account on the machine
-to post only one non-winning score on this list, however
-this is no longer considered the default behavior.
-If you score higher than someone else on this list,
-or better your previous score on the list,
-you will be inserted in the proper place
-under your current name.
-.pp
-If you quit the game, you get out with all of your gold intact.
-If, however, you get killed in the Dungeons of Doom,
-your body is forwarded to your next-of-kin,
-along with 90% of your gold;
-ten percent of your gold is kept by the Dungeons' wizard as a fee.
-This should make you consider whether you want to take one last hit
-at that monster and possibly live,
-or quit and thus stop with whatever you have.
-If you quit, you do get all your gold,
-but if you swing and live, you might find more.
-.pp
-If you just want to see what the current top ten list is,
-you can type
-.ti +1i
-.nf
-% rogue \-s
-.br
-.sh 1 Acknowledgements
-.pp
-Rogue was originally conceived of by Glenn Wichman and Michael Toy.
-Ken Arnold and Michael Toy then smoothed out the user interface,
-and added jillions of new features.
-We would like to thank
-Bob Arnold,
-Michelle Busch,
-Andy Hatcher,
-Kipp Hickman,
-Mark Horton,
-Daniel Jensen,
-Bill Joy,
-Joe Kalash,
-Steve Maurer,
-Marty McNary,
-Jan Miller,
-and
-Scott Nelson
-for their ideas and assistance,
-and also the teeming multitudes
-who graciously ignored work, school, and social life to play rogue
-and send us bugs, complaints, suggestions, and just plain flames.
-And also Mom.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rogue4/rogue.me.in	Tue Oct 11 15:20:40 2011 +0000
@@ -0,0 +1,787 @@
+.ds E \s-2<ESCAPE>\s0
+.ds R \s-2<RETURN>\s0
+.ds U \s-2UNIX\s0
+.ie t .ds _ \d\(mi\u
+.el .ds _ _
+.de Cs
+\&\\$3\*(lq\\$1\*(rq\\$2
+..
+.sp 5
+.ce 1000
+.ps +4
+.vs +4p
+.b
+A Guide to the Dungeons of Doom
+.r
+.vs
+.ps
+.sp 2
+.i
+Michael C. Toy
+Kenneth C. R. C. Arnold
+.r
+.sp 2
+Computer Systems Research Group
+Department of Electrical Engineering and Computer Science
+University of California
+Berkeley, California  94720
+.sp 4
+.i ABSTRACT
+.ce 0
+.(b I F
+.bi Rogue
+is a visual CRT based fantasy game
+which runs under the \*U\(dg timesharing system.
+.(f
+\fR\(dg\*U is a trademark of Bell Laboratories\fP
+.)f
+This paper describes how to play rogue,
+and gives a few hints
+for those who might otherwise get lost in the Dungeons of Doom.
+.)b
+.he '''\fBA Guide to the Dungeons of Doom\fP'
+.fo ''- % -''
+.bp 1
+.sh 1 Introduction
+.pp
+You have just finished your years as a student at the local fighter's guild.
+After much practice and sweat you have finally completed your training
+and are ready to embark upon a perilous adventure.
+As a test of your skills,
+the local guildmasters have sent you into the Dungeons of Doom.
+Your task is to return with the Amulet of Yendor.
+Your reward for the completion of this task
+will be a full membership in the local guild.
+In addition,
+you are allowed to keep all the loot you bring back from the dungeons.
+.pp
+In preparation for your journey,
+you are given an enchanted mace,
+a bow, and a quiver of arrows
+taken from a dragon's hoard in the far off Dark Mountains.
+You are also outfitted with elf-crafted armor
+and given enough food to reach the dungeons.
+You say goodbye to family and friends for what may be the last time
+and head up the road.
+.pp
+You set out on your way to the dungeons
+and after several days of uneventful travel,
+you see the ancient ruins
+that mark the entrance to the Dungeons of Doom.
+It is late at night,
+so you make camp at the entrance
+and spend the night sleeping under the open skies.
+In the morning you gather your mace,
+put on your armor,
+eat what is almost your last food,
+and enter the dungeons.
+.sh 1 "What is going on here?"
+.pp
+You have just begun a game of rogue.
+Your goal is to grab as much treasure as you can,
+find the Amulet of Yendor,
+and get out of the Dungeons of Doom alive.
+On the screen,
+a map of where you have been
+and what you have seen on the current dungeon level is kept.
+As you explore more of the level,
+it appears on the screen in front of you.
+.pp
+Rogue differs from most computer fantasy games in that it is screen oriented.
+Commands are all one or two keystrokes\**
+.(f
+\** As opposed to pseudo English sentences.
+.)f
+and the results of your commands
+are displayed graphically on the screen rather
+than being explained in words.
+.pp
+Another major difference between rogue and other computer fantasy games
+is that once you have solved all the puzzles in a standard fantasy game,
+it has lost most of its excitement and it ceases to be fun.
+Rogue,
+on the other hand,
+generates a new dungeon every time you play it
+and even the author finds it an entertaining and exciting game.
+.sh 1 "What do all those things on the screen mean?"
+.pp
+In order to understand what is going on in rogue
+you have to first get some grasp of what rogue is doing with the screen.
+The rogue screen is intended
+to replace the \*(lqYou can see ...\*(rq descriptions
+of standard fantasy games.
+Figure 1 is a sample of what a rogue screen might look like.
+.(z
+.hl
+.nf
+.TS
+center;
+ce0 ce0 ce0 ce0 ce0 ce0 ce0 ce0 ce0 ce0 ce0 ce.
+-	-	-	-	-	-	-	-	-	-	-	-
+|	.	.	.	.	.	.	.	.	.	.	+
+|	.	.	@	.	.	.	.	]	.	.	|
+|	.	.	.	.	B	.	.	.	.	.	|
+|	.	.	.	.	.	.	.	.	.	.	|
+-	-	-	-	-	+	-	-	-	-	-	-
+.TE
+
+
+.ce 1000
+Level: 1  Gold: 0      Hp: 12(12)  Str: 16(16)  Ac: 6  Exp: 1/0
+
+Figure 1
+.ce
+.hl
+.)z
+.sh 2 "The bottom line"
+.pp
+At the bottom line of the screen
+are a few pieces of cryptic information
+describing your current status.
+Here is an explanation of what these things mean:
+.ip Level \w'Level\ \ 'u
+This number indicates how deep you have gone in the dungeon.
+It starts at one and goes up as you go deeper into the dungeon.
+.ip Gold \w'Level\ \ 'u
+The number of gold pieces you have managed to find
+and keep with you so far.
+.ip Hp \w'Level\ \ 'u
+Your current and maximum hit points.
+Hit points indicate how much damage you can take before you die.
+The more you get hit in a fight,
+the lower they get.
+You can regain hit points by resting.
+The number in parentheses
+is the maximum number your hit points can reach.
+.ip Str \w'Level\ \ 'u
+Your current strength and maximum ever strength.
+This can be any integer less than or equal to 31,
+or greater than or equal to three.
+The higher the number,
+the stronger you are.
+The number in the parentheses
+is the maximum strength you have attained so far this game.
+.ip Ac \w'Level\ \ 'u
+Your current armor class.
+This number indicates how effective your armor is
+in stopping blows from unfriendly creatures.
+The lower this number is,
+the more effective the armor.
+.ip Exp \w'Level\ \ 'u
+These two numbers give your current experience level
+and experience points.
+As you do things,
+you gain experience points.
+At certain experience point totals,
+you gain an experience level.
+The more experienced you are,
+the better you are able to fight and to withstand magical attacks.
+.sh 2 "The top line"
+.pp
+The top line of the screen is reserved
+for printing messages that describe things
+that are impossible to represent visually.
+If you see a \*(lq--More--\*(rq on the top line,
+this means that rogue wants to print another message on the screen,
+but it wants to make certain
+that you have read the one that is there first.
+To read the next message,
+just type a space.
+.sh 2 "The rest of the screen"
+.pp
+The rest of the screen is the map of the level
+as you have explored it so far.
+Each symbol on the screen represents something.
+Here is a list of what the various symbols mean:
+.ip @
+This symbol represents you, the adventurer.
+.ip "-\^|"
+These symbols represent the walls of rooms.
+.ip +
+A door to/from a room.
+.ip .
+The floor of a room.
+.ip #
+The floor of a passage between rooms.
+.ip *
+A pile or pot of gold.
+.ip )
+A weapon of some sort.
+.ip ]
+A piece of armor.
+.ip !
+A flask containing a magic potion.
+.ip ?
+A piece of paper, usually a magic scroll.
+.ip =
+A ring with magic properties
+.ip /
+A magical staff or wand
+.ip ^
+A trap, watch out for these.
+.ip %
+A staircase to other levels
+.ip :
+A piece of food.
+.ip A-Z
+The uppercase letters
+represent the various inhabitants of the Dungeons of Doom.
+Watch out, they can be nasty and vicious.
+.sh 1 Commands
+.pp
+Commands are given to rogue by typing one or two characters.
+Most commands can be preceded by a count to repeat them
+(e.g. typing 
+.Cs 10s
+will do ten searches).
+Commands for which counts make no sense
+have the count ignored.
+To cancel a count or a prefix,
+type \*E.
+The list of commands is rather long,
+but it can be read at any time during the game with the
+.Cs ?
+command.
+Here it is for reference,
+with a short explanation of each command.
+.ip ?
+The help command.
+Asks for a character to give help on.
+If you type a
+.Cs * ,
+it will list all the commands,
+otherwise it will explain what the character you typed does.
+.ip /
+This is the \*(lqWhat is that on the screen?\*(rq command.
+A
+.Cs /
+followed by any character that you see on the level,
+will tell you what that character is.
+For instance,
+typing
+.Cs /@
+will tell you that the
+.Cs @
+symbol represents you, the player.
+.ip "h, H"
+Move left.
+You move one space to the left.
+If you use upper case
+.Cs h ,
+you will continue to move left until you run into something.
+This works for all movement commands
+(e.g.
+.Cs L
+means run in direction 
+.Cs l )
+.ip j
+Move down.
+.ip k
+Move up.
+.ip l
+Move right.
+.ip y
+Move diagonally up and left.
+.ip u
+Move diagonally up and right.
+.ip b
+Move diagonally down and left.
+.ip n
+Move diagonally down and right.
+.ip t
+Throw an object.
+This is a prefix command.
+When followed with a direction
+it throws an object in the specified direction.
+(e.g. type
+.Cs th
+to throw
+something to the left.)
+.ip f
+Find prefix.
+When followed by a direction
+it means to continue moving in the specified direction
+until you pass something interesting or run into a wall.
+You should experiment with this,
+since it is a very useful command,
+but very difficult to describe.
+.ip z
+Zap prefix.
+Point a staff or wand in a given direction
+and fire it.
+Even non-directional staves must be pointed in some direction
+to be used.
+.ip ^
+Identify trap command.
+If a trap is on your map
+and you can't remember what type it is,
+you can get rogue to remind you
+by getting next to it and typing
+.Cs ^
+followed by the direction that would move you on top of it.
+.ip s
+Search for traps and secret doors.
+Examine each space immediately adjacent to you
+for the existence of a trap or secret door.
+There is a large chance that even if there is something there,
+you won't find it,
+so you might have to search a while before you find something.
+.ip >
+Climb down a staircase to the next level.
+Not surprisingly, this can only be done if you are standing on staircase.
+.ip <
+Climb up a staircase to the level above.
+This can't be done without the Amulet of Yendor in your posession.
+.ip "."
+Rest.
+This is the \*(lqdo nothing\*(rq command.
+This is good for waiting and healing.
+.ip i
+Inventory.
+List what you are carrying in your pack.
+.ip I
+Selective inventory.
+Tells you what a single item in your pack is.
+.ip q
+Quaff one of the potions you are carrying.
+.ip r
+Read one of the scrolls in your pack.
+.ip e
+Eat food from your pack.
+.ip w
+Wield a weapon.
+Take a weapon out of your pack and carry it for use in combat,
+replacing the one you are currently using (if any).
+.ip W
+Wear armor.
+You can only wear one suit of armor at a time.
+This takes extra time.
+.ip T
+Take armor off.
+You can't remove armor that is cursed.
+This takes extra time.
+.ip P
+Put on a ring.
+You can wear only two rings at a time
+(one on each hand).
+If you aren't wearing any rings,
+this command will ask you which hand you want to wear it on,
+otherwise, it will place it on the unused hand.
+The program assumes that you wield your sword in your right hand.
+.ip R
+Remove a ring.
+If you are only wearing one ring,
+this command takes it off.
+If you are wearing two,
+it will ask you which one you wish to remove,
+.ip d
+Drop an object.
+Take something out of your pack and leave it lying on the floor.
+Only one object can occupy each space.
+You cannot drop a cursed object at all
+if you are wielding or wearing it.
+.ip c
+Call an object something.
+If you have a type of object in your pack
+which you wish to remember something about,
+you can use the call command to give a name to that type of object.
+This is usually used when you figure out what a
+potion, scroll, ring, or staff is
+after you pick it up.
+(See the
+.Cs askme
+option below.)
+.ip D
+Print out which things you've discovered something about.
+This command will ask you what type of thing you are interested in.
+If you type the character for a given type of object
+(\fIe.g.\fP
+.Cs !
+for potion)
+it will tell you which kinds of that type of object you've discovered
+(\fIi.e.\fP, figured out what they are).
+This command works for potions, scrolls, rings, and staves and wands.
+.ip o
+Examine and set options.
+This command is further explained in the section on options.
+.ip ^L
+Redraws the screen.
+Useful if spurious messages or transmission errors
+have messed up the display.
+.ip ^R
+Repeat last message.
+Useful when a message disappears before you can read it.
+This only repeats the last message
+that was not a mistyped command
+so that you don't loose anything by accidentally typing
+the wrong character instead of ^R.
+.ip \*E
+Cancel a command, prefix, or count.
+.ip !
+Escape to a shell for some commands.
+.ip Q
+Quit.
+Leave the game.
+.ip S
+Save the current game in a file.
+It will ask you whether you wish to use the default save file.
+.i Caveat :
+Rogue won't let you start up a copy of a saved game,
+and it removes the save file as soon as you start up a restored game.
+This is to prevent people from saving a game just before a dangerous position
+and then restarting it if they die.
+To restore a saved game,
+give the file name as an argument to rogue.
+As in
+.ti +1i
+.nf
+% rogue \fIsave\*_file\fP
+.ip
+To restart from the default save file (see below),
+run
+.ti +1i
+.nf
+% rogue \-r
+.ip v
+Prints the program version number.
+.sh 1 Rooms
+.pp
+Rooms in the dungeons are either lit or dark.
+If you walk into a lit room,
+the entire room will be drawn on the screen as soon as you enter.
+If you walk into a dark room,
+it will only be displayed as you explore it.
+Upon leaving a room,
+all objects inside the room which might move
+or be removed
+are erased from the screen.
+In the darkness you can only see one space
+in all directions around you.
+A corridor is always dark.
+.sh 1 Fighting
+.pp
+If you see a monster and you wish to fight it,
+just attempt to run into it.
+Many times a monster you find will mind its own business
+unless you attack it.
+It is often the case that discretion is the better part of valor.
+.sh 1 "Objects you can find"
+.pp
+When you find something in the dungeon,
+it is common to want to pick the object up.
+This is accomplished in rogue by walking over the object.
+If you are carrying too many things,
+the program will tell you and it won't pick up the object,
+otherwise it will add it to your pack
+and tell you what you just picked up.
+.pp
+Many of the commands that operate on objects must prompt you
+to find out which object you want to use.
+If you change your mind and don't want to do that command after all,
+just type an \*E and the command will be aborted.
+.pp
+Some objects, like armor and weapons,
+are easily differentiated.
+Others, like scrolls and potions,
+are given labels which vary according to type.
+During a game,
+any two of the same kind of object
+with the same label
+are the same type.
+However,
+the labels will vary from game to game.
+.pp
+When you use one of these labeled objects,
+if its effect is obvious,
+rogue will remember what it is for you.
+If it's effect isn't extremely obvious, you can use the
+.Cs call
+command
+(see above)
+or the
+.Cs askme
+option
+(see below)
+to scribble down something about it
+so you will recognize it later.
+.sh 2 Weapons
+.pp
+Some weapons,
+like arrows,
+come in bunches,
+but most come one at a time.
+In order to use a weapon,
+you must wield it.
+To fire an arrow out of a bow,
+you must first wield the bow,
+then throw the arrow.
+You can only wield one weapon at a time,
+but you can't change weapons if the one
+you are currently wielding is cursed.
+.sh 2 Armor
+.pp
+There are various sorts of armor lying around in the dungeon.
+Some of it is enchanted,
+some is cursed,
+and some is just normal.
+Different armor types have different armor classes.
+The lower the armor class,
+the more protection the armor affords against the blows of monsters.
+Here is a list of the various armor types and their normal armor class:
+.(b
+.TS
+center;
+l r.
+Type	Class
+=
+None	10
+Leather armor	8
+Studded leather / Ring mail	7
+Scale mail	6
+Chain mail	5
+Banded mail / Splint mail	4
+Plate mail	3
+.TE
+.)b
+.lp
+If a piece of armor is enchanted,
+its armor class will be lower than normal.
+If a suit of armor is cursed,
+its armor class will be higher,
+and you will not be able to remove it.
+However, not all armor with a class that is higher than normal is cursed.
+.sh 2 Scrolls
+.pp
+Scrolls come with titles in an unknown tongue.
+After you read a scroll,
+it disappears from your pack.
+.sh 2 Potions
+.pp
+Potions are labeled by the color of the liquid inside the flask.
+They disappear after being quaffed.
+.sh 2 "Staves and Wands"
+.pp
+Staves and wands do the same kinds of things.
+Staves are identified by a type of wood;
+wands by a type of metal or bone.
+They are generally things you want to do to something
+over a long distance,
+so you must point them at what you wish to affect
+to use them.
+Some staves are not affected by the direction they are pointed, though.
+Staves come with multiple magic charges,
+the number being random,
+and when they are used up,
+the staff is just a piece of wood or metal.
+.sh 2 Rings
+.pp
+Rings are very useful items,
+since they are relatively permanent magic,
+unlike the usually fleeting effects of potions, scrolls, and staves.
+Of course,
+the bad rings are also more powerful.
+Most rings also cause you to use up food more rapidly,
+the rate varying with the type of ring.
+Rings are differentiated by their stone settings.
+.sh 1 Options
+.pp
+Due to variations in personal tastes
+and conceptions of the way rogue should do things,
+there are a set of options you can set
+that cause rogue to behave in various different ways.
+.sh 2 "Setting the options"
+.pp
+There are two ways to set the options.
+The first is with the
+.Cs o
+command of rogue;
+the second is with the
+.Cs ROGUEOPTS
+environment variable\**.
+.(f
+\** On Version 6 systems,
+there is no equivalent of the ROGUEOPTS feature.
+.br
+.)f
+.br
+.sh 3 "Using the `o' command"
+.pp
+When you type
+.Cs o
+in rogue,
+it clears the screen
+and displays the current settings for all the options.
+It then places the cursor by the value of the first option
+and waits for you to type.
+You can type a \*R
+which means to go to the next option,
+a
+.Cs \-
+which means to go to the previous option,
+an \*E
+which means to return to the game,
+or you can give the option a value.
+For boolean options this merely involves typing
+.Cs t
+for true or
+.Cs f
+for false.
+For string options,
+type the new value followed by a \*R.
+.sh 3 "Using the ROGUEOPTS variable"
+.pp
+The ROGUEOPTS variable is a string
+containing a comma separated list of initial values
+for the various options.
+Boolean variables can be turned on by listing their name
+or turned off by putting a
+.Cs no
+in front of the name.
+Thus to set up an environment variable so that
+.b jump
+is on,
+.b terse
+is off,
+and the
+.b name
+is set to \*(lqBlue Meanie\*(rq,
+use the command
+.nf
+.ti +3n
+% setenv ROGUEOPTS "jump,noterse,name=Blue Meanie"\**
+.fi
+.(f
+\**
+For those of you who use the bourne shell, the commands would be
+.in +3
+.nf
+$ ROGUEOPTS="jump,noterse,name=Blue Meanie"
+$ export ROGUEOPTS
+.fi
+.in +0
+.)f
+.sh 2 "Option list"
+.pp
+Here is a list of the options
+and an explanation of what each one is for.
+The default value for each is enclosed in square brackets.
+For character string options,
+input over fifty characters will be ignored.
+.ip "\fBterse\fP [\fI\^noterse\^\fP]"
+Useful for those who are tired of the sometimes lengthy messages of rogue.
+This is a useful option for playing on slow terminals,
+so this option defaults to
+.b terse
+if your
+are on a slow (1200 baud or under) terminal.
+.ip "\fBjump\fP [\fI\^nojump\^\fP]"
+If this option is set,
+running moves will not be displayed
+until you reach the end of the move.
+This saves considerable cpu and display time.
+This option defaults to
+.b jump
+if you are using a slow terminal.
+.ip "\fBstep\fP [\fI\^nostep\^\fP]"
+When
+.b step
+is set,
+lists of things,
+like inventories or
+.Cs *
+responses to
+\*(lqWhich item do you wish to \fB. . .\fP? \*(rq questions,
+are displayed one item at a time on the top of the screen,
+rather than clearing the screen,
+displaying the list,
+then re-displaying the dungeon level.
+.ip "\fBflush\fP [\fI\^noflush\^\fP]"
+All typeahead is thrown away after each round of battle.
+This is useful for those who type far ahead
+and then watch in dismay as a Kobold kills them.
+.ip "\fBaskme\fP [\fI\^noaskme\^\fP]"
+Upon reading a scroll or quaffing a potion
+which does not automatically identify itself upon use,
+rogue will ask you what to name it
+so you can recognize it if you encounter it again.
+.ip "\fBpassgo\fP [\fI\^nopassgo\^\fP]"
+Follow turnings in passageways.
+If you run in a passage
+and you run into stone or a wall,
+rogue will see if it can turn to the right or left.
+If it can only turn one way,
+it will turn that way.
+If it can turn either or neither,
+it will stop.
+This is followed strictly,
+which can sometimes lead to slightly confusing occurrences
+(which is why it defaults to being off).
+The
+.Cs f
+prefix still works.
+.ip "\fBname\fP [account name]"
+This is the name of your character.
+It is used if you get on the top ten scorer's list.
+.ip "\fBfruit\fP [\fI\^slime-mold\^\fP]"
+This should hold the name of a fruit that you enjoy eating.
+It is basically a whimsey that the program uses in a couple of places.
+.ip "\fBfile\fP [\fI\^~/rogue.save\^\fP]"
+The default file name for saving the game.
+If your phone is hung up by accident,
+rogue will automatically save the game in this file.
+The file name may contain the special character
+.Cs ~
+which expands to be your home directory.
+.sh 1 Scoring
+.pp
+Rogue usually maintains a list
+of the top ten scoring people on your machine.
+Some installations limit each account on the machine
+to post only one non-winning score on this list, however
+this is no longer considered the default behavior.
+If you score higher than someone else on this list,
+or better your previous score on the list,
+you will be inserted in the proper place
+under your current name.
+.pp
+If you quit the game, you get out with all of your gold intact.
+If, however, you get killed in the Dungeons of Doom,
+your body is forwarded to your next-of-kin,
+along with 90% of your gold;
+ten percent of your gold is kept by the Dungeons' wizard as a fee.
+This should make you consider whether you want to take one last hit
+at that monster and possibly live,
+or quit and thus stop with whatever you have.
+If you quit, you do get all your gold,
+but if you swing and live, you might find more.
+.pp
+If you just want to see what the current top ten list is,
+you can type
+.ti +1i
+.nf
+% rogue \-s
+.br
+.sh 1 Acknowledgements
+.pp
+Rogue was originally conceived of by Glenn Wichman and Michael Toy.
+Ken Arnold and Michael Toy then smoothed out the user interface,
+and added jillions of new features.
+We would like to thank
+Bob Arnold,
+Michelle Busch,
+Andy Hatcher,
+Kipp Hickman,
+Mark Horton,
+Daniel Jensen,
+Bill Joy,
+Joe Kalash,
+Steve Maurer,
+Marty McNary,
+Jan Miller,
+and
+Scott Nelson
+for their ideas and assistance,
+and also the teeming multitudes
+who graciously ignored work, school, and social life to play rogue
+and send us bugs, complaints, suggestions, and just plain flames.
+And also Mom.