1 (Note: this file has been re-arranged to be in reverse chronological
2 order, which is The Right Thing for ChangeLogs - DLC)
4 March 22, 2018 (fortune-mod 2.4.1)
6 Add the missing cmake/Shlomif_Common.cmake file.
8 March 22, 2018 (fortune-mod 2.4.0)
10 Fix issue #24 reported by @pouar of an underflow error in strfile.
12 Fix some GCC warnings with the Recode flags.
14 Remove some trailing empty lines in fortunes
16 February 15, 2018 (fortune-mod 2.2.1)
20 Remove some duplicates.
22 Thanks to bug reporters on the bug trackers of Linux distributions.
24 January 31, 2018 (fortune-mod 2.2.0)
26 Add the "disclaimer" cookie file (thanks to mathew).
28 Correct some problems in the documentation.
30 Fix some memory leaks (thanks to valgrind).
32 Reenable the valgrind tests (requires Recode 3.7).
34 January 11, 2018 (fortune-mod-2.0.0)
38 Deprecate the BSD_REGEX - we now use only POSIX ones.
42 March 25, 2017 (fortune-mod-1.99.5)
44 Add a new cmake-based configuration/build/install system.
46 Converted the source files to UTF-8.
48 Added automated tests.
50 Removed trailing whitespace.
52 Reformatted long (> 80 chars) lines.
56 Fixed some compiler warnings.
58 Added a build-time option to remove the “-o” (= “offensive”) flag.
60 Incorporated some downstream patches from Linux distributions.
63 March 05, 2004 (fortune-mod-1.99.1)
65 Most of the changes have occurred at some point in time in the last
68 A high number of spelling, punctuation, formatting and grammar
71 Internationalisation support.
73 New -c option to see which file a fortune came from.
77 Incorporated a couple of minor changes made in the (old) Debian
78 fortune-mod package, including the addition of an extra data file
79 called 'cookie'. Renamed some documentation files, and included some
80 install information for non-Linux users. Added a "-v" option to
81 report the program version.
83 I intend to submit this distribution to SunSITE RSN.
85 -- Dennis L. Clark <dbugger@progsoc.uts.edu.au>
89 This release fixes many of the portability problems with the
90 fortune-mod program released by Amy Lewis in October, 1995. The
91 previous version had many Linux-isms in it, which left it unworkable
92 on any other platform. This version replaces most of these with more
93 standard calls, making it more likely to work under other platforms.
94 The Makefiles have been modified so that GNU's gcc and make are no
95 longer required: any standard make and ANSI-compatible C compiler
96 should work. Sorry, pre-ANSI compilers are not supported (c'mon, this
97 is the 90's, darn it!)
99 This version has been tested to work on SunOS 4.1.x as well as Linux.
100 All changes made to the sources were as platform-independant as
101 possible. Therefore, no "#ifdef LINUX" or "#ifdef SUNOS4" directives
102 appear in the code. An effect of this is that a number of 'implicit
103 declaration' warnings are emitted by gcc under SunOS 4.1.x, but this a
104 problem with SunOS's standard headers, not with the program or the
105 compiler. The benefit of this approach is that it eases the work of
106 expanding the port to include other platforms. Bug reports and fixes
107 for other platforms are most welcome!
109 A few "standard" C function calls were replaced with more standard
110 counterparts at various points. Generally, when there was a choice
111 between a BSD version of a function and a POSIX version, the POSIX
112 version was favoured (even though fortune originated on BSD). An
113 exception to this was the regex functions: either POSIX or BSD
114 versions can be used, with selection made via the top-level Makefile.
116 Fortune and strfile also compiles on Solaris 2.5, but a discrepency
117 between the declaration and implementation of 'struct dirent' on the
118 test platform caused fortune to execute incorrectly there. It is not
119 certain whether this is a bug in the header file, the C library, or
122 While the making of this release was not meant to become a bug
123 search-and-destroy mission, some bugs were inadvertently discovered
124 and fixed. including the known bug of using -a with a file that occurs
125 in both the offensive and inoffensive directories. Fixing this
126 particular bug required a way to be able to separately identify two
127 fortune files with the same name, with one in the inoffensive
128 directory, the other one in the offensive directory. Now, such a name
129 will be taken to be the inoffensive file by default. However, you can
130 now append '-o' to a fortune name, and the '-o' will be removed and
131 the offensive directory will be searched. Thus you can say (assuming
132 you use the distributed datfiles):
134 fortune 80% politics politics-o
136 Which has an 80% change of giving an "inoffensive" political fortune,
137 and a 20% change of giving an "offensive" political one. Note that
138 this makes fortune-mod backwards-compatible with BSD fortune, but only
139 for users, not fortune database maintainers.
141 Of course, this solution only passes the buck: with the above example
142 again, if you have a 'politics-o' file in your inoffensive directory,
143 you are back to square one. OTOH, seeing that '-o' originally was
144 meant for offensive fortunes, using it for inoffensive ones is simply
147 Bug fixed: Fortune's definition of a fortune length (for -s and -l)
148 was inconsistent. Unordered fortunes counted the 2 delimiting
149 characters (as hinted in the man page), but sorted or randomized
150 fortunes did not. Now the delimiting characters are _NEVER_ counted,
151 so you will always get the length limit you expect.
153 Another bug fix: -l and -s can now work together with -m. Previously
154 -l and -s were ignored when -m was in effect. The new behaviour helps
155 me count how many long or short fortunes there are in a file.
157 Ansify has been removed from the package, as well as some filter
158 scripts from NetBSD that no longer appear useful. Randstr has been
159 kept, but has not been improved in any way. It at least has a man
160 page: maybe somebody will find it useful.
162 Some of the documentation (including the man pages) has been improved
163 and updated, and some files have been renamed so that the package
164 looks less Linux-specific.
166 -- Dennis L. Clark <dbugger@progsoc.uts.edu.au>
169 Ansify has been abandoned. I'm going to distribute this working version
170 of fortune, and then see how difficult it would be to add termcap/terminfo
171 enhancements to fortune itself--I don't anticipate serious problems, but
172 I'd rather go ahead and get this on the net.
174 A last-minute change was made to the way that percentages are displayed
175 with -f; it is now in the format nnn.nn%. The reason for this is that
176 with the multiplication of small files, fortune -af displayed a large
177 number of "0%"s--no worse than the old version, but not helpful.
179 The fortunes database was finally cleaned up, and this version is now
180 being distributed (at least, I hope it is). I don't consider the current
181 division of fortunes among files absolutely canonical; some are certainly
182 in the wrong places. But things are *better*.
184 Amy A. Lewis alewis@email.unc.edu
187 Another utility, ansify, now compiles; it has not been tested at all, so
188 it may not work even slightly.
190 Ansify is a rather stupid program, all things considered, but the work on
191 it does raise an interesting possibility for an enhanced fortune. At
192 present, the fortune databases contain x^Hy sequences for underline and
193 special characters (and this can be extended to include bold, = x^Hx).
194 Ansify is stupid because it doesn't use the proper tools, ie termcap or
195 terminfo (hmmm ... since it works on files, that may not be so stupid);
196 it appears that if that can be done, then a termcap/terminfo enhanced
197 fortune could be produced, which would recognize the existence of ^H in
198 a string and attempt to display using appropriate control sequences.
199 This sort of modification would be of greater interest to casual users,
200 I think, than even the bug fixes, and since it would not force changes
201 in the storage of fortunes, it is eminently portable. Consider this a
204 Added (early October 95):
205 A new executable, rot, which is a rot13 filter (a caesar cipher). Most
206 probably have caesar, but on the other hand, if you compile this mess
207 as root, caesar probably isn't in the path.
209 A new parameter to fortune, -n, which permits you to specify the length
210 at which to break between long (-l) and short (-s) fortunes.
212 fortune -f now shows probabilities.
214 A bug: fortune -a nn% filename filename ... now fails without an error
215 message, if the filename named following the percentage exists in both
216 the inoffensive and the offensive directories (that is, if you have two
217 files containing definitions, one called fortunes/definitions and one
218 called fortunes/off/definitions, and call fortune as: fortune -a 10%
219 definitions religion politics ..., then fortune simply fails). This
220 appears to be an artifact of the changes that were made in storage/
221 naming of offensive fortunes. It only happens with the combination of
222 a percentage with -a and inoffensive/offensive files that share a name.
223 Temporary workaround: rename one or the other of the files (*sigh* I
224 don't like that as a solution).
226 The man pages have been updated. The old man pages are also available,
227 but are not installed unless you do it yourself (the new ones are). The
228 new man pages have the extension .man; the old ones have numeric
231 A place has been created for fortune files containing HTML tags (the
232 reason I started playing with this mess was because I wanted to be
233 able to format fortunes nicely for the web without having to run an
234 enormously complex script to figure out from formatting how best to
235 display things, a particular problem since the formatting isn't
236 consistent). Tagged fortunes don't exist yet, and I'm seriously
237 considering creating a slightly different fortune binary that would
238 output the necessary headers and trailers (reducing the CGI script
239 to complete triviality) (-f isn't really needed for a webfortune).
241 Todo: I'm thinking of adding a -x to unstr, to rot13 the output. This
242 would have the effect of putting all the necessary tools in one package.
243 It further breaks compatibility with BSD tools (which has *mostly* been
244 maintained, merely enhanced slightly, although the change in how
245 offensive files are distinguished from inoffensive might be regarded as
246 breaking compatibility) by adding yet another parameter to unstr, which
247 didn't have any, before. So I haven't decided, yet.
249 Todo: KOI8 encoded fortunes? They couldn't be rotated without a great
250 deal of trouble, of course.
254 The way that fortune -m prints its output has been slightly changed. It
255 used to print the delimiter first, then, if this were the first fortune
256 from a particular file, it printed the name of the file in parentheses.
257 It now prints the first fortune without an initial delimiter; if the
258 fortune is the first from a particular file, it then prints
259 (filename), newline, delimiter, newline *to stderr*. Redirect stderr to
260 stdout to get something *similar to* (but not the same as) the old
261 behavior. The new behavior, if stderr is redirected to stdout, and
262 both are then redirected to a file, produces fictitious entries, one
263 per file in which a match was found. However, whether stderr is
264 redirected or not, the new format produces files that strfile can
265 parse without choking (the old format, since it placed the filename
266 on the same line as the delimiter character, effectively forced editing
267 of the file in order to make it usable by strfile, unless the option of
268 concatenating two fortunes with an ugly "% (filename)" line separating
269 them was considered acceptable output). Under the new display format,
270 if stderr is redirected into the file, you end up with filenames marking
271 the separation between files (as before), but they are now valid text
272 strings (which should probably, therefore, be deleted).
274 In other words, if you don't care what files the original text came from,
275 and want a new file containing (let us say), quotes from Mark Twain,
277 fortune -am '-- Mark Twain' >twain
278 The files accessed would march down the screen; the fortunes would be
279 stored in parsable format into the file twain. If, however, you planned
280 to edit (perhaps to remove the quotes from the original file, you might
281 then wish to redirect stderr to stdout. Using bash:
282 fortune -am '-- Mark Twain' &>twain
284 fortune -am '-- Mark Twain' >twain 2>&1
286 [The above is now in the man page, more or less]
289 Too many changes to mention, really. Look at the source code for
290 comments on individual files. LINUX.DIF has been removed.
292 It is worth noting that strfile was completely broken as distributed,
293 and fortune had code to make it report a different file list than the
294 one it used to retrieve fortunes. There's some rather strong language
295 on the subject in strfile.c; if it offends you, tough.
297 Bugs were fixed, and some enhancements were added. Unstr, in
298 particular, has had its command line considerably enhanced. Strfile
299 now *really does* sort, instead of merely setting the 'sorted' flag.
300 Ditto for randomizing.
302 Noteworthy: the way to distinguish between offensive and non-offensive
303 files has changed for fortune. A second directory (which may be a
304 subdirectory of the main fortune directory; the program doesn't
305 add files recursively down a directory tree) has been added to
306 pathnames.h. Offensive files should be placed there. There is no
307 longer any need to add the -o suffix to file names, and the problems
308 with finding files (especially offensive ones) seem to have
309 disappeared in the process.
311 Currently, I'm working on breaking the fortune files themselves into
312 smaller, more manageable pieces, checking spelling, punctuation, and
313 grammar, and trying to reduce redundancy. The eventual goal, after
314 the files are cleaned up, is another set of files carrying HTML tags,
315 which would then massively simplify a CGI script that calls fortune.
319 A 'randstr' (I want to call it 'lottery,' but I won't) utility, which
320 amounts to a poor woman's stripped-down fortune, to illustrate some
321 other possible uses of strfile-type random-access strings files.
323 Amy A. Lewis alewis@email.unc.edu