1 (Note: this file has been re-arranged to be in reverse chronological
2 order, which is The Right Thing for ChangeLogs - DLC)
4 November 8, 2020 (fortune-mod 3.4.0)
6 Made the compile-time dependency on lib-recode optional ;
7 handle the missing librinutils better.
8 ( https://github.com/shlomif/fortune-mod/issues/44 )
10 Add some quotes (Thanks in part to @RashadSaleh :
11 https://github.com/shlomif/fortune-mod/pull/43 )
13 September 24, 2020 (fortune-mod 3.2.0)
15 Include rinutils in the source tarball / git checkout.
16 ( https://github.com/shlomif/fortune-mod/issues/44 )
18 September 16, 2020 (fortune-mod 3.0.0)
20 Convert the documentation from troff to DocBook 5/XML using
21 doclifter ( http://www.catb.org/~esr/doclifter/ ). The resultant troff
22 man pages are included in the source release tarball.
24 Fix formatting of several cookies.
26 Minor build fixes (avoid rebuilding the symlinks).
28 Fix the build and tests on AppVeyor-CI / Windows
30 Fix some compiler warnings and modernise the code a little.
32 Add some new fortune cookies.
34 New major version digit just in time for Rosh Hashana
35 and Talk like a Pirate day. Happy new yea..arrrrrrrrr!
37 August 30, 2020 (fortune-mod 2.29.1)
41 Fix the build and tests on AppVeyor-CI / Windows
43 Fix some compiler warnings.
45 August 20, 2020 (fortune-mod 2.29.0)
49 Convert the documentation from troff to DocBook 5/XML using
50 doclifter ( http://www.catb.org/~esr/doclifter/ ). The resultant troff
51 man pages are included in the source release tarball.
53 Fix formatting of several cookies.
55 Minor build fixes (avoid rebuilding the symlinks).
57 June 02, 2020 (fortune-mod 2.28.0)
59 SECURITY [low risk]: avoid overflow with the -i flag
61 Correct attributions and typos (Thanks to Tobin Yehle.)
65 May 02, 2020 (fortune-mod 2.26.0)
67 SECURITY: Avoid integer overflow in parsing the percentages which caused
68 using negative integers.
70 https://metacpan.org/pod/Test::Trap is a new tests' dependency
72 Format strings cleanups in C.
74 April 30, 2020 (fortune-mod 2.24.0)
76 SECURITY: Avoid some potential buffer overflows in unstr, strfile and randstr.
77 - This was found to exist in NetBSD's fortune, and FreeBSD's fortune
78 as well (OpenBSD's fortune appear to have been fixed).
80 Add regression valgrind tests for the buffer overflows.
82 Some cleanups inspired by OpenBSD'd fortune.
84 April 29, 2020 (fortune-mod 2.22.0)
86 SECURITY: Avoid some hypothetical buffer overflows in unstr, strfile and randstr.
88 Modernize and refactor the code.
90 Avoid build targets' proliferation in CMake.
92 April 04, 2020 (fortune-mod 2.20.0)
94 Further avoid double traversal if FORTDIR == LOCFORTDIR.
96 Using clang-format to format the code.
98 Eliminate -D_FORTIFY_SOURCE warnings.
100 Modernize and refactor the code.
102 March 30, 2020 (fortune-mod 2.18.0)
104 Avoid double traversal if FORTDIR == LOCFORTDIR.
106 Typos' corrections and a new quote.
108 February 26, 2020 (fortune-mod 2.16.0)
110 Better portability to Microsoft Windows and other OSes
111 Thanks to AppVeyor (done by Shlomi Fish).
113 Add the -u flag [from debian]
115 Add fortune.desktop [from debian]
117 Remove backspaces in a cookie [from debian]
119 Complete the lyrics of a Leonard Cohen song [from debian]
121 Correct a misattribution.
123 February 23, 2020 (fortune-mod 2.14.0)
125 Correct some typos and add some new cookies.
127 Better Win32/Win64 Portability (AppVeyor is still failing.)
131 December 18, 2019 (fortune-mod 2.12.0)
133 Extract rinutils as a package and require it as a dep:
134 https://github.com/shlomif/rinutils/ .
136 Move some jokes to the offensive collection:
137 https://github.com/shlomif/fortune-mod/pull/38 - thanks
140 June 30, 2019 (fortune-mod 2.10.0)
142 Move strfile and unstr to /usr/bin :
143 https://github.com/shlomif/fortune-mod/issues/35
145 Code cleanups: warnings and portability.
147 Better porting to windows / appveyor-CI
150 June 07, 2019 (fortune-mod 2.8.0)
152 Add some quotes by amigojapan.
154 Some improvements for spelling, punctuation and grammar.
156 Extract a common C header.
160 December 19, 2018 (fortune-mod 2.6.2)
162 Fix the cmake files installation paths. See
163 https://github.com/shlomif/fortune-mod/pull/29 .
165 Some improvements for spelling, punctuation and grammar.
167 Normalize the numbering of "Great Moments in History":
168 https://github.com/shlomif/fortune-mod/issues/28 .
170 July 10, 2018 (fortune-mod 2.6.1)
172 Fix the previously rotated display of offensive fortunes (using the "-o"
173 or "-a" flags). See https://github.com/shlomif/fortune-mod/issues/26 .
175 Incorporate several more minor patches from Debian.
177 June 26, 2018 (fortune-mod 2.6.0)
179 Incorporate patches from the Debian package.
181 Add the "tao", "pratchett" and many individual cookies.
183 March 22, 2018 (fortune-mod 2.4.1)
185 Add the missing cmake/Shlomif_Common.cmake file.
187 March 22, 2018 (fortune-mod 2.4.0)
189 Fix issue #24 reported by @pouar of an underflow error in strfile.
191 Fix some GCC warnings with the Recode flags.
193 Remove some trailing empty lines in fortunes
195 February 15, 2018 (fortune-mod 2.2.1)
197 Fix some mispellings.
199 Remove some duplicates.
201 Thanks to bug reporters on the bug trackers of Linux distributions.
203 January 31, 2018 (fortune-mod 2.2.0)
205 Add the "disclaimer" cookie file (thanks to mathew).
207 Correct some problems in the documentation.
209 Fix some memory leaks (thanks to valgrind).
211 Reenable the valgrind tests (requires Recode 3.7).
213 January 11, 2018 (fortune-mod-2.0.0)
217 Deprecate the BSD_REGEX - we now use only POSIX ones.
221 March 25, 2017 (fortune-mod-1.99.5)
223 Add a new cmake-based configuration/build/install system.
225 Converted the source files to UTF-8.
227 Added automated tests.
229 Removed trailing whitespace.
231 Reformatted long (> 80 chars) lines.
235 Fixed some compiler warnings.
237 Added a build-time option to remove the “-o” (= “offensive”) flag.
239 Incorporated some downstream patches from Linux distributions.
242 March 05, 2004 (fortune-mod-1.99.1)
244 Most of the changes have occurred at some point in time in the last
247 A high number of spelling, punctuation, formatting and grammar
250 Internationalisation support.
252 New -c option to see which file a fortune came from.
256 Incorporated a couple of minor changes made in the (old) Debian
257 fortune-mod package, including the addition of an extra data file
258 called 'cookie'. Renamed some documentation files, and included some
259 install information for non-Linux users. Added a "-v" option to
260 report the program version.
262 I intend to submit this distribution to SunSITE RSN.
264 -- Dennis L. Clark <dbugger@progsoc.uts.edu.au>
268 This release fixes many of the portability problems with the
269 fortune-mod program released by Amy Lewis in October, 1995. The
270 previous version had many Linux-isms in it, which left it unworkable
271 on any other platform. This version replaces most of these with more
272 standard calls, making it more likely to work under other platforms.
273 The Makefiles have been modified so that GNU's gcc and make are no
274 longer required: any standard make and ANSI-compatible C compiler
275 should work. Sorry, pre-ANSI compilers are not supported (c'mon, this
276 is the 90's, darn it!)
278 This version has been tested to work on SunOS 4.1.x as well as Linux.
279 All changes made to the sources were as platform-independant as
280 possible. Therefore, no "#ifdef LINUX" or "#ifdef SUNOS4" directives
281 appear in the code. An effect of this is that a number of 'implicit
282 declaration' warnings are emitted by gcc under SunOS 4.1.x, but this a
283 problem with SunOS's standard headers, not with the program or the
284 compiler. The benefit of this approach is that it eases the work of
285 expanding the port to include other platforms. Bug reports and fixes
286 for other platforms are most welcome!
288 A few "standard" C function calls were replaced with more standard
289 counterparts at various points. Generally, when there was a choice
290 between a BSD version of a function and a POSIX version, the POSIX
291 version was favoured (even though fortune originated on BSD). An
292 exception to this was the regex functions: either POSIX or BSD
293 versions can be used, with selection made via the top-level Makefile.
295 Fortune and strfile also compiles on Solaris 2.5, but a discrepency
296 between the declaration and implementation of 'struct dirent' on the
297 test platform caused fortune to execute incorrectly there. It is not
298 certain whether this is a bug in the header file, the C library, or
301 While the making of this release was not meant to become a bug
302 search-and-destroy mission, some bugs were inadvertently discovered
303 and fixed. including the known bug of using -a with a file that occurs
304 in both the offensive and inoffensive directories. Fixing this
305 particular bug required a way to be able to separately identify two
306 fortune files with the same name, with one in the inoffensive
307 directory, the other one in the offensive directory. Now, such a name
308 will be taken to be the inoffensive file by default. However, you can
309 now append '-o' to a fortune name, and the '-o' will be removed and
310 the offensive directory will be searched. Thus you can say (assuming
311 you use the distributed datfiles):
313 fortune 80% politics politics-o
315 Which has an 80% change of giving an "inoffensive" political fortune,
316 and a 20% change of giving an "offensive" political one. Note that
317 this makes fortune-mod backwards-compatible with BSD fortune, but only
318 for users, not fortune database maintainers.
320 Of course, this solution only passes the buck: with the above example
321 again, if you have a 'politics-o' file in your inoffensive directory,
322 you are back to square one. OTOH, seeing that '-o' originally was
323 meant for offensive fortunes, using it for inoffensive ones is simply
326 Bug fixed: Fortune's definition of a fortune length (for -s and -l)
327 was inconsistent. Unordered fortunes counted the 2 delimiting
328 characters (as hinted in the man page), but sorted or randomized
329 fortunes did not. Now the delimiting characters are _NEVER_ counted,
330 so you will always get the length limit you expect.
332 Another bug fix: -l and -s can now work together with -m. Previously
333 -l and -s were ignored when -m was in effect. The new behaviour helps
334 me count how many long or short fortunes there are in a file.
336 Ansify has been removed from the package, as well as some filter
337 scripts from NetBSD that no longer appear useful. Randstr has been
338 kept, but has not been improved in any way. It at least has a man
339 page: maybe somebody will find it useful.
341 Some of the documentation (including the man pages) has been improved
342 and updated, and some files have been renamed so that the package
343 looks less Linux-specific.
345 -- Dennis L. Clark <dbugger@progsoc.uts.edu.au>
348 Ansify has been abandoned. I'm going to distribute this working version
349 of fortune, and then see how difficult it would be to add termcap/terminfo
350 enhancements to fortune itself--I don't anticipate serious problems, but
351 I'd rather go ahead and get this on the net.
353 A last-minute change was made to the way that percentages are displayed
354 with -f; it is now in the format nnn.nn%. The reason for this is that
355 with the multiplication of small files, fortune -af displayed a large
356 number of "0%"s--no worse than the old version, but not helpful.
358 The fortunes database was finally cleaned up, and this version is now
359 being distributed (at least, I hope it is). I don't consider the current
360 division of fortunes among files absolutely canonical; some are certainly
361 in the wrong places. But things are *better*.
363 Amy A. Lewis alewis@email.unc.edu
366 Another utility, ansify, now compiles; it has not been tested at all, so
367 it may not work even slightly.
369 Ansify is a rather stupid program, all things considered, but the work on
370 it does raise an interesting possibility for an enhanced fortune. At
371 present, the fortune databases contain x^Hy sequences for underline and
372 special characters (and this can be extended to include bold, = x^Hx).
373 Ansify is stupid because it doesn't use the proper tools, ie termcap or
374 terminfo (hmmm ... since it works on files, that may not be so stupid);
375 it appears that if that can be done, then a termcap/terminfo enhanced
376 fortune could be produced, which would recognize the existence of ^H in
377 a string and attempt to display using appropriate control sequences.
378 This sort of modification would be of greater interest to casual users,
379 I think, than even the bug fixes, and since it would not force changes
380 in the storage of fortunes, it is eminently portable. Consider this a
383 Added (early October 95):
384 A new executable, rot, which is a rot13 filter (a caesar cipher). Most
385 probably have caesar, but on the other hand, if you compile this mess
386 as root, caesar probably isn't in the path.
388 A new parameter to fortune, -n, which permits you to specify the length
389 at which to break between long (-l) and short (-s) fortunes.
391 fortune -f now shows probabilities.
393 A bug: fortune -a nn% filename filename ... now fails without an error
394 message, if the filename named following the percentage exists in both
395 the inoffensive and the offensive directories (that is, if you have two
396 files containing definitions, one called fortunes/definitions and one
397 called fortunes/off/definitions, and call fortune as: fortune -a 10%
398 definitions religion politics ..., then fortune simply fails). This
399 appears to be an artifact of the changes that were made in storage/
400 naming of offensive fortunes. It only happens with the combination of
401 a percentage with -a and inoffensive/offensive files that share a name.
402 Temporary workaround: rename one or the other of the files (*sigh* I
403 don't like that as a solution).
405 The man pages have been updated. The old man pages are also available,
406 but are not installed unless you do it yourself (the new ones are). The
407 new man pages have the extension .man; the old ones have numeric
410 A place has been created for fortune files containing HTML tags (the
411 reason I started playing with this mess was because I wanted to be
412 able to format fortunes nicely for the web without having to run an
413 enormously complex script to figure out from formatting how best to
414 display things, a particular problem since the formatting isn't
415 consistent). Tagged fortunes don't exist yet, and I'm seriously
416 considering creating a slightly different fortune binary that would
417 output the necessary headers and trailers (reducing the CGI script
418 to complete triviality) (-f isn't really needed for a webfortune).
420 Todo: I'm thinking of adding a -x to unstr, to rot13 the output. This
421 would have the effect of putting all the necessary tools in one package.
422 It further breaks compatibility with BSD tools (which has *mostly* been
423 maintained, merely enhanced slightly, although the change in how
424 offensive files are distinguished from inoffensive might be regarded as
425 breaking compatibility) by adding yet another parameter to unstr, which
426 didn't have any, before. So I haven't decided, yet.
428 Todo: KOI8 encoded fortunes? They couldn't be rotated without a great
429 deal of trouble, of course.
433 The way that fortune -m prints its output has been slightly changed. It
434 used to print the delimiter first, then, if this were the first fortune
435 from a particular file, it printed the name of the file in parentheses.
436 It now prints the first fortune without an initial delimiter; if the
437 fortune is the first from a particular file, it then prints
438 (filename), newline, delimiter, newline *to stderr*. Redirect stderr to
439 stdout to get something *similar to* (but not the same as) the old
440 behavior. The new behavior, if stderr is redirected to stdout, and
441 both are then redirected to a file, produces fictitious entries, one
442 per file in which a match was found. However, whether stderr is
443 redirected or not, the new format produces files that strfile can
444 parse without choking (the old format, since it placed the filename
445 on the same line as the delimiter character, effectively forced editing
446 of the file in order to make it usable by strfile, unless the option of
447 concatenating two fortunes with an ugly "% (filename)" line separating
448 them was considered acceptable output). Under the new display format,
449 if stderr is redirected into the file, you end up with filenames marking
450 the separation between files (as before), but they are now valid text
451 strings (which should probably, therefore, be deleted).
453 In other words, if you don't care what files the original text came from,
454 and want a new file containing (let us say), quotes from Mark Twain,
456 fortune -am '-- Mark Twain' >twain
457 The files accessed would march down the screen; the fortunes would be
458 stored in parsable format into the file twain. If, however, you planned
459 to edit (perhaps to remove the quotes from the original file, you might
460 then wish to redirect stderr to stdout. Using bash:
461 fortune -am '-- Mark Twain' &>twain
463 fortune -am '-- Mark Twain' >twain 2>&1
465 [The above is now in the man page, more or less]
468 Too many changes to mention, really. Look at the source code for
469 comments on individual files. LINUX.DIF has been removed.
471 It is worth noting that strfile was completely broken as distributed,
472 and fortune had code to make it report a different file list than the
473 one it used to retrieve fortunes. There's some rather strong language
474 on the subject in strfile.c; if it offends you, tough.
476 Bugs were fixed, and some enhancements were added. Unstr, in
477 particular, has had its command line considerably enhanced. Strfile
478 now *really does* sort, instead of merely setting the 'sorted' flag.
479 Ditto for randomizing.
481 Noteworthy: the way to distinguish between offensive and non-offensive
482 files has changed for fortune. A second directory (which may be a
483 subdirectory of the main fortune directory; the program doesn't
484 add files recursively down a directory tree) has been added to
485 pathnames.h. Offensive files should be placed there. There is no
486 longer any need to add the -o suffix to file names, and the problems
487 with finding files (especially offensive ones) seem to have
488 disappeared in the process.
490 Currently, I'm working on breaking the fortune files themselves into
491 smaller, more manageable pieces, checking spelling, punctuation, and
492 grammar, and trying to reduce redundancy. The eventual goal, after
493 the files are cleaned up, is another set of files carrying HTML tags,
494 which would then massively simplify a CGI script that calls fortune.
498 A 'randstr' (I want to call it 'lottery,' but I won't) utility, which
499 amounts to a poor woman's stripped-down fortune, to illustrate some
500 other possible uses of strfile-type random-access strings files.
502 Amy A. Lewis alewis@email.unc.edu