./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
./usr/man/man6/snake.6 minix-man
./usr/man/man6/tetris.6 minix-man
./usr/man/man6/wargames.6 minix-man
+./usr/man/man6/wtf.6 minix-man
./usr/man/man7 minix-man
./usr/man/man7/ascii.7 minix-man
./usr/man/man7/atf.7 minix-man atf
monop morse number \
pig ppt primes \
rain random rogue snake tetris \
- wargames
+ wargames wtf
.if !defined(__MINIX)
.if ${MKCXX} != "no"
--- /dev/null
+# $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>
--- /dev/null
+#!/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
--- /dev/null
+.\" $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.