Calling fortune(6) with no filename results in an error. I believe this may be a regression from behavior in 11.2-RELEASE. 12.0-RELEASE behavior: $ uname -a ; fortune ; ls -lh /usr/share/games/fortune/ FreeBSD doyle 12.0-RELEASE-p2 FreeBSD 12.0-RELEASE-p2 GENERIC amd64 No fortunes found in /usr/share/games/fortune:/usr/local/share/games/fortune. total 24 -r--r--r-- 1 root wheel 19K Nov 25 00:44 freebsd-tips -r--r--r-- 1 root wheel 944B Nov 25 00:44 freebsd-tips.dat $ 11.2-RELEASE behavior: $ uname -a ; fortune ; ls -lh /usr/share/games/fortune/ FreeBSD lorne 11.2-RELEASE-p4 FreeBSD 11.2-RELEASE-p4 #0: Thu Sep 27 08:16:24 UTC 2018 root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC amd64 If pro is the opposite of con, what is the opposite of progress? total 2620 -r--r--r-- 1 root wheel 2.1M Jun 21 2018 fortunes -r--r--r-- 1 root wheel 97K Jun 21 2018 fortunes.dat -r--r--r-- 1 root wheel 16K Jun 21 2018 freebsd-tips -r--r--r-- 1 root wheel 840B Jun 21 2018 freebsd-tips.dat -r--r--r-- 1 root wheel 25K Jun 21 2018 gerrold.limerick -r--r--r-- 1 root wheel 680B Jun 21 2018 gerrold.limerick.dat -r--r--r-- 1 root wheel 127K Jun 21 2018 limerick -r--r--r-- 1 root wheel 6.1K Jun 21 2018 limerick.dat -r--r--r-- 1 root wheel 59K Jun 21 2018 murphy -r--r--r-- 1 root wheel 767B Jun 21 2018 murphy-o -r--r--r-- 1 root wheel 112B Jun 21 2018 murphy-o.dat -r--r--r-- 1 root wheel 6.1K Jun 21 2018 murphy.dat -r--r--r-- 1 root wheel 27K Jun 21 2018 startrek -r--r--r-- 1 root wheel 1.6K Jun 21 2018 startrek.dat -r--r--r-- 1 root wheel 38K Jun 21 2018 zippy -r--r--r-- 1 root wheel 4.3K Jun 21 2018 zippy.dat $ It appears that, when called without a filename, the command only searches for 'fortunes', which does not exist in Base -- only freebsd-tips is present. Given a filename -- either basename(1) for full path -- epigrams are selected as expected. The search path appears to function as expected. Easy workaround appears to be either change the default filename ('fortunes') or rename /usr/share/games/fortune/freebsd-tips to /usr/share/games/fortune/fortunes (with their compiled versions named appropriately, for course). Calling "fortune all" appears to work as expected, pulling from all available files in the search path.
Copying freebsd-tips to fortunes does not work: # cd /usr/share/games/fortune # cp freebsd-tips fortunes # fortune fortune:/usr/share/games/fortune/fortunes not a fortune file or directory No fortunes found in /usr/share/games/fortune:/usr/local/share/games/fortune.
Created attachment 212535 [details] Patch to allow the fortune command to look for all fortunes in the fortune directory by default It's worth noting that copying the text-based fortune file isn't enough for fortune to recognize it; a corresponding .dat file must be made with "strfile myfortunes". I've attached a patch based off of FreeBSD-CURRENT that should allow fortune to look in all fortune files in the directory by default (should I submit this patch as a new bug report? Contributing to FreeBSD doesn't seem to mention whether or not a new report should be filed for patches if a bug report already exists).
root@fuji:~ # freebsd-version -kru 13.1-RELEASE-p3 13.1-RELEASE-p3 13.1-RELEASE-p5 root@fuji:~ # fortune No fortunes found in /usr/share/games/fortune:/usr/local/share/games/fortune. root@fuji:~ # ls /usr/share/games/fortune freebsd-tips freebsd-tips.dat root@fuji:~ # ls /usr/local/share/games/fortune ls: /usr/local/share/games/fortune: No such file or directory root@fuji:~ # Triage: assume that this is not hardware-specific.
Murphy's Law and others were removed from fortune here. https://cgit.freebsd.org/src/commit/usr.bin/fortune?id=0538d7bbe620fafcdf296305bcd8aad2cb7d24f1 When there were no arguments, one file called fortunes is automatically added here. https://cgit.freebsd.org/src/tree/usr.bin/fortune/fortune/fortune.c?id=195f1b124da4bf73d951cd251dffd9485672fe0a#n387 It seems that xxx and xxx.dat in the fortune file must be a pair, so the revert method challenged above is missing something. The following procedure will restore it. cd /usr/share/games/fortune ln -s freebsd-tips fortunes ln -s freebsd-tips.dat fortunes.dat fortune I think we should make this symlink the default to create :)
My comment #4 is rescinded. 2 directories will be used by FORTDIR. It is written in /usr/src/usr.bin/fortune/fortune/pathnames.h And fortunes.dat can be installed by misc/fortune-mod-freebsd-classic of ports. Creating extra symlinks will fluctuate the odds of a fortune.