#!/usr/local/bin/nawk -f function quit(n) { system("rm -f " tmpfile) exit n } BEGIN { DEVPSDIR = "/usr/home/mats/share/groff_font/devps" FS = "\t+" mktmp = "mktemp ~/.gfchoose.XXXXXX" if ((mktmp | getline tmpfile) == 0) exit 1 close(mktmp) system("sort -b +1 " DEVPSDIR "/fontnames.base " DEVPSDIR "/fontnames >" \ tmpfile) n = 0 while ((getline < tmpfile) > 0) { grname[n] = $1 psname[n++] = $2 } if (! n) { print "No fonts found" >">/dev/tty"; quit(1) } close(tmpfile) for (i = 0; i < n; i++) printf "%3d: %s [%s]\n", i + 1, psname[i], grname[i] > tmpfile system("less " tmpfile " >/dev/tty") do { err = 0 printf "Font (1-" n "): " >"/dev/tty"; if ((getline < "/dev/tty") <= 0) quit(1) r = ($0 ~ /^[0-9]+$/) ? $0 : -1 if ((r < 1) || (r > n)) { print "Error: invalid response" >"/dev/tty"; err++ } } while (err) printf "%s:%s", psname[r-1], grname[r-1]; quit(0) } .