From: Christopher Simons Date: Mon, 22 Oct 2018 15:46:36 +0000 (-0400) Subject: import games/wtf from NetBSD X-Git-Url: http://zhaoyanbai.com/repos/%22http:/www.isc.org/icons/zpipe.c?a=commitdiff_plain;h=refs%2Fchanges%2F25%2F3525%2F2;p=minix.git import games/wtf from NetBSD closes #260 Change-Id: Ia3bbe28d77dff7f21fe7de3d0c03a65f6681049c --- diff --git a/distrib/sets/lists/minix-games/mi b/distrib/sets/lists/minix-games/mi index 09ffb66af..9f8ac34a5 100644 --- a/distrib/sets/lists/minix-games/mi +++ b/distrib/sets/lists/minix-games/mi @@ -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 diff --git a/distrib/sets/lists/minix-man/mi b/distrib/sets/lists/minix-man/mi index 170fe7300..632a66d00 100644 --- a/distrib/sets/lists/minix-man/mi +++ b/distrib/sets/lists/minix-man/mi @@ -3430,6 +3430,7 @@ ./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 diff --git a/games/Makefile b/games/Makefile index 1f9b59a70..8e0e555b6 100644 --- a/games/Makefile +++ b/games/Makefile @@ -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" diff --git a/games/wtf/Makefile b/games/wtf/Makefile new file mode 100644 index 000000000..fd0c94bdc --- /dev/null +++ b/games/wtf/Makefile @@ -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 diff --git a/games/wtf/wtf b/games/wtf/wtf new file mode 100644 index 000000000..53d5107c2 --- /dev/null +++ b/games/wtf/wtf @@ -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 diff --git a/games/wtf/wtf.6 b/games/wtf/wtf.6 new file mode 100644 index 000000000..c2764e7f2 --- /dev/null +++ b/games/wtf/wtf.6 @@ -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.