#!/usr/bin/sh -e
# Fortune implementation in awk
-awk '$1 == "%" {
- sub(/%/, "")
- ++f
+usage()
+{
+ echo "fortune -- a simple awk/POSIX sh implementation of fortune"
+ echo ""
+ echo "\t-h, --help show this help message"
+ echo "\t-l, --list=\$FILE list installed cookie files"
+ echo "\t-f=\$FILE, --file=\$FILE specify path to cookie file"
+ echo "\t-c=\$FILE, --cookie=\$FILE specify cookie file"
+}
+
+FILE="$(find /usr/share/fortune/ -type f -not -name '*.dat')"
+while [ "$1" != "" ]; do
+ PARAM=`echo $1 | awk -F= '{print $1}'`
+ VALUE=`echo $1 | awk -F= '{print $2}'`
+ case $PARAM in
+ -h | --help)
+ usage
+ exit
+ ;;
+ -f | --file)
+ FILE=$VALUE
+ ;;
+ -c | --cookie)
+ FILE=/usr/share/fortune/$VALUE
+ ;;
+ -l | --list)
+ ls -1 /usr/share/fortune
+ exit
+ ;;
+ *)
+ echo "ERROR: unknown parameter \"$PARAM\""
+ usage
+ exit 1
+ ;;
+ esac
+ shift
+done
+
+awk '
+BEGIN {
+ f++
+}
+
+$1 == "%" {
+ f++
}
{
+ sub("%", "")
fortunes[f] = fortunes[f] (length(fortunes[f])?"\n":"") $0
}
END {
"date +%N" | getline time
srand(time)
- print fortunes[int(rand() * f) + 1]
-}' ${1:-"/usr/share/fortune/cookie"}
+ print fortunes[int(rand() * f-2) + 2]
+}' $FILE