version 4, including all changes.
.
Rev |
Author |
# |
Line |
1 |
perry |
1 |
FORTUNE |
|
|
2 |
!!!FORTUNE |
|
|
3 |
NAME |
|
|
4 |
SYNOPSIS |
|
|
5 |
DESCRIPTION |
|
|
6 |
FILES |
|
|
7 |
BUGS |
|
|
8 |
HISTORY |
|
|
9 |
SEE ALSO |
|
|
10 |
---- |
|
|
11 |
!!NAME |
|
|
12 |
|
|
|
13 |
|
|
|
14 |
fortune - print a random, hopefully interesting, adage |
|
|
15 |
!!SYNOPSIS |
|
|
16 |
|
|
|
17 |
|
|
|
18 |
__fortune__ [[__-aefilosw__] [[__-n__ ''length''] |
|
|
19 |
[[ __-m__ ''pattern''] [[[[''n%''] |
|
|
20 |
''file/dir/all''] |
|
|
21 |
!!DESCRIPTION |
|
|
22 |
|
|
|
23 |
|
|
|
24 |
When __fortune__ is run with no arguments it prints out a |
|
|
25 |
random epigram. Epigrams are divided into several |
|
|
26 |
categories, where each category is sub-divided into those |
|
|
27 |
which are potentially offensive and those which are |
|
|
28 |
not. |
|
|
29 |
|
|
|
30 |
|
|
|
31 |
__Options__ |
|
|
32 |
|
|
|
33 |
|
|
|
34 |
The options are as follows: |
|
|
35 |
|
|
|
36 |
|
|
|
37 |
__-a__ |
|
|
38 |
|
|
|
39 |
|
|
|
40 |
Choose from all lists of maxims, both offensive and not. |
|
|
41 |
(See the __-o__ option for more information on offensive |
|
|
42 |
fortunes.) |
|
|
43 |
|
|
|
44 |
|
|
|
45 |
__-e__ |
|
|
46 |
|
|
|
47 |
|
|
|
48 |
Consider all fortune files to be of equal size (see |
|
|
49 |
discussion below on multiple files). |
|
|
50 |
|
|
|
51 |
|
|
|
52 |
__-f__ |
|
|
53 |
|
|
|
54 |
|
|
|
55 |
Print out the list of files which would be searched, but |
|
|
56 |
don't print a fortune. |
|
|
57 |
|
|
|
58 |
|
|
|
59 |
__-l__ |
|
|
60 |
|
|
|
61 |
|
|
|
62 |
Long dictums only. See __-n__ on how ``long'' is defined |
|
|
63 |
in this sense. |
|
|
64 |
|
|
|
65 |
|
|
|
66 |
__-m__ ''pattern'' |
|
|
67 |
|
|
|
68 |
|
|
|
69 |
Print out all fortunes which match the basic regular |
|
|
70 |
expression ''pattern''. The syntax of these expressions |
4 |
perry |
71 |
depends on how your system defines re_comp(3) or |
1 |
perry |
72 |
regcomp(3), but it should nevertheless be similar to |
|
|
73 |
the syntax used in grep(1). |
|
|
74 |
|
|
|
75 |
|
|
|
76 |
The fortunes are output to standard output, while the names |
|
|
77 |
of the file from which each fortune comes are printed to |
|
|
78 |
standard error. Either or both can be redirected; if |
|
|
79 |
standard output is redirected to a file, the result is a |
|
|
80 |
valid fortunes database file. If standard error is |
|
|
81 |
''also'' redirected to this file, the result is ''still |
|
|
82 |
valid'', __but there will be ``bogus'' fortunes__, i.e. |
|
|
83 |
the filenames themselves, in parentheses. This can be useful |
|
|
84 |
if you wish to remove the gathered matches from their |
|
|
85 |
original files, since each filename-record will precede the |
|
|
86 |
records from the file it names. |
|
|
87 |
|
|
|
88 |
|
|
|
89 |
__-n__ ''length'' |
|
|
90 |
|
|
|
91 |
|
|
|
92 |
Set the longest fortune length (in characters) considered to |
|
|
93 |
be ``short'' (the default is 160). All fortunes longer than |
|
|
94 |
this are considered ``long''. Be careful! If you set the |
|
|
95 |
length too short and ask for short fortunes, or too long and |
|
|
96 |
ask for long ones, fortune goes into a never-ending thrash |
|
|
97 |
loop. |
|
|
98 |
|
|
|
99 |
|
|
|
100 |
__-o__ |
|
|
101 |
|
|
|
102 |
|
|
|
103 |
Choose only from potentially offensive aphorisms. The -o |
|
|
104 |
option is ignored if a fortune directory is |
|
|
105 |
specified. |
|
|
106 |
|
|
|
107 |
|
|
|
108 |
__Please, please, please request a potentially offensive |
|
|
109 |
fortune if and only if you believe, deep in your heart, that |
|
|
110 |
you are willing to be offended. (And that you'll just quit |
|
|
111 |
using__ -o __rather than give us grief about it, |
|
|
112 |
okay?)__ |
|
|
113 |
|
|
|
114 |
|
|
|
115 |
... let us keep in mind the basic governing philosophy of |
|
|
116 |
The Brotherhood, as handsomely summarized in these words: we |
|
|
117 |
believe in healthy, hearty laughter -- at the expense of the |
|
|
118 |
whole human race, if needs be. Needs be. |
|
|
119 |
|
|
|
120 |
|
|
|
121 |
--H. Allen Smith, |
|
|
122 |
|
|
|
123 |
|
|
|
124 |
__-s__ |
|
|
125 |
|
|
|
126 |
|
|
|
127 |
Short apothegms only. See __-n__ on which fortunes are |
|
|
128 |
considered ``short''. |
|
|
129 |
|
|
|
130 |
|
|
|
131 |
__-i__ |
|
|
132 |
|
|
|
133 |
|
|
|
134 |
Ignore case for ''-m'' patterns. |
|
|
135 |
|
|
|
136 |
|
|
|
137 |
__-w__ |
|
|
138 |
|
|
|
139 |
|
|
|
140 |
Wait before termination for an amount of time calculated |
|
|
141 |
from the number of characters in the message. This is useful |
|
|
142 |
if it is executed as part of the logout procedure to |
|
|
143 |
guarantee that the message can be read before the screen is |
|
|
144 |
cleared. |
|
|
145 |
|
|
|
146 |
|
|
|
147 |
The user may specify alternate sayings. You can specify a |
|
|
148 |
specific file, a directory which contains one or more files, |
|
|
149 |
or the special word ''all'' which says to use all the |
|
|
150 |
standard databases. Any of these may be preceded by a |
|
|
151 |
percentage, which is a number ''n'' between 0 and 100 |
|
|
152 |
inclusive, followed by a ''%''. If it is, there will be a |
|
|
153 |
''n'' percent probability that an adage will be picked |
|
|
154 |
from that file or directory. If the percentages do not sum |
|
|
155 |
to 100, and there are specifications without percentages, |
|
|
156 |
the remaining percent will apply to those files and/or |
|
|
157 |
directories, in which case the probability of selecting from |
|
|
158 |
one of them will be based on their relative |
|
|
159 |
sizes. |
|
|
160 |
|
|
|
161 |
|
|
|
162 |
As an example, given two databases ''funny'' and |
|
|
163 |
''not-funny'', with ''funny'' twice as big (in number |
|
|
164 |
of fortunes, not raw file size), saying |
|
|
165 |
|
|
|
166 |
|
|
|
167 |
__fortune__ ''funny not-funny'' |
|
|
168 |
|
|
|
169 |
|
|
|
170 |
will get you fortunes out of ''funny'' two-thirds of the |
|
|
171 |
time. The command |
|
|
172 |
|
|
|
173 |
|
|
|
174 |
__fortune__ 90% ''funny'' 10% |
|
|
175 |
''not-funny'' |
|
|
176 |
|
|
|
177 |
|
|
|
178 |
will pick out 90% of its fortunes from ''funny'' (the |
|
|
179 |
``10% not-funny'' is unnecessary, since 10% is all that's |
|
|
180 |
left). |
|
|
181 |
|
|
|
182 |
|
|
|
183 |
The __-e__ option says to consider all files equal; |
|
|
184 |
thus |
|
|
185 |
|
|
|
186 |
|
|
|
187 |
__fortune -e__ ''funny not-funny'' |
|
|
188 |
|
|
|
189 |
|
|
|
190 |
is equivalent to |
|
|
191 |
|
|
|
192 |
|
|
|
193 |
__fortune__ 50% ''funny'' 50% |
|
|
194 |
''not-funny'' |
|
|
195 |
|
|
|
196 |
|
|
|
197 |
This fortune also supports the BSD method of appending |
|
|
198 |
``-o'' to database names to specify offensive fortunes. |
|
|
199 |
However this is __not__ how fortune stores them: |
|
|
200 |
offensive fortunes are stored in a seperate directory |
|
|
201 |
without the ``-o'' infix. A plain name (i.e., not a path to |
|
|
202 |
a file or directory) that ends in ``-o'' will be assumed to |
|
|
203 |
be an offensive database, and will have its suffix stripped |
|
|
204 |
off and be searched in the offensive directory (even if the |
|
|
205 |
neither of the ''-a'' or ''-o'' options were |
|
|
206 |
specified). This feature is not only for |
|
|
207 |
backwards-compatibility, but also to allow users to |
|
|
208 |
distinguish between inoffensive and offensive databases of |
|
|
209 |
the same name. |
|
|
210 |
|
|
|
211 |
|
|
|
212 |
For example, assuming there is a database named |
|
|
213 |
''definitions'' in both the inoffensive and potentially |
|
|
214 |
offensive collections, then the following command will |
|
|
215 |
select an inoffensive definition 90% of the time, and a |
|
|
216 |
potentially offensive definition for the remaining |
|
|
217 |
10%: |
|
|
218 |
|
|
|
219 |
|
|
|
220 |
__fortune__ 90% ''definitions |
|
|
221 |
definitions-o'' |
|
|
222 |
!!FILES |
|
|
223 |
|
|
|
224 |
|
|
|
225 |
Note: these are the defaults as defined at compile |
|
|
226 |
time. |
|
|
227 |
|
|
|
228 |
|
|
|
229 |
/usr/share/games/fortunes - Directory for inoffensive |
|
|
230 |
fortunes |
|
|
231 |
|
|
|
232 |
|
|
|
233 |
/usr/share/games/fortunes/off - Directory for offensive |
|
|
234 |
fortunes |
|
|
235 |
|
|
|
236 |
|
|
|
237 |
/usr/local/share/games/fortunes - Local directory for |
|
|
238 |
inoffensive fortunes |
|
|
239 |
|
|
|
240 |
|
|
|
241 |
/usr/local/share/games/fortunes/off - Local directory for |
|
|
242 |
offensive fortunes |
|
|
243 |
|
|
|
244 |
|
|
|
245 |
If a particular set of fortunes is particularly unwanted, |
|
|
246 |
there is an easy solution: delete the associated ''.dat'' |
|
|
247 |
file. This leaves the data intact, should the file later be |
|
|
248 |
wanted, but since __fortune__ no longer finds the |
|
|
249 |
pointers file, it ignores the text file. |
|
|
250 |
!!BUGS |
|
|
251 |
|
|
|
252 |
|
|
|
253 |
The division of fortunes into offensive and non-offensive by |
|
|
254 |
directory, rather than via the `-o' file infix, is not 100% |
|
|
255 |
compatible with original BSD fortune. Although the `-o' |
|
|
256 |
infix is recognised as referring to an offensive database, |
|
|
257 |
the offensive database files still need to be in a seperate |
|
|
258 |
directory. The workaround, of course, is to move the `-o' |
|
|
259 |
files into the offensive directory (with or without |
|
|
260 |
renaming), and to use the __-a__ option. |
|
|
261 |
|
|
|
262 |
|
|
|
263 |
The supplied fortune databases have been attacked, in order |
|
|
264 |
to correct orthographical and grammatical errors, and |
|
|
265 |
particularly to reduce redundancy and repetition and |
|
|
266 |
redundancy. But especially to avoid repititiousness. This |
|
|
267 |
has not been a complete success. In the process, some |
|
|
268 |
fortunes may also have been lost. |
|
|
269 |
|
|
|
270 |
|
|
|
271 |
The fortune databases are now divided into a larger number |
|
|
272 |
of smaller files, some organized by format (poetry, |
|
|
273 |
definitions), and some by content (religion, politics). |
|
|
274 |
There are parallel files in the main directory and in the |
|
|
275 |
offensive files directory (e.g., fortunes/definitions and |
|
|
276 |
fortunes/off/definitions). Not all the potentially offensive |
|
|
277 |
fortunes are in the offensive fortunes files, nor are all |
|
|
278 |
the fortunes in the offensive files potentially offensive, |
|
|
279 |
probably, though a strong attempt has been made to achieve |
|
|
280 |
greater consistency. Also, a better division might be |
|
|
281 |
made. |
|
|
282 |
!!HISTORY |
|
|
283 |
|
|
|
284 |
|
|
|
285 |
This version of fortune is based on the NetBSD fortune 1.4, |
|
|
286 |
but with a number of bug fixes and |
|
|
287 |
enhancements. |
|
|
288 |
|
|
|
289 |
|
|
|
290 |
The original fortune/strfile format used a single file; |
|
|
291 |
strfile read the text file and converted it to |
|
|
292 |
null-delimited strings, which were stored after the table of |
|
|
293 |
pointers in the .dat file. By NetBSD fortune 1.4, this had |
|
|
294 |
changed to two separate files: the .dat file was only the |
|
|
295 |
header (the table of pointers, plus flags; see |
|
|
296 |
''strfile.h''), and the text strings were left in their |
|
|
297 |
own file. The potential problem with this is that text file |
|
|
298 |
and header file may get out of synch, but the advantage is |
|
|
299 |
that the text files can be easily edited without resorting |
|
|
300 |
to unstr, and there is a potential savings in disk space (on |
|
|
301 |
the assumption that the sysadmin kept both .dat file with |
|
|
302 |
strings and the text file). |
|
|
303 |
|
|
|
304 |
|
|
|
305 |
Many of the enhancements made over the NetBSD version |
|
|
306 |
assumed a Linux system, and thus caused it to fail under |
|
|
307 |
other platforms, including BSD. The source code has since |
|
|
308 |
been made more generic, and currently works on SunOS 4.x as |
|
|
309 |
well as Linux, with support for more platforms expected in |
|
|
310 |
the future. Note that some bugs were inadvertantly |
|
|
311 |
discovered and fixed during this process. |
|
|
312 |
|
|
|
313 |
|
|
|
314 |
At a guess, a great many people have worked on this program, |
|
|
315 |
many without leaving attributions. |
|
|
316 |
!!SEE ALSO |
|
|
317 |
|
|
|
318 |
|
4 |
perry |
319 |
re_comp(3), regcomp(3), strfile(1), |
1 |
perry |
320 |
unstr(1) |
|
|
321 |
---- |