add missing files

git-svn-id: file:///srv/svn/joey/trunk/src/packages/bsdgames@9776 a4a2c43b-8ac3-0310-8836-e0e880c912e2
This commit is contained in:
joey
2003-12-19 20:16:57 +00:00
parent 51eabc017b
commit 8df0f09c16
26 changed files with 96704 additions and 0 deletions

5266
ChangeLog Normal file

File diff suppressed because it is too large Load Diff

75
atc/include.h Normal file
View File

@@ -0,0 +1,75 @@
/* $NetBSD: include.h,v 1.7 2001/08/29 18:23:44 jsm Exp $ */
/*-
* Copyright (c) 1990, 1993
* The Regents of the University of California. All rights reserved.
*
* This code is derived from software contributed to Berkeley by
* Ed James.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* @(#)include.h 8.1 (Berkeley) 5/31/93
*/
/*
* Copyright (c) 1987 by Ed James, UC Berkeley. All rights reserved.
*
* Copy permission is hereby granted provided that this notice is
* retained on all partial or complete copies.
*
* For more info on this and all of my stuff, mail edjames@berkeley.edu.
*/
#include <sys/types.h>
#include <sys/file.h>
#include <sys/stat.h>
#include <sys/time.h>
#include <sys/utsname.h>
#include <sys/wait.h>
#include <ctype.h>
#include <curses.h>
#include <err.h>
#include <errno.h>
#include <fcntl.h>
#include <math.h>
#include <pwd.h>
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <termios.h>
#include <time.h>
#include <unistd.h>
#include "def.h"
#include "struct.h"
#include "extern.h"
#include "tunable.h"

View File

@@ -0,0 +1,185 @@
.\" $NetBSD: backgammon.6,v 1.9 2002/09/26 18:31:58 wiz Exp $
.\"
.\" Copyright (c) 1980, 1993
.\" The Regents of the University of California. All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\" must display the following acknowledgement:
.\" This product includes software developed by the University of
.\" California, Berkeley and its contributors.
.\" 4. Neither the name of the University nor the names of its contributors
.\" may be used to endorse or promote products derived from this software
.\" without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" @(#)backgammon.6 8.1 (Berkeley) 5/31/93
.\"
.Dd May 31, 1993
.Dt BACKGAMMON 6
.Os
.Sh NAME
.Nm backgammon
.Nd the game of backgammon
.br
.Nm teachgammon
.Nd learn to play backgammon
.Sh SYNOPSIS
.Nm
.Op Fl
.Op Fl nrwb
.Op Fl pr
.Op Fl pw
.Op Fl pb
.Op Fl t Ar term
.Op Fl s Ar file
.br
.Nm teachgammon
.Sh DESCRIPTION
This program lets you play backgammon against the computer
or against a "friend".
All commands only are one letter, so you don't need to type a carriage return,
except at the end of a move.
The program is mostly self documenting,
so that a question mark (?) will usually get some help.
If you answer `y' when the program asks if you want the rules,
you will get text explaining the rules of the game, some hints on strategy,
instruction on how to use the program,
and a tutorial consisting of a practice game against the computer.
A description of how to use the program can be
obtained by answering `y' when it asks if you want instructions.
.Pp
The possible arguments for backgammon
(most are unnecessary but some are very convenient)
consist of:
.Bl -tag -width indent
.It Fl n
don't ask for rules or instructions
.It Fl r
player is red (implies n)
.It Fl w
player is white (implies n)
.It Fl b
two players, red and white (implies n)
.It Fl pr
print the board before red's turn
.It Fl pw
print the board before white's turn
.It Fl pb
print the board before both player's turn
.It Fl t Ar term
terminal is type
.Ar term ,
uses
.Pa /usr/share/misc/termcap
.It Fl s Ar file
recover previously saved game from
.Ar file .
.El
.Pp
.\"
.\" Arguments may be optionally preceded by a `-'.
.\" Several arguments may be concatenated together,
.\" but not after `s' or `t' arguments,
.\" since they can be followed by an arbitrary string.
Any unrecognized arguments are ignored.
An argument of a lone `-' gets a description of possible arguments.
.Pp
If
.Ar term
has capabilities for direct cursor movement (see
.Xr termcap 5 )
.Nm
``fixes'' the board after each move,
so the board does not need to be reprinted,
unless the screen suffers some horrendous malady.
Also, any `p' option will be ignored.
(The `t' option is not necessary unless the terminal type does not match
the entry in the
.Pa /usr/share/misc/termcap
data base.)
.Sh QUICK REFERENCE
When the program prompts by typing only your color,
type a space or carriage return to roll, or
.Bl -tag -width indent
.It Ic d
to double
.It Ic p
to print the board
.It Ic q
to quit
.It Ic s
to save the game for later
.El
.Pp
When the program prompts with 'Move:', type
.Bl -tag -width indent
.It Ic p
to print the board
.It Ic q
to quit
.It Ic s
to save the game
.El
.Pp
or a
.Em move ,
which is a sequence of
.Bl -tag -width indent
.It Ic s-f
move from
.Ic s
to
.Ic f
.It Ic s/r
move one man on
.Ic s
the roll
.Ic r
separated by commas or spaces and ending with a newline.
Available abbreviations are
.Bl -tag -width indent
.It Ic s-f1-f2
means
.Ic s-f1,f1-f2
.It Ic s/r1r2
means
.Ic s/r1,s/r2
.El
.El
.Pp
Use
.Ic b
for bar and
.Ic h
for home,
or 0 or 25 as appropriate.
.Sh AUTHOR
.An Alan Char
.Sh FILES
.Bl -tag -width /usr/share/misc/termcap -compact
.It Pa @gamesdir@/teachgammon
rules and tutorial
.It Pa /usr/share/misc/termcap
terminal capabilities
.El
.Sh BUGS
The program's strategy needs much work.

View File

@@ -0,0 +1,5 @@
a.out
*.d
*.i
*.s
*.d.tmp

View File

@@ -0,0 +1,6 @@
a.out
*.d
*.i
*.s
*.d.tmp
teachgammon

125
boggle/boggle/timer.c Normal file
View File

@@ -0,0 +1,125 @@
/* $NetBSD: timer.c,v 1.7 2002/09/19 21:26:56 mycroft Exp $ */
/*-
* Copyright (c) 1993
* The Regents of the University of California. All rights reserved.
*
* This code is derived from software contributed to Berkeley by
* Barry Brachman.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include <sys/cdefs.h>
#ifndef lint
#if 0
static char sccsid[] = "@(#)timer.c 8.2 (Berkeley) 2/22/94";
#else
__RCSID("$NetBSD: timer.c,v 1.7 2002/09/19 21:26:56 mycroft Exp $");
#endif
#endif /* not lint */
#include <sys/param.h>
#include <sys/time.h>
#include <sys/poll.h>
#include <curses.h>
#include <setjmp.h>
#include <string.h>
#include <stdio.h>
#include <unistd.h>
#include "bog.h"
#include "extern.h"
static int waitch __P((int));
extern int tlimit;
extern time_t start_t;
extern jmp_buf env;
/*
* Update the display of the remaining time while waiting for a character
* If time runs out do a longjmp() to the game controlling routine, returning
* non-zero; oth. return the character
* Leave the cursor where it was initially
*/
int
timerch()
{
time_t prevt, t;
int col, remaining, row;
getyx(stdscr, row, col);
prevt = 0L;
for (;;) {
if (waitch(1) == 1)
break;
time(&t);
if (t == prevt)
continue;
prevt = t;
remaining = tlimit - (int) (t - start_t);
if (remaining < 0) {
longjmp(env, 1);
/*NOTREACHED*/
}
move(TIMER_LINE, TIMER_COL);
printw("%d:%02d", remaining / 60, remaining % 60);
move(row, col);
refresh();
}
return (getch() & 0177);
}
/*
* Wait up to 'delay' microseconds for input to appear
* Returns 1 if input is ready, 0 oth.
*/
static int
waitch(delay)
int delay;
{
struct pollfd set[1];
set[0].fd = STDIN_FILENO;
set[0].events = POLLIN;
return (poll(set, 1, delay));
}
void
delay(tenths)
int tenths;
{
struct timespec duration;
duration.tv_nsec = (tenths % 10 ) * 100000000L;
duration.tv_sec = (long) (tenths / 10);
nanosleep(&duration, NULL);
}

7
boggle/mkdict/.cvsignore Normal file
View File

@@ -0,0 +1,7 @@
a.out
*.d
*.i
*.s
*.d.tmp
mkdict
dictionary

View File

@@ -0,0 +1,7 @@
a.out
*.d
*.i
*.s
*.d.tmp
mkindex
dictindex

View File

@@ -0,0 +1,126 @@
.\" $NetBSD: canfield.6,v 1.8 2002/09/26 18:32:00 wiz Exp $
.\"
.\" Copyright (c) 1983, 1993
.\" The Regents of the University of California. All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\" must display the following acknowledgement:
.\" This product includes software developed by the University of
.\" California, Berkeley and its contributors.
.\" 4. Neither the name of the University nor the names of its contributors
.\" may be used to endorse or promote products derived from this software
.\" without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" @(#)canfield.6 8.1 (Berkeley) 5/31/93
.\"
.Dd May 31, 1993
.Dt CANFIELD 6
.Os
.Sh NAME
.Nm canfield ,
.Nm cfscores
.Nd the solitaire card game canfield
.Sh SYNOPSIS
.Nm
.Nm cfscores
.Op Fl a
.Op Ar user
.Sh DESCRIPTION
If you have never played solitaire before, it is recommended
that you consult a solitaire instruction book. In
Canfield, tableau cards may be built on each other downward
in alternate colors. An entire pile must be moved as a unit
in building. Top cards of the piles are available
to be played on foundations, but never into empty spaces.
.Pp
Spaces must be filled from the stock. The top card of
the stock also is available to be played on foundations or
built on tableau piles. After the stock is exhausted,
tableau spaces may be filled from the talon and the player may
keep them open until he wishes to use them.
.Pp
Cards are dealt from the hand to the talon by threes
and this repeats until there are no more cards in the hand
or the player quits.
To have cards dealt onto the talon the player types
.Sq Ic ht
for his move.
Foundation base cards are also automatically moved to the foundation
when they become available.
.Pp
The command
.Sq Ic c
causes
.Nm
to maintain card counting statistics on the bottom of the screen.
When properly used this can greatly increase one's chances of winning.
.Pp
The rules for betting are somewhat less strict than
those used in the official version of the game.
The initial deal costs $13.
You may quit at this point or inspect the game.
Inspection costs $13 and allows you to make as many
moves as possible without moving any cards from your hand to the talon.
(The initial deal places three cards on the talon;
if all these cards are used, three more are made available.)
Finally, if the game seems interesting,
you must pay the final installment of $26.
At this point you are
credited at the rate of $5 for each card on the foundation;
as the game progresses you are credited with $5 for each
card that is moved to the foundation.
Each run through the hand after the first costs $5.
The card counting feature
costs $1 for each unknown card that is identified.
If the information is toggled on, you are only charged for cards
that became visible since it was last turned on.
Thus the maximum cost of information is $34.
Playing time is charged at a rate of $1 per minute.
.Pp
With no arguments, the program
.Nm cfscores
prints out the current status of your canfield account.
If a
.Ar user
name is specified, it prints out the status of their canfield account.
If the
.Fl a
flag is specified,
it prints out the canfield accounts for all users that have
played the game since the database was set up.
.Sh FILES
.Bl -tag -width @gamesdir@/canfield -compact
.It Pa @gamesdir@/canfield
the game itself
.It Pa @gamesdir@/cfscores
the database printer
.It Pa @canfield_scorefile@
the database of scores
.El
.Sh BUGS
It is impossible to cheat.
.Sh AUTHORS
Originally written: Steve Levine.
.Pp
Further random hacking by: Steve Feldman, Kirk McKusick,
Mikey Olson, and Eric Allman.

View File

@@ -0,0 +1,11 @@
# $NetBSD: Makefile,v 1.7 2002/09/18 06:16:40 lukem Exp $
# @(#)Makefile 8.1 (Berkeley) 5/31/93
NOMAN= # defined
PROG= cfscores
CPPFLAGS+= -I${.CURDIR}/../canfield
HIDEGAME= hidegame
.include "../../Makefile.inc"
.include <bsd.prog.mk>

View File

@@ -0,0 +1,77 @@
# $NetBSD: Makefile,v 1.33 2002/10/22 16:14:04 drochner Exp $
# @(#)Makefile 8.2 (Berkeley) 4/19/94
.include <bsd.own.mk> # for INSTALL_OFFENSIVE_FORTUNES
SRCFILES= fortunes fortunes2 startrek zippy unamerican-o limerick \
netbsd farber
DATFILES= fortunes.dat fortunes2.dat startrek.dat zippy.dat \
fortunes-o fortunes-o.dat fortunes2-o fortunes2-o.dat \
limerick.dat limerick-o limerick-o.dat unamerican-o \
unamerican-o.dat netbsd.dat netbsd-o netbsd-o.dat \
farber.dat
# TO AVOID INSTALLING THE POTENTIALLY OFFENSIVE FORTUNES, RUN 'make' with
# "INSTALL_OFFENSIVE_FORTUNES=NO", or set "INSTALL_OFFENSIVE_FORTUNES=NO"
# IN bsd.own.mk OR /etc/mk.conf.
INSTALL_OFFENSIVE_FORTUNES?= YES
.if (${INSTALL_OFFENSIVE_FORTUNES} == "YES")
TYPE= real
.else
TYPE= fake
.endif
CLEANFILES+=${DATFILES}
STRFILEDIR!=cd $(.CURDIR)/../strfile; ${PRINTOBJDIR}
STRFILE=${STRFILEDIR}/strfile
.if ${MKSHARE} != "no"
FILES=${SRCFILES} ${DATFILES}
FILESDIR=/usr/share/games/fortune
.endif
realall: ${DATFILES}
# Normal fortunes: build directly from data files.
fortunes.dat fortunes2.dat startrek.dat zippy.dat limerick.dat netbsd.dat farber.dat:
${STRFILE} -rs ${.CURDIR}/${.TARGET:R} ${.TARGET}
fortunes.dat: fortunes
fortunes2.dat: fortunes2
startrek.dat: startrek
zippy.dat: zippy
limerick.dat: limerick
netbsd.dat: netbsd
farber.dat: farber
# Obscene fortunes: we have to build source and data files
fortunes-o: fortunes-o.${TYPE}
tr 'a-zA-Z' 'n-za-mN-ZA-M' < ${.ALLSRC} > ${.TARGET}
fortunes-o.dat: fortunes-o
${STRFILE} -rsx ${.ALLSRC} ${.TARGET}
fortunes2-o: fortunes2-o.${TYPE}
tr 'a-zA-Z' 'n-za-mN-ZA-M' < ${.ALLSRC} > ${.TARGET}
fortunes2-o.dat: fortunes2-o
${STRFILE} -rsx ${.ALLSRC} ${.TARGET}
limerick-o: limerick-o.${TYPE}
tr 'a-zA-Z' 'n-za-mN-ZA-M' < ${.ALLSRC} > ${.TARGET}
limerick-o.dat: limerick-o
${STRFILE} -rsx ${.ALLSRC} ${.TARGET}
unamerican-o: unamerican-o.${TYPE}
tr 'a-zA-Z' 'n-za-mN-ZA-M' < ${.ALLSRC} > ${.TARGET}
unamerican-o.dat: unamerican-o
${STRFILE} -rsx ${.ALLSRC} ${.TARGET}
netbsd-o: netbsd-o.${TYPE}
tr 'a-zA-Z' 'n-za-mN-ZA-M' < ${.ALLSRC} > ${.TARGET}
netbsd-o.dat: netbsd-o
${STRFILE} -rsx ${.ALLSRC} ${.TARGET}
.include <bsd.prog.mk>

16287
fortune/datfiles/fortunes Normal file

File diff suppressed because it is too large Load Diff

55876
fortune/datfiles/fortunes2 Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

50
fortune/datfiles/limerick Normal file
View File

@@ -0,0 +1,50 @@
A computer called Illiac4
Had a rather tough bug in its core.
It chewed up its cards
And spewed yards and yards
Of illegible tape on the floor.
%
A computer, to print out a fact,
Will divide, multiply, and subtract.
But this output can be
No more than debris,
If the input was short of exact.
-- Gigo
%
A dreary young bank clerk named Fennis
Wished to foster an aura of menace;
To make people afraid
He wore gloves of grey suede
And white footgear intended for tennis.
-- Edward Gorey
%
A hacker who screwed a mag tape
Was caught and convicted of rape.
To jail he did go,
From which, to his woe
He couldn't get out with ESC.
%
A linguist thought it a farce
That memory space was so sparse.
One day they increased it.
Said he as he seized it:
"At last! Enough core for the parse".
%
A progressive professor named Winners
Held classes each evening for sinners.
They were graded and spaced
So the vile and debased
Would not be held back by beginners.
%
A very intelligent turtle
Found programming UNIX a hurdle
The system, you see,
Ran as slow as did he,
And that's not saying much for the turtle.
%
There was a young lady from Niger
Who smiled as she rode on a tiger;
They returned from the ride
With the lady inside,
And the smile on the face of the tiger.
%

543
fortune/datfiles/netbsd Normal file
View File

@@ -0,0 +1,543 @@
%____ __ _ ____ __ __ ___ ___ ___
___ / | / /__ _/ /_ / |/ __\ / _ |
__ / |/ // _\/_ _/ / ' / \_ \ / / /
_ / /| // __/ / /_ / , | __/ // / ,/
/_/ |__/_\__/__\__//___/__\__//___'
-- Greywolf
%
- What's up?
- All the NetBSD servers, of course..
-- Gavan Fantom
%
A _Real_ Operating System for _Real_ Hackers.
-- Greywolf
%
Anagrams for NetBSD core team:
Breasted cot men
Embraces dot net
Strobed teen cam
Aborted men sect
Emtomb DEC tears
-- Julian Assange
%
Anagrams for NetBSD core team:
Crested Boatmen
Resented Combat
Boast Decrement
Basement DEC rot
-- Julian Assange
%
Anagrams for NetBSD-core:
Bent Coders
Secret Bond
Robs DECNet
Cost Bender
-- Julian Assange
%
Anagrams for NetBSD-core:
Cot Benders
Be stern, Doc.
Net robs DEC
DEC robs Net
-- Julian Assange
%
http://www.imrryr.org/NetBSD/logo
-- R. C. Dowdeswell
%
I didn't get where I am today without using NetBSD
-- Dave Tyson
%
My other computer runs NetBSD
-- Allen Briggs
%
NetBSD - a devil of an operating system.
-- Julian Assange
%
NetBSD - A Mycroft in every port.
-- Julian Assange
%
NetBSD - a server in every port.
-- Julian Assange
%
NetBSD - because Unix isn't just #include <linux.h>, i386, ELF, ...!
-- Hubert Feyrer
%
NetBSD - big, isn't it?
-- Julian Assange
%
NetBSD - daemonic power
-- R. C. Dowdeswell
%
NetBSD: Flying into the heart of the Sun. And the i386, and alpha,
and mac, and powerpc, and...
-- Greywolf
%
NetBSD - free yourself from all Stallmanist thought!
-- Julian Assange
%
NetBSD: Got source?
%
NetBSD - hackers tested, mom approved
-- Ken Nakata
%
NetBSD - here today and in the middle of 2038 tomorrow.
-- Julian Assange
%
NetBSD - Mach 3 stealthOS, undetectable by media radar.
-- Julian Assange
%
NetBSD - more is more.
-- Julian Assange
%
NetBSD: No Windows or Gates, but lots of doors, portals and tunnels.
-- Greywolf
%
NetBSD - penguin flesh never tasted so good.
-- Julian Assange
%
NetBSD - posix me harder.
-- Julian Assange
%
NetBSD: Post No Bills.
-- Greywolf
%
NetBSD - safe ports in a storm.
-- Julian Assange
%
NetBSD - Scalability Does Matter.
-- Julian Assange
%
NetBSD - Serious Other, or Serious Operating system. Your choice.
-- Julian Assange
%
NetBSD - the Berkeley redemption.
-- Julian Assange
%
NetBSD - the cathedral versus the bizarre.
-- Julian Assange
%
NetBSD - the cure.
-- Julian Assange
%
NetBSD - the devil finds work for idle cycles.
-- Julian Assange
%
NetBSD - the devil made me do it.
-- Julian Assange
%
NetBSD - the devil's advocate.
-- Julian Assange
%
NetBSD - the devil's not just in vaudeville.
-- Julian Assange
%
NetBSD - the power to suave.
-- Julian Assange
%
NetBSD - the power to swerve (penguins, worse than cane toads).
-- Julian Assange
%
NetBSD: The Source is out there.
-- Greywolf
%
NetBSD - The undiscriminated geek UNIX
-- Richard Rauch
%
NetBSD - we have nothing to declare but our benchmarks.
-- Julian Assange
%
NetBSD - we put the Net in NetBSD.
-- Julian Assange
%
NetBSD - We're not in canvas anymore, toto
-- Julian Assange
%
NetBSD - where do you want to go Tuesday?
-- Julian Assange
%
NetBSD - Will even run on i386
-- Brian Hechinger
%
NetBSD - your basement or mine?
-- Julian Assange
%
NetBSD: A drinking group with a serious computing problem.
%
NetBSD: A pmap for every occasion.
-- David Brownlee
%
NetBSD: Abandon all hype, oh ye who enter here.
%
NetBSD: Agnostics in the Platform Religious Wars.
-- Erik E. Fair
%
NetBSD: An Operating System For Everyone
-- Mike Latinovich
%
NetBSD: Are you old enough to run it?
-- Tom Harvey
%
NetBSD: Beyond Windows
-- Johan Ihren
%
NetBSD: CD-ROMs? We don't need no stinkin' CD-ROMs!
-- Tom Harvey
%
NetBSD: Choose Your Own Slogan
-- Dirk Myers
%
NetBSD: Compatible with the Real World.
-- Greywolf
%
NetBSD: Dave Barry is working on our motto
-- Tom Harvey
%
NetBSD: demonic power.
-- R. C. Dowdeswell
%
NetBSD: Designed to be {secure, reliable, portable, CORRECT}
-- Matthew Orgass
%
NetBSD: Download one, get ${NUMPORTS}-1 for free.
%
NetBSD: Empowering the VAX generation.
-- Andy Doran
%
NetBSD: Everyone else is doin' it. But we're doin' it right.
-- Herb Peyerl
%
NetBSD, Feed The Computer.
-- Andrew Gillham
%
NetBSD: Flexible and free!
-- Lars-Johan Liman
%
NetBSD: For The Network Generation
-- Andrew Gillham
%
NetBSD: Get Over It.
-- Andrew Gillham
%
NetBSD: Groovy Baby!
-- Andrew Gillham
%
NetBSD home page: Ultra-heavy use of blink text, hot colours, and
Flash plug-ins. All shockwave, all the time. Background music
ought to be a mixture of Phillip Glass overlaid on top of
Sublime.
-- Mason Loring Bliss
%
NetBSD: I Wanna Be Sedated
-- Curt Sampson
%
NetBSD: If you look through Windows
-- Johan Ihren
%
NetBSD: If your server could choose, it would choose NetBSD
-- Tim Rightnour
%
NetBSD, In Stalls Anywhere
-- Andrew Gillham
%
NetBSD is full. Go away.
-- Chris Baird <cjb@brushtail.apana.org.au>
%
NetBSD is much like a tipi: No windows, no gates, and an apache inside.
%
NetBSD is PAR -- Powerful, Advanced, Reliable. Is your OS up to PAR?
-- Frank Warren
%
NetBSD is the bomb. (ok, bad idea)
-- Andrew Gillham
%
NetBSD: It keeps on going...and going...and going...
-- Tom Harvey
%
NetBSD: It spanks the knickers off those other operating systems
-- Brian D Chase
%
NetBSD: it'll be there when you're ready for it
-- Greg Lehey
%
NetBSD: it's not free beer, but it's free
%
NetBSD: Its not Windows.
-- Paul Wain
%
NetBSD: It's...uh...well...have you heard of linux?
-- Tom Harvey
%
NetBSD: lets get it right
-- David Brownlee
%
NetBSD: Linux without the hype.
-- Hubert Feyrer
%
NetBSD: making all computer hardware a commodity.
-- Erik E. Fair
%
NetBSD: Making your net work, and its free to boot!
-- Steve Woodford
%
NetBSD: Masterly with distinction. Striking also.
-- Andy Doran
%
NetBSD: May the Source be with you
-- Greg Earle
%
NetBSD: Microsoft ask you where you want to go, NetBSD gets you there
-- David Brownlee
%
NetBSD, More Nines.
-- Andrew Gillham
%
NetBSD: Multi-platform OS
%
NetBSD: My Computer Runs!
-- Andrew Gillham
%
NetBSD: My Computer Works!
-- Andrew Gillham
%
NetBSD: My other computer also runs NetBSD.
-- David Brownlee
%
NetBSD, Net Improvement.
-- Andrew Gillham
%
NetBSD, Net Profit.
-- Andrew Gillham
%
NetBSD, Net Some Nines.
-- Andrew Gillham
%
NetBSD: Network Power Unleashed.
-- Andrew Gillham
%
NetBSD: Network Your World.
-- Andrew Gillham
%
NetBSD: Networking Space
-- Andrew Gillham
%
NetBSD: No hype required.
-- David Brownlee
%
NetBSD, No Worries!
-- Andrew Gillham
%
NetBSD: Not all of the First Ones have gone away.
%
NetBSD. Not Guano.
-- Hubert Feyrer
%
NetBSD: Not your mother's OS (unless you are P. Seebach)
-- Tom Harvey
%
NetBSD: Oh my god! They support my hardware! You hackers!
%
NetBSD: Perpetual performance!
-- Lars-Johan Liman
%
NetBSD: Pink fluffy chunks or green bits - the choice is yours.
-- Andy Doran
%
NetBSD: Ports to * boards.
-- Steve Woodford
%
NetBSD: Power Your Net.
-- Andrew Gillham
%
NetBSD: preferred by Rocket Scientists and Moms!
-- Steven J. Dovich
%
NetBSD: priapic OS
-- Perry Metzger
%
NetBSD: Professionalpower!
-- Lars-Johan Liman
%
NetBSD: "Progress on your system is closer than it appears."
%
NetBSD: Raiders of the Lost Arch
%
NetBSD: Re: NetBSD Slogans
-- Mirian Crzig Lennox
%
NetBSD: Resistance is futile! You will be supported.
-- Peter Seebach
%
NetBSD: Resistance is NOT futile!
-- Hubert Feyrer
%
NetBSD: Rock solid!
-- Lars-Johan Liman
%
NetBSD: Servers' choice!
-- Lars-Johan Liman
%
NetBSD: serves you right.
-- Herb Peyerl
%
NetBSD short theme, for stickers and tattoos: NetBSD... Bitchin'!
-- Mason Loring Bliss
%
NetBSD, SIMMs Like Good Code
-- Andrew Gillham
%
NetBSD: Someday, we won't burn your toast
-- Herb Peyerl
%
NetBSD: Stable and strong!
-- Lars-Johan Liman
%
NetBSD: Stop, Drop, and Load
-- Andrew Gillham
%
NetBSD, Tap The Power
-- Andrew Gillham
%
NetBSD: The choice of hundreds worldwide
-- Tom Harvey
%
NetBSD: The Final Frontier
-- Chris Jones
%
NetBSD: The free OS with a money back guarantee!
-- Tim Rightnour
%
NetBSD: the free unix for the rest of us
-- Bob Nestor
%
NetBSD: The Last Bastion of the true UNIX Religion.
-- Miles Nordin
%
NetBSD: The OS WORM - Write Once, Run Many
%
NetBSD: The Power of Code
-- Mason Loring Bliss
%
NetBSD: The power to Connect
-- Feico Dillema
%
NetBSD: The power to serve, also
-- Tom Harvey
%
NetBSD: The power to serve, on the platform of your choice
-- John Darrow
%
NetBSD: the second best thing you can get for free
%
NetBSD: the server is up
-- David Brownlee
%
NetBSD: The Worlds Most Portable Operating System
%
NetBSD/toaster: we wish the toaster to be happy too.
%
NetBSD: To serve the power.
-- Herb Peyerl
%
NetBSD: true inheritors of the UNIX(tm) legacy.
-- Erik E. Fair
%
NetBSD: Twice the Bits-Clean of other Leading OSes
-- Tom Harvey
%
NetBSD: Two guys with a vax
-- Tom Harvey
%
NetBSD: u_long uptime;
-- Herb Peyerl
%
NetBSD: unshackling hardware designers and users from the bondage
of WinTel.
-- Erik E. Fair
%
NetBSD: Use the ENTIRE computer!
-- Andrew Gillham
%
NetBSD: userland included
%
NetBSD: We Come In Peace.
-- Andrew Gillham
%
NetBSD: We come in peace. We offer reliability.
-- David Maxwell
%
NetBSD: We do it right.
-- Perry Metzger
%
NetBSD: We don't negotiate with terrorists.
-- Miles Nordin
%
NetBSD: We put the "Net" in "BSD", and took out the "Free"
-- Tom Harvey
%
NetBSD: We Stay Up.
-- Andrew Gillham
%
NetBSD: We Suck Less
%
NetBSD: We're so committed to it being free, we won't sell it to you
even if you ask!
-- Charles M. Hannum
%
NetBSD: What do you want to serve today?
-- Hubert Feyrer
%
NetBSD: When Linux ports to that platform, they will discover -
WE HAVE ALWAYS BEEN HERE
-- David Maxwell
%
NetBSD: Where do you want to have the power to serve, tomorrow?
-- Tom Harvey
%
NetBSD: Who do you Serve? And who do you Trust?
-- David Maxwell
%
NetBSD will put hair on a UNIX admin's chest
-- Jason R. Fink
%
NetBSD: Write Once, Run Everywhere. Java optional.
-- Todd Whitesel
%
NetBSD: You can't handle it.
-- Paul Newhouse
%
NetBSD: You choose the hardware, we'll bring the OS.
-- David Brownlee
%
Of course it runs NetBSD.
%
Portable. Supportable. NetBSD.
-- Jim Wise
%
Software is like sex - it should be free
-- Hubert Feyrer
%
We're BSD. If you want System V, you know where to get it.
-- Greywolf
%
Where would you have rather been today, tomorrow? NetBSD.
-- Allen Briggs
%
With many thanks to the core team and UCB CSRG.
-- Greywolf
%
Young or old; cutting edge or yesterday's NeWS, NetBSD is the UNIX for you.
It can be a hulking monster in your basement, or fit in the palm
of your hand.
-- Richard Rauch
%
#netbsd - where monks recite their internal dialogue while debugging.
-- Bernhard Riedel
%
I held off from Uni until NetBSD came out.
I decided, ``if there's no NetBSD then I'll just flip burgers''
-- Roland Dowdeswell
%
NetBSD - love all, serve all.
-- Silke Mueller
%

View File

@@ -0,0 +1,171 @@
.\" $NetBSD: fortune.6,v 1.9 2002/09/26 18:32:01 wiz Exp $
.\"
.\" Copyright (c) 1985, 1991, 1993
.\" The Regents of the University of California. All rights reserved.
.\"
.\" This code is derived from software contributed to Berkeley by
.\" Ken Arnold.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\" must display the following acknowledgement:
.\" This product includes software developed by the University of
.\" California, Berkeley and its contributors.
.\" 4. Neither the name of the University nor the names of its contributors
.\" may be used to endorse or promote products derived from this software
.\" without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" @(#)fortune.6 8.3 (Berkeley) 4/19/94
.\"
.Dd April 19, 1994
.Dt FORTUNE 6
.Os
.Sh NAME
.Nm fortune
.Nd print a random, hopefully interesting, adage
.Sh SYNOPSIS
.Nm
.Op Fl aefilosw
.Op Fl m Ar pattern
.Oo
.Op Ar N%
.Ar file/dir/all
.Oc
.Sh DESCRIPTION
When
.Nm
is run with no arguments it prints out a random epigram.
Epigrams are divided into several categories, where each category
is subdivided into those which are potentially offensive and those
which are not.
The options are as follows:
.Bl -tag -width flag
.It Fl a
Choose from all lists of maxims, both offensive and not.
(See the
.Fl o
option for more information on offensive fortunes.)
.It Fl e
Consider all fortune files to be of equal size (see discussion below
on multiple files).
.It Fl f
Print out the list of files which would be searched, but don't
print a fortune.
.It Fl l
Long dictums only.
.It Fl m
Print out all fortunes which match the regular expression
.Ar pattern .
See
.Xr regex 3
for a description of patterns.
.It Fl o
Choose only from potentially offensive aphorisms.
.Bf -symbolic
Please, please, please request a potentially offensive fortune if and
only if you believe, deep down in your heart, that you are willing
to be offended.
(And that if you are, you'll just quit using
.Fl o
rather than give us grief about it, okay?)
.Ef
.Bd -filled -offset indent
\&... let us keep in mind the basic governing philosophy
of The Brotherhood, as handsomely summarized in these words:
we believe in healthy, hearty laughter -- at the expense of
the whole human race, if needs be.
Needs be.
.Bd -filled -offset indent-two -compact
--H. Allen Smith, "Rude Jokes"
.Ed
.Ed
.It Fl s
Short apothegms only.
.It Fl i
Ignore case for
.Fl m
patterns.
.It Fl w
Wait before termination for an amount of time calculated from the
number of characters in the message.
This is useful if it is executed as part of the logout procedure
to guarantee that the message can be read before the screen is cleared.
.El
.Pp
The user may specify alternative sayings.
You can specify a specific file, a directory which contains one or
more files, or the special word
.Em all
which says to use all the standard databases.
Any of these may be preceded by a percentage, which is a number
.Ar N
between 0 and 100 inclusive, followed by a
.Ar % .
If it is, there will be a
.Ar N
percent probability that an adage will be picked from that file
or directory.
If the percentages do not sum to 100, and there are specifications
without percentages, the remaining percent will apply to those files
and/or directories, in which case the probability of selecting from
one of them will be based on their relative sizes.
.Pp
As an example, given two databases
.Em funny
and
.Em not-funny ,
with
.Em funny
twice as big, saying
.Bd -literal -offset indent
fortune funny not-funny
.Ed
.Pp
will get you fortunes out of
.Em funny
two-thirds of the time.
The command
.Bd -literal -offset indent
fortune 90% funny 10% not-funny
.Ed
.Pp
will pick out 90% of its fortunes from
.Em funny
(the ``10% not-funny'' is unnecessary, since 10% is all that's left).
The
.Fl e
option says to consider all files equal; thus
.Bd -literal -offset indent
fortune -e
.Ed
.Pp
is equivalent to
.Bd -literal -offset indent
fortune 50% funny 50% not
.Em -funny
.Ed
.Sh FILES
.Bl -tag -width Pa -compact
.It Pa @sharedir@/fortunes
.El
.Sh SEE ALSO
.Xr regex 3

1424
fortune/fortune/fortune.c Normal file

File diff suppressed because it is too large Load Diff

147
fortune/strfile/strfile.8 Normal file
View File

@@ -0,0 +1,147 @@
.\" $NetBSD: strfile.8,v 1.10 2002/09/26 18:32:01 wiz Exp $
.\"
.\" Copyright (c) 1989, 1991, 1993
.\" The Regents of the University of California. All rights reserved.
.\"
.\" This code is derived from software contributed to Berkeley by
.\" Ken Arnold.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\" must display the following acknowledgement:
.\" This product includes software developed by the University of
.\" California, Berkeley and its contributors.
.\" 4. Neither the name of the University nor the names of its contributors
.\" may be used to endorse or promote products derived from this software
.\" without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" @(#)strfile.8 8.1 (Berkeley) 6/9/93
.\"
.Dd June 9, 1993
.Dt STRFILE 8
.Os
.Sh NAME
.Nm strfile ,
.Nm unstr
.Nd "create a random access file for storing strings"
.Sh SYNOPSIS
.Nm strfile
.Op Fl iorsx
.Op Fl c Ar char
.Ar source_file
.Op Ar output_file
.Nm unstr
.Ar source_file
.Sh DESCRIPTION
.Nm
reads a file containing groups of lines separated by a line containing
a single percent
.Ql \&%
sign and creates a data file which contains
a header structure and a table of file offsets for each group of lines.
This allows random access of the strings.
.Pp
The output file, if not specified on the command line, is named
.Ar source_file Ns Sy .out .
.Pp
The options are as follows:
.Bl -tag -width "-c char"
.It Fl c Ar char
Change the delimiting character from the percent sign to
.Ar char .
.It Fl i
Ignore case when ordering the strings.
.It Fl o
Order the strings in alphabetical order.
The offset table will be sorted in the alphabetical order of the
groups of lines referenced.
Any initial non-alphanumeric characters are ignored.
This option causes the
.Dv STR_ORDERED
bit in the header
.Ar str_flags
field to be set.
.It Fl r
Randomize access to the strings.
Entries in the offset table will be randomly ordered.
This option causes the
.Dv STR_RANDOM
bit in the header
.Ar str_flags
field to be set.
.It Fl s
Run silently; don't give a summary message when finished.
.It Fl x
Note that each alphabetic character in the groups of lines is rotated
13 positions in a simple caesar cipher.
This option causes the
.Dv STR_ROTATED
bit in the header
.Ar str_flags
field to be set.
.El
.Pp
The format of the header is:
.Bd -literal
#define VERSION 1
unsigned long str_version; /* version number */
unsigned long str_numstr; /* # of strings in the file */
unsigned long str_longlen; /* length of longest string */
unsigned long str_shortlen; /* length of shortest string */
#define STR_RANDOM 0x1 /* randomized pointers */
#define STR_ORDERED 0x2 /* ordered pointers */
#define STR_ROTATED 0x4 /* rot-13'd text */
unsigned long str_flags; /* bit field for flags */
char str_delim; /* delimiting character */
.Ed
.Pp
All fields are written in big-endian byte order.
.Pp
The purpose of
.Nm unstr
is to undo the work of
.Nm strfile .
It prints out the strings contained in the file
.Ar source_file
in the order that they are listed in the header file
.Ar source_file Ns Sy .dat
to standard output.
It is possible to create sorted versions of input files by using
.Fl o
when
.Nm strfile
is run and then using
.Nm unstr
to dump them out in the table order.
.Sh SEE ALSO
.Xr byteorder 3 ,
.Xr fortune 6
.Sh FILES
.Bl -tag -width strfile.out -compact
.It Pa strfile.out
default output file.
.El
.Sh HISTORY
The
.Nm strfile
utility first appeared in
.Bx 4.4 .

View File

@@ -0,0 +1,9 @@
# $NetBSD: Makefile,v 1.7 2002/09/18 06:16:40 lukem Exp $
# @(#)Makefile 8.1 (Berkeley) 5/31/93
NOMAN= # defined
PROG= unstr
CPPFLAGS+= -I${.CURDIR}/../strfile
.include <bsd.prog.mk>

638
hunt/hunt/playit.c Normal file
View File

@@ -0,0 +1,638 @@
/* $NetBSD: playit.c,v 1.6 2003/02/26 07:14:44 jdc Exp $ */
/*
* Hunt
* Copyright (c) 1985 Conrad C. Huang, Gregory S. Couch, Kenneth C.R.C. Arnold
* San Francisco, California
*/
#include <sys/cdefs.h>
#ifndef lint
__RCSID("$NetBSD: playit.c,v 1.6 2003/02/26 07:14:44 jdc Exp $");
#endif /* not lint */
# include <sys/file.h>
# include <sys/poll.h>
# include <err.h>
# include <errno.h>
# include <curses.h>
# include <ctype.h>
# include <signal.h>
# include <sys/time.h>
# if defined(HPUX) || (defined(BSD_RELEASE) && BSD_RELEASE >= 44)
# include <termios.h>
# include <unistd.h>
# endif
# include "hunt.h"
# ifndef FREAD
# define FREAD 1
# endif
# if !defined(USE_CURSES) || !defined(TERMINFO)
# define beep() (void) putchar(CTRL('G'))
# endif
# if !defined(USE_CURSES)
# undef refresh
# define refresh() (void) fflush(stdout);
# endif
# ifdef USE_CURSES
# define clear_eol() clrtoeol()
# define put_ch addch
# define put_str addstr
# endif
static int nchar_send;
# ifndef USE_CURSES
char screen[SCREEN_HEIGHT][SCREEN_WIDTH2], blanks[SCREEN_WIDTH];
int cur_row, cur_col;
# endif
# ifdef OTTO
int Otto_count;
int Otto_mode;
static int otto_y, otto_x;
static char otto_face;
# endif
# define MAX_SEND 5
# define STDIN 0
/*
* ibuf is the input buffer used for the stream from the driver.
* It is small because we do not check for user input when there
* are characters in the input buffer.
*/
static int icnt = 0;
static unsigned char ibuf[256], *iptr = ibuf;
#define GETCHR() (--icnt < 0 ? getchr() : *iptr++)
#if !defined(BSD_RELEASE) || BSD_RELEASE < 44
extern int _putchar();
#endif
static unsigned char getchr __P((void));
static void send_stuff __P((void));
/*
* playit:
* Play a given game, handling all the curses commands from
* the driver.
*/
void
playit()
{
int ch;
int y, x;
u_int32_t version;
if (read(Socket, (char *) &version, LONGLEN) != LONGLEN) {
bad_con();
/* NOTREACHED */
}
if (ntohl(version) != (unsigned long)HUNT_VERSION) {
bad_ver();
/* NOTREACHED */
}
errno = 0;
# ifdef OTTO
Otto_count = 0;
# endif
nchar_send = MAX_SEND;
while ((ch = GETCHR()) != EOF) {
# ifdef DEBUG
fputc(ch, stderr);
# endif
switch (ch & 0377) {
case MOVE:
y = GETCHR();
x = GETCHR();
# ifdef USE_CURSES
move(y, x);
# else
mvcur(cur_row, cur_col, y, x);
cur_row = y;
cur_col = x;
# endif
break;
case ADDCH:
ch = GETCHR();
# ifdef OTTO
switch (ch) {
case '<':
case '>':
case '^':
case 'v':
otto_face = ch;
# ifdef USE_CURSES
getyx(stdscr, otto_y, otto_x);
# else
otto_y = cur_row;
otto_x = cur_col;
# endif
break;
}
# endif
put_ch(ch);
break;
case CLRTOEOL:
clear_eol();
break;
case CLEAR:
clear_the_screen();
break;
case REFRESH:
refresh();
break;
case REDRAW:
redraw_screen();
refresh();
break;
case ENDWIN:
refresh();
if ((ch = GETCHR()) == LAST_PLAYER)
Last_player = TRUE;
ch = EOF;
goto out;
case BELL:
beep();
break;
case READY:
refresh();
if (nchar_send < 0)
# if defined(HPUX) || (defined(BSD_RELEASE) && BSD_RELEASE >= 44)
tcflush(STDIN, TCIFLUSH);
# else
# ifndef TCFLSH
(void) ioctl(STDIN, TIOCFLUSH, &in);
# else
(void) ioctl(STDIN, TCFLSH, 0);
# endif
# endif
nchar_send = MAX_SEND;
# ifndef OTTO
(void) GETCHR();
# else
Otto_count -= (GETCHR() & 0xff);
if (!Am_monitor) {
# ifdef DEBUG
fputc('0' + Otto_count, stderr);
# endif
if (Otto_count == 0 && Otto_mode)
otto(otto_y, otto_x, otto_face);
}
# endif
break;
default:
# ifdef OTTO
switch (ch) {
case '<':
case '>':
case '^':
case 'v':
otto_face = ch;
# ifdef USE_CURSES
getyx(stdscr, otto_y, otto_x);
# else
otto_y = cur_row;
otto_x = cur_col;
# endif
break;
}
# endif
put_ch(ch);
break;
}
}
out:
(void) close(Socket);
}
/*
* getchr:
* Grab input and pass it along to the driver
* Return any characters from the driver
* When this routine is called by GETCHR, we already know there are
* no characters in the input buffer.
*/
static unsigned char
getchr()
{
struct pollfd set[2];
int nfds;
set[0].fd = Socket;
set[0].events = POLLIN;
set[1].fd = STDIN;
set[1].events = POLLIN;
one_more_time:
do {
errno = 0;
nfds = poll(set, 2, INFTIM);
} while (nfds <= 0 && errno == EINTR);
if (set[1].revents && POLLIN)
send_stuff();
if (! (set[0].revents & POLLIN))
goto one_more_time;
icnt = read(Socket, ibuf, sizeof ibuf);
if (icnt < 0) {
bad_con();
/* NOTREACHED */
}
if (icnt == 0)
goto one_more_time;
iptr = ibuf;
icnt--;
return *iptr++;
}
/*
* send_stuff:
* Send standard input characters to the driver
*/
static void
send_stuff()
{
int count;
char *sp, *nsp;
static char inp[sizeof Buf];
count = read(STDIN, Buf, sizeof Buf);
if (count <= 0)
return;
if (nchar_send <= 0 && !no_beep) {
(void) write(1, "\7", 1); /* CTRL('G') */
return;
}
/*
* look for 'q'uit commands; if we find one,
* confirm it. If it is not confirmed, strip
* it out of the input
*/
Buf[count] = '\0';
nsp = inp;
for (sp = Buf; *sp != '\0'; sp++)
if ((*nsp = map_key[(int)*sp]) == 'q')
intr(0);
else
nsp++;
count = nsp - inp;
if (count) {
# ifdef OTTO
Otto_count += count;
# endif
nchar_send -= count;
if (nchar_send < 0)
count += nchar_send;
(void) write(Socket, inp, count);
}
}
/*
* quit:
* Handle the end of the game when the player dies
*/
int
quit(old_status)
int old_status;
{
int explain, ch;
if (Last_player)
return Q_QUIT;
# ifdef OTTO
if (Otto_mode)
return Q_CLOAK;
# endif
# ifdef USE_CURSES
move(HEIGHT, 0);
# else
mvcur(cur_row, cur_col, HEIGHT, 0);
cur_row = HEIGHT;
cur_col = 0;
# endif
put_str("Re-enter game [ynwo]? ");
clear_eol();
explain = FALSE;
for (;;) {
refresh();
if (isupper(ch = getchar()))
ch = tolower(ch);
if (ch == 'y')
return old_status;
else if (ch == 'o')
break;
else if (ch == 'n') {
# ifndef INTERNET
return Q_QUIT;
# else
# ifdef USE_CURSES
move(HEIGHT, 0);
# else
mvcur(cur_row, cur_col, HEIGHT, 0);
cur_row = HEIGHT;
cur_col = 0;
# endif
put_str("Write a parting message [yn]? ");
clear_eol();
refresh();
for (;;) {
if (isupper(ch = getchar()))
ch = tolower(ch);
if (ch == 'y')
goto get_message;
if (ch == 'n')
return Q_QUIT;
}
# endif
}
# ifdef INTERNET
else if (ch == 'w') {
static char buf[WIDTH + WIDTH % 2];
char *cp, c;
get_message:
c = ch; /* save how we got here */
# ifdef USE_CURSES
move(HEIGHT, 0);
# else
mvcur(cur_row, cur_col, HEIGHT, 0);
cur_row = HEIGHT;
cur_col = 0;
# endif
put_str("Message: ");
clear_eol();
refresh();
cp = buf;
for (;;) {
refresh();
if ((ch = getchar()) == '\n' || ch == '\r')
break;
# if defined(TERMINFO) || BSD_RELEASE >= 44
if (ch == erasechar())
# else
if (ch == _tty.sg_erase)
# endif
{
if (cp > buf) {
# ifdef USE_CURSES
int y, x;
getyx(stdscr, y, x);
move(y, x - 1);
# else
mvcur(cur_row, cur_col, cur_row,
cur_col - 1);
cur_col -= 1;
# endif
cp -= 1;
clear_eol();
}
continue;
}
# if defined(TERMINFO) || BSD_RELEASE >= 44
else if (ch == killchar())
# else
else if (ch == _tty.sg_kill)
# endif
{
# ifdef USE_CURSES
int y, x;
getyx(stdscr, y, x);
move(y, x - (cp - buf));
# else
mvcur(cur_row, cur_col, cur_row,
cur_col - (cp - buf));
cur_col -= cp - buf;
# endif
cp = buf;
clear_eol();
continue;
} else if (!isprint(ch)) {
beep();
continue;
}
put_ch(ch);
*cp++ = ch;
if (cp + 1 >= buf + sizeof buf)
break;
}
*cp = '\0';
Send_message = buf;
return (c == 'w') ? old_status : Q_MESSAGE;
}
# endif
beep();
if (!explain) {
put_str("(Yes, No, Write message, or Options) ");
explain = TRUE;
}
}
# ifdef USE_CURSES
move(HEIGHT, 0);
# else
mvcur(cur_row, cur_col, HEIGHT, 0);
cur_row = HEIGHT;
cur_col = 0;
# endif
# ifdef FLY
put_str("Scan, Cloak, Flying, or Quit? ");
# else
put_str("Scan, Cloak, or Quit? ");
# endif
clear_eol();
refresh();
explain = FALSE;
for (;;) {
if (isupper(ch = getchar()))
ch = tolower(ch);
if (ch == 's')
return Q_SCAN;
else if (ch == 'c')
return Q_CLOAK;
# ifdef FLY
else if (ch == 'f')
return Q_FLY;
# endif
else if (ch == 'q')
return Q_QUIT;
beep();
if (!explain) {
# ifdef FLY
put_str("[SCFQ] ");
# else
put_str("[SCQ] ");
# endif
explain = TRUE;
}
refresh();
}
}
# ifndef USE_CURSES
void
put_ch(ch)
char ch;
{
if (!isprint(ch)) {
fprintf(stderr, "r,c,ch: %d,%d,%d", cur_row, cur_col, ch);
return;
}
screen[cur_row][cur_col] = ch;
putchar(ch);
if (++cur_col >= COLS) {
if (!AM || XN)
putchar('\n');
cur_col = 0;
if (++cur_row >= LINES)
cur_row = LINES;
}
}
void
put_str(s)
const char *s;
{
while (*s)
put_ch(*s++);
}
# endif
void
clear_the_screen()
{
# ifdef USE_CURSES
clear();
move(0, 0);
refresh();
# else
int i;
if (blanks[0] == '\0')
for (i = 0; i < SCREEN_WIDTH; i++)
blanks[i] = ' ';
if (CL != NULL) {
#if !defined(BSD_RELEASE) || BSD_RELEASE < 44
tputs(CL, LINES, _putchar);
#else
tputs(CL, LINES, __cputchar);
#endif
for (i = 0; i < SCREEN_HEIGHT; i++)
memcpy(screen[i], blanks, SCREEN_WIDTH);
} else {
for (i = 0; i < SCREEN_HEIGHT; i++) {
mvcur(cur_row, cur_col, i, 0);
cur_row = i;
cur_col = 0;
clear_eol();
}
mvcur(cur_row, cur_col, 0, 0);
}
cur_row = cur_col = 0;
#endif
}
#ifndef USE_CURSES
void
clear_eol()
{
if (CE != NULL)
#if !defined(BSD_RELEASE) || BSD_RELEASE < 44
tputs(CE, 1, _putchar);
#else
tputs(CE, 1, __cputchar);
#endif
else {
fwrite(blanks, sizeof (char), SCREEN_WIDTH - cur_col, stdout);
if (COLS != SCREEN_WIDTH)
mvcur(cur_row, SCREEN_WIDTH, cur_row, cur_col);
else if (AM)
mvcur(cur_row + 1, 0, cur_row, cur_col);
else
mvcur(cur_row, SCREEN_WIDTH - 1, cur_row, cur_col);
}
memcpy(&screen[cur_row][cur_col], blanks, SCREEN_WIDTH - cur_col);
}
# endif
void
redraw_screen()
{
# ifdef USE_CURSES
clearok(stdscr, TRUE);
touchwin(stdscr);
# else
int i;
# ifndef NOCURSES
static int first = 1;
if (first) {
curscr = newwin(SCREEN_HEIGHT, SCREEN_WIDTH, 0, 0);
if (curscr == NULL)
errx(1, "Can't create curscr");
# if !defined(BSD_RELEASE) || BSD_RELEASE < 44
for (i = 0; i < SCREEN_HEIGHT; i++)
curscr->_y[i] = screen[i];
# endif
first = 0;
}
# if defined(BSD_RELEASE) && BSD_RELEASE >= 44
for (i = 0; i < SCREEN_HEIGHT; i++) {
int j;
for (j = 0; j < SCREEN_WIDTH; j++)
curscr->lines[i]->line[j].ch = screen[i][j];
}
curscr->cury = cur_row;
curscr->curx = cur_col;
# else
curscr->_cury = cur_row;
curscr->_curx = cur_col;
# endif
clearok(curscr, TRUE);
touchwin(curscr);
wrefresh(curscr);
#else
mvcur(cur_row, cur_col, 0, 0);
for (i = 0; i < SCREEN_HEIGHT - 1; i++) {
fwrite(screen[i], sizeof (char), SCREEN_WIDTH, stdout);
if (COLS > SCREEN_WIDTH || (COLS == SCREEN_WIDTH && !AM))
putchar('\n');
}
fwrite(screen[SCREEN_HEIGHT - 1], sizeof (char), SCREEN_WIDTH - 1,
stdout);
mvcur(SCREEN_HEIGHT - 1, SCREEN_WIDTH - 1, cur_row, cur_col);
#endif
#endif
}
/*
* do_message:
* Send a message to the driver and return
*/
void
do_message()
{
u_int32_t version;
if (read(Socket, (char *) &version, LONGLEN) != LONGLEN) {
bad_con();
/* NOTREACHED */
}
if (ntohl(version) != (unsigned long)HUNT_VERSION) {
bad_ver();
/* NOTREACHED */
}
# ifdef INTERNET
if (write(Socket, Send_message, strlen(Send_message)) < 0) {
bad_con();
/* NOTREACHED */
}
# endif
(void) close(Socket);
}

7
hunt/huntd/.cvsignore Normal file
View File

@@ -0,0 +1,7 @@
a.out
*.d
*.i
*.s
*.d.tmp
huntd
huntd.6

141
hunt/huntd/get_names.c Normal file
View File

@@ -0,0 +1,141 @@
/* $NetBSD: get_names.c,v 1.6 2001/02/05 00:42:15 christos Exp $ */
/*
* Copyright (c) 1983 Regents of the University of California.
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
*/
#include <sys/cdefs.h>
#ifndef lint
__RCSID("$NetBSD: get_names.c,v 1.6 2001/02/05 00:42:15 christos Exp $");
#endif /* not lint */
#include "bsd.h"
#if defined(TALK_43) || defined(TALK_42)
# include <sys/param.h>
# include <netdb.h>
# include <stdio.h>
# include <stdlib.h>
# include <string.h>
# include <unistd.h>
# include "hunt.h"
# include "talk_ctl.h"
#ifndef MAXHOSTNAMELEN
#define MAXHOSTNAMELEN 256
#endif
static char hostname[MAXHOSTNAMELEN + 1];
char *my_machine_name;
/*
* Determine the local user and machine
*/
void
get_local_name(my_name)
const char *my_name;
{
struct hostent *hp;
struct servent *sp;
/* Load these useful values into the standard message header */
msg.id_num = 0;
(void) strncpy(msg.l_name, my_name, NAME_SIZE);
msg.l_name[NAME_SIZE - 1] = '\0';
msg.r_tty[0] = '\0';
msg.pid = getpid();
# ifdef TALK_43
msg.vers = TALK_VERSION;
msg.addr.sa_family = htons(AF_INET);
msg.ctl_addr.sa_family = htons(AF_INET);
# else
msg.addr.sin_family = htons(AF_INET);
msg.ctl_addr.sin_family = htons(AF_INET);
# endif
(void)gethostname(hostname, sizeof (hostname));
hostname[sizeof(hostname) - 1] = '\0';
my_machine_name = hostname;
/* look up the address of the local host */
hp = gethostbyname(my_machine_name);
if (hp == (struct hostent *) 0) {
# ifdef LOG
syslog(LOG_ERR,
"This machine doesn't exist. Boy, am I confused!");
# else
perror("This machine doesn't exist. Boy, am I confused!");
# endif
exit(1);
}
memcpy(&my_machine_addr, hp->h_addr, hp->h_length);
/* find the daemon portal */
# ifdef TALK_43
sp = getservbyname("ntalk", "udp");
# else
sp = getservbyname("talk", "udp");
# endif
if (sp == 0) {
# ifdef LOG
syslog(LOG_ERR, "This machine doesn't support talk");
# else
perror("This machine doesn't support talk");
# endif
exit(1);
}
daemon_port = sp->s_port;
}
/*
* Determine the remote user and machine
*/
int
get_remote_name(his_address)
char *his_address;
{
char *his_name;
char *his_machine_name;
char *ptr;
struct hostent *hp;
/* check for, and strip out, the machine name of the target */
for (ptr = his_address; *ptr != '\0' && *ptr != '@' && *ptr != ':'
&& *ptr != '!' && *ptr != '.'; ptr++)
continue;
if (*ptr == '\0') {
/* this is a local to local talk */
his_name = his_address;
his_machine_name = my_machine_name;
} else {
if (*ptr == '@') {
/* user@host */
his_name = his_address;
his_machine_name = ptr + 1;
} else {
/* host.user or host!user or host:user */
his_name = ptr + 1;
his_machine_name = his_address;
}
*ptr = '\0';
}
/* Load these useful values into the standard message header */
(void) strncpy(msg.r_name, his_name, NAME_SIZE);
msg.r_name[NAME_SIZE - 1] = '\0';
/* if he is on the same machine, then simply copy */
if (memcmp((char *) &his_machine_name, (char *) &my_machine_name,
sizeof(his_machine_name)) == 0)
memcpy(&his_machine_addr, &my_machine_addr,
sizeof(his_machine_name));
else {
/* look up the address of the recipient's machine */
hp = gethostbyname(his_machine_name);
if (hp == (struct hostent *) 0)
return 0; /* unknown host */
memcpy(&his_machine_addr, hp->h_addr, hp->h_length);
}
return 1;
}
#endif

50
quiz/datfiles/posneg Normal file
View File

@@ -0,0 +1,50 @@
large|big:small
on:off
standing up:sitting down
inside:outside
high:low
old:new|young
hot:cold
out:in
heavy|dark:light
daytime:night[time| time]
stop|come:go
top:bottom
floor:ceiling
near:far
run:walk
empty|hungry:full
backwards:f[or|ront]wards
big|large:little|small
fat|thick:thin|skinny
bright|light:dark|dull
right:wrong|left
give:take|receive|get
buy:sell
shiny|bright:dull
dawn:dusk
fall down|go to bed:[get|stand|rise] up
asleep:awake
up:down
open[ed|]:close[d|]
smile:frown|cry
happy|glad:sad
hard:soft|easy
boy|woman|lady:girl|man
fast:slow
wet:dry
covered|hid[den|]:uncovered|open
good:bad
always|sometimes|now:never|sometimes
beautiful|pretty:ugly
rough:smooth
hairy:bald|smooth
above:below
yin:yang
sweet:sour
if:unless
from|fro:to
with[in|]:without|against
after:before
together:apart
plus:minus

131
snake/snake/snake.6.in Normal file
View File

@@ -0,0 +1,131 @@
.\" $NetBSD: snake.6,v 1.10 2002/09/26 16:12:43 wiz Exp $
.\"
.\" Copyright (c) 1980, 1993
.\" The Regents of the University of California. All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\" must display the following acknowledgement:
.\" This product includes software developed by the University of
.\" California, Berkeley and its contributors.
.\" 4. Neither the name of the University nor the names of its contributors
.\" may be used to endorse or promote products derived from this software
.\" without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" @(#)snake.6 8.1 (Berkeley) 5/31/93
.\"
.Dd May 31, 1993
.Dt SNAKE 6
.Os
.Sh NAME
.Nm snake ,
.Nm snscore
.Nd display chase game
.Sh SYNOPSIS
.Nm
.Op Fl w Ar width
.Op Fl l Ar length
.Op Fl t
.br
.Nm snscore
.Sh DESCRIPTION
.Nm
is a display-based game which must be played on a CRT terminal.
The object of the game is to make as much money as possible without
getting eaten by the snake.
The
.Fl l
and
.Fl w
options allow you to specify the length and width of the field.
By default the entire screen is used.
The
.Fl t
option makes the game assume you are on a slow terminal.
.Pp
You are represented on the screen by an I.
The snake is 6 squares long and is represented by s's with an S at its head.
The money is $, and an exit is #.
Your score is posted in the upper left hand corner.
.Pp
You can move around using the same conventions as
.Xr vi 1 ,
the
.Ic h ,
.Ic j ,
.Ic k ,
and
.Ic l
keys work, as do the arrow keys.
Other possibilities include:
.Bl -tag -width indent
.It Ic sefc
These keys are like hjkl but form a directed pad around the d key.
.It Ic HJKL
These keys move you all the way in the indicated direction to the
same row or column as the money.
This does
.Em not
let you jump away from the snake, but rather saves you from having
to type a key repeatedly.
The snake still gets all his turns.
.It Ic SEFC
Likewise for the upper case versions on the left.
.It Ic ATPB
These keys move you to the four edges of the screen.
Their position on the keyboard is the mnemonic, e.g.
P is at the far right of the keyboard.
.It Ic x
This lets you quit the game at any time.
.It Ic p
Points in a direction you might want to go.
.It Ic w
Space warp to get out of tight squeezes, at a price.
.El
.Pp
To earn money, move to the same square the money is on.
A new $ will appear when you earn the current one.
As you get richer, the snake gets hungrier.
To leave the game, move to the exit (#).
.Pp
A record is kept of the personal best score of each player.
Scores are only counted if you leave at the exit,
getting eaten by the snake is worth nothing.
.Pp
As in pinball, matching the last digit of your score to the number
which appears after the game is worth a bonus.
.Pp
To see who wastes time playing snake, run
.Nm snscore .
.Sh FILES
.Bl -tag -width @snake_rawscorefile@ -compact
.It Pa @snake_rawscorefile@
database of personal bests
.It Pa @snake_scorefile@
log of games played
.El
.Sh BUGS
When playing on a small screen,
it's hard to tell when you hit the edge of the screen.
.Pp
The scoring function takes into account the size of the screen.
A perfect function to do this equitably has not been devised.

6
snake/snscore/.cvsignore Normal file
View File

@@ -0,0 +1,6 @@
a.out
*.d
*.i
*.s
*.d.tmp
snscore