import games/wtf from NetBSD

closes #260

Change-Id: Ia3bbe28d77dff7f21fe7de3d0c03a65f6681049c
This commit is contained in:
Christopher Simons 2018-10-22 11:46:36 -04:00 committed by Lionel Sambuc
parent 8e2f9ecaf4
commit 6ea41bd866
5 changed files with 210 additions and 1 deletions

View File

@ -37,6 +37,7 @@
./usr/games/tetris minix-games
./usr/games/unstr minix-games
./usr/games/wargames minix-games
./usr/games/wtf minix-games
./usr/share minix-games
./usr/share/games minix-games
./usr/share/games/fish.instr minix-games

View File

@ -15,7 +15,7 @@ SUBDIR= adventure arithmetic \
monop morse number \
pig ppt primes \
rain random rogue snake tetris \
wargames
wargames wtf
.if !defined(__MINIX)
.if ${MKCXX} != "no"

7
games/wtf/Makefile Normal file
View File

@ -0,0 +1,7 @@
# $NetBSD: Makefile,v 1.1 1999/07/22 01:03:20 mrg Exp $
SCRIPTS= wtf
SCRIPTSDIR= /usr/games
MAN= wtf.6
.include <bsd.prog.mk>

111
games/wtf/wtf Normal file
View File

@ -0,0 +1,111 @@
#!/bin/sh
#
# $NetBSD: wtf,v 1.21 2015/04/21 23:56:30 christos Exp $
#
# Public domain
#
PROGNAME="$(basename "$0")"
offensive=false
usage() {
echo "usage: $PROGNAME [-o] [-f dbfile] [is] term ..."
exit 1
}
while getopts f:o f
do
case "$f" in
o) offensive=true
;;
f)
acronyms="$OPTARG $acronyms"
;;
*)
usage
;;
esac
done
shift "$(expr "$OPTIND" - 1)"
if [ "$1" = "is" ]; then
shift
fi
if [ -z "$1" ]; then
usage
fi
if [ -z "$acronyms" ]; then
if [ -z "$ACRONYMDB" ]; then
for f in /usr/share/misc/acronyms*; do
case $f in
*-o)
if $offensive; then
acronyms="$acronyms $f"
fi
;;
*)
acronyms="$acronyms $f"
;;
esac
done
else
acronyms="$ACRONYMDB"
fi
fi
if [ -z "$acronyms" ]; then
echo "$PROGNAME: acronym database not found!" >&2
exit 1
fi
for f in $acronyms; do
if [ ! -f $f ]; then
echo "$PROGNAME: cannot open acronym database file \`$f'" >&2
exit 1
fi
done
rv=0
for i; do
# Search acronym list first
target="$(echo "$i" | tr '[a-z]' '[A-Z]')"
ans="$(fgrep -h "$target" $acronyms 2>/dev/null \
| sed -ne "\|^$target[[:space:]]|s|^$target[[:space:]]*||p")"
if [ -n "$ans" ] ; then
echo "$target: $ans"
continue
fi
# Try whatis(1) next
ans="$(whatis "$i" 2>/dev/null)"
if [ $? -eq 0 ]; then
echo "$ans" | sort -u
continue
fi
# Try pkg_info(1) next
ans="$(pkg_info -qc "$i" 2> /dev/null)"
if [ $? -eq 0 ]; then
echo "$i: $ans"
continue
fi
# If called from pkgsrc package directory,
# try querying pkgsrc's help facility next
if [ -f ../../mk/bsd.pkg.mk ]; then
ans="$(make help topic="$i")"
if [ "$ans" != "No help found for $i." ]; then
echo "$i: $ans"
continue
fi
fi
# Give up!
echo "$PROGNAME: I don't know what \`$i' means!" 1>&2
rv=1
done
exit $rv

90
games/wtf/wtf.6 Normal file
View File

@ -0,0 +1,90 @@
.\" $NetBSD: wtf.6,v 1.19 2015/04/22 15:04:57 christos Exp $
.\"
.\" Public Domain
.\"
.Dd April 22, 2015
.Dt WTF 6
.Os
.Sh NAME
.Nm wtf
.Nd look up terms
.Sh SYNOPSIS
.Nm
.Op Fl f Ar dbfile
.Op Fl o
.Op Ar is
.Ar term ...
.Sh DESCRIPTION
The
.Nm
utility looks up the meaning of one or more
.Ar term
operands specified on the command line.
.Pp
.Ar term
will first be searched for as an acronym in the acronym databases,
which are expected to be in the format
.Dq acronym[tab]meaning .
If no match has been found,
.Nm
will check to see if the term is known by
.Xr whatis 1 ,
.Xr pkg_info 1 ,
or, when called from within a pkgsrc package directory,
pkgsrc's internal help facility,
.Dq make help topic=XXX .
.Pp
The optional
.Ar is
operand will be ignored, allowing the
fairly natural
.Dq wtf is WTF
usage.
.Pp
The following option is available:
.Bl -tag -width flag
.It Fl f Ar dbfile
Overrides the default list of acronym databases, bypassing the value of the
.Ev ACRONYMDB
variable.
Unlike this variable the
.Fl f
option only accepts one file name as an argument,
but it may be given multiple times to specify more than one file to use.
.It Fl o
Include acronyms that could be considered offensive to some.
Please consult
.Xr fortune 6
for more information about the
.Fl o
flag.
.El
.Sh ENVIRONMENT
.Bl -tag -width ACRONYMDB
.It Ev ACRONYMDB
The default list of acronym databases may be overridden by setting the
environment variable
.Ev ACRONYMDB
to the name of one or more space-separated file names of
acronym databases.
.El
.Sh FILES
.Bl -tag -width /usr/share/misc/acronyms.XXXX -compact
.It Pa /usr/share/misc/acronyms
default acronym database.
.It Pa /usr/share/misc/acronyms-o
default offensive acronym database.
.It Pa /usr/share/misc/acronyms.comp
default computer-related acronym database.
.El
.Sh SEE ALSO
.Xr make 1 ,
.Xr pkg_info 1 ,
.Xr whatis 1 ,
.Xr fortune 6
.Sh HISTORY
.Nm
first appeared in
.Nx 1.5 .
Initially it only translated acronyms;
functionality to look up the meaning of terms in other sources was added later.