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