Bug 237768 - 12.0-RELEASE: Calling fortune(6) with no parameters yields "No fortunes found" error.
Summary: 12.0-RELEASE: Calling fortune(6) with no parameters yields "No fortunes found...
Status: New
Alias: None
Product: Base System
Classification: Unclassified
Component: misc (show other bugs)
Version: 12.0-RELEASE
Hardware: amd64 Any
: --- Affects Only Me
Assignee: freebsd-bugs (Nobody)
Depends on:
Reported: 2019-05-06 23:18 UTC by Trix Farrar
Modified: 2021-04-07 16:38 UTC (History)
3 users (show)

See Also:

Patch to allow the fortune command to look for all fortunes in the fortune directory by default (1.85 KB, patch)
2020-03-19 18:06 UTC, Ruby Lazuli Lord
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Trix Farrar 2019-05-06 23:18:34 UTC
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.
Comment 1 Andy Farkas 2019-11-11 14:54:07 UTC
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.
Comment 2 Ruby Lazuli Lord 2020-03-19 18:06:38 UTC
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).