• Stars
    star
    332
  • Rank 126,957 (Top 3 %)
  • Language
    C
  • License
    Other
  • Created over 8 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Implementation of the Unix fortune command for displaying a random quotation, for Linux and other systems.

fortune-mod Maintenance Version and Ongoing Development

Travis-CI Build Status
AppVeyor Build status

This GitHub repository maintains the sources for fortune-mod, a version of the UNIX fortune command. fortune is a command-line utility which displays a random quotation from a collection of quotes. This collection is read from the local file system and does not require network access. A large collection of quotes is provided in the download and installed by default, but more quote collections can be added by the user.

The canonical repository for the time being is: https://github.com/shlomif/fortune-mod . In the future, we may create a GitHub organization for it and move the sources there.

For more information about it, you can contact Shlomi Fish .

Installation

On Fedora and other rpm-based distributions:

sudo dnf install fortune-mod

( RHEL and CentOS users may opt to try the EPEL packages. )

On Arch Linux and derivatives:

sudo pacman -S fortune-mod

On Debian, and derivatives (e.g: Ubuntu, Linux Mint):

sudo apt install fortune-mod

(Warning: may be an old version.)

Release Tarballs

Release tarballs can be found at this directory for now.

Based on this reported bug:

One can find the official release tarballs of fortune-mod as prepared by CPack there. They have a proper containing directory. One can also download these tarballs from the GitHub releases page but please do not use the auto generated “Source code (zip)” and “Source code (tar.gz)” downloads which are both incomplete and have extra directories inside.

Sample usage

$ fortune
Enthusiasm is one of the most important
ingredients a volunteer project runs on.
                -- Andreas Schuldei
$

History

I believe fortune-mod was originally forked from the NetBSD version of fortune, and ported to run on Linux systems. For some time it was maintained at the currently offline redellipse-dot-net inside a GNU Arch (= an old and now mostly unused version control system) repository, and version 1.99.1 was released as a tarball.

This maintenance version was initiated by Shlomi Fish, who decided to maintain it out of being a fan of the fortune command. It started by importing the unpacked source of the fortune-mod-1.99.1.tar tarball from the Mageia Linux .src.rpm into an empty git repository and continuing from there.

What is the difference between fortune-mod and the "normal" fortune?

fortune-mod (= "fortune modified") was the name of a fork of the original NetBSD fortune, which was done in order to port the code to Linux and apply some other changes. If you are using a Linux distribution chances are that the fortune executable’s package is fortune-mod (although in the case of Debian-and-derivatives it is likely very out-of-date as of September 2020).

Why is it written in C? Can’t it be written in Perl, awk, Python, etc.?

The answer has several parts:

First of all note that according to the wikipedia page the original fortune was created in 1979, before the first version of perl was released in 1987, or python, ruby or Lua which were released later, and when UNIX-running computers were more underpowered than they are today.

Secondly, you can find some reimplementations of fortune here:

You may be able to get them to work with the data files of fortune-mod and other fortune collections, but note that we have not closely reviewed their source codes.

Thirdly, most of the value (and relative data size) of the tarball is in the quotes collection.

Fourthly, a native executable may still give a better user experience (I have yet to perform a stresstest benchmark though, and I doubt it will matter too much for fortune’s common use case.)

Finally note that the runtime algorithm is not as straightforward as one may believe, making use of dat files that contain counts and offsets of the fortune "cookies".

Why did you convert the buildsystem to CMake?

See:

What was already done.

  1. fortune-mod-1.99.1 was imported into the repository from the Mageia tarball as the tag fortune-mod-1.99.1.

  2. Converted the build system to CMake .

  3. Converted the source files to UTF-8.

  4. Added some tests.

  5. Removed trailing whitespace.

  6. Reformatted long (> 80 chars) lines.

  7. Fixed some typos.

  8. Added Travis-CI testing.

  9. Added valgrind tests and fixed some memory leaks.

  10. Released fortune-mod-1.99.3, fortune-mod-1.99.4, v2.0.0 and up to version 2.26.0 and beyond.

  11. Fixed some C compiler warnings encountered with the GCC compiler flags of Shlomif_Common.

  12. Added a build-time option to remove the “-o” (= “offensive”) flag, inspired by a set of patches on the Fedora package.

  13. Applied some downstream patches.

  14. Fixed as many “clang -Weverything” warnings as possible.

  15. lib-recode became maintained again at https://github.com/rrthomas/recode (thanks to @rrthomas ) thus preventing a switch to something else.

  16. Got the build and tests to pass on AppVeyor/MS Windows (with some appreciated help).

  17. Found and fixed some security issues:

  18. Reformatted the C code using clang-format.

  19. Moved some cookies to/from the offensive collection.

  20. Added new cookies.

What remains to be done.

  1. Fix more typos (issue reports and pull-requests are welcome.)

  2. Add more quotes / fortune cookies (issue reports and pull-requests are welcome.).

  3. Prepare packages for the new releases for downstream distributions/Operating Systems.

More Repositories

1

PySolFC

A comprehensive, feature-rich, open source, and portable, collection of Solitaire games.
Python
449
star
2

primesieve-python

Fast prime number generator. Python bindings for the primesieve C++ library
Cython
133
star
3

what-i-learned-from-porting-to-freebsd

What I Learned from porting my projects to FreeBSD
115
star
4

fc-solve

Freecell Solver - a C library for automatically solving Freecell and some other variants of card Solitaire
C
56
star
5

Freenode-programming-channel-FAQ

A Frequently Asked Questions List of the Freenode ##programming Channel.
Python
46
star
6

Bezier-Envelope-for-Inkscape

The Bezier Envelope Extension for Inkscape
Python
28
star
7

catable

CATAlyst BLog Engine - written by perl cats
Perl
17
star
8

what-you-should-know-about-automated-testing

What you should know about automated software testing
Perl
14
star
9

testing-static-sites

Ideas for automated tests of static web sites
Makefile
14
star
10

perl-XML-LibXML

The XML-LibXML CPAN Distribution for Processing XML using the libxml2 library
Perl
14
star
11

gtk3-cmake-examples

gtk3 and cmake examples
CMake
13
star
12

how-to-share-code-online

How to share source code on online forums in order to get help with it
12
star
13

shlomi-fish-homepage

Shlomi Fish’s Homepage Sources - www.shlomifish.org
HTML
11
star
14

mastering-perl

Previously a copy of the book Mastering Perl as published by O'Reilly. Now Removed.
11
star
15

perl5-for-JavaScript

microperl fork (http://themucker.github.io/plu/)
C
9
star
16

perl-XML-RSS

The Repository for the CPAN XML::RSS module for parsing and generating various versions of RSS.
Perl
9
star
17

Summerschool-at-the-NSA

"Summerschool at the NSA" - a screenplay. Two Hollywood actresses in 2013 conspire to kick the ass of the National Security Agency (NSA), using special warfare that is completely non-violent.
Shell
8
star
18

shlomif-computer-settings

Shlomi Fish's personal software settings/dot-files/etc.
Shell
7
star
19

PySolFC-Cardsets

PySolFC Cardsets repository
7
star
20

perl5-for-JavaScript--take2

perl5 for JS via Emscripten.
C
6
star
21

perl-Config-IniFiles

The Config-IniFiles CPAN Distribution
Perl
6
star
22

rinutils

C11 / gnu11 utilities C library by Shlomi Fish / Rindolf
C
5
star
23

shlomif-snippets

My Collection of various short, exploratory or demonstrative code files in Perl, Python and other langs
Perl
5
star
24

gringotts

A Secure Notes Manager
C
5
star
25

Inline-Ruby

Embed and interact with Ruby code from within Perl 5
Perl
5
star
26

rebookmaker

Generate EPUBs from a .json metadata file and input HTML pages. A FOSS rewrite of setanta's "ebookmaker"
Python
5
star
27

black-hole-solitaire

Solvers and statistics for “Golf” solitaire, “Black Hole” solitaire, “All in a Row” solitaire and related card patience games.
Perl
5
star
28

my-real-person-fan-fiction

Why real person fanfiction could "hurt" actors but not singers, and what to do about it
Makefile
5
star
29

perl-graph-easy

cpan
Perl
4
star
30

vim-begin

The Vim Beginners’ Site
SCSS
4
star
31

app-notifier

HTTP Client/Server For Desktop Notifications
Perl
4
star
32

Text-Table

CPAN Distribution to render text / ASCII-art / Unicode tables
Perl
4
star
33

pysol_cards

Python library for dealing cards like PySol FC, MS Freecell/Freecell Pro, or PySol legacy
Python
4
star
34

shlomif-tech-diary

HTML
4
star
35

Human-Hacking-Field-Guide

A novella titled “The Human Hacking Field Guide” about teenage open source enthusiasts near Los Angeles, California
Shell
4
star
36

emcc-array-of-pointers-example

emcc array of C strings / C pointers example.
JavaScript
4
star
37

KlondikeSolver

Solitaire solver implementation for Klondike
C++
4
star
38

binary-puzzle-garden

Various programs to manipulate the so-called "Binary Puzzle"s which are featured on http://www.binarypuzzle.com/
Perl
4
star
39

docmake

Docmake is an automated builder from DocBook/XML to its output formats (e.g XHTML5 or PDF). It aims to be a saner replacement for xmlto.
Perl
4
star
40

perl-Statistics-Descriptive

The Statistics::Descriptive Perl 5/CPAN distribution
Perl
4
star
41

Graph-Easy-As_svg

The CPAN Distribution
Perl
3
star
42

Humanity-the-Movie

Sources for the screenplay for the Humanity (the Movie) - a parody about Humanity and modern life in particular.
Shell
3
star
43

vim-freecell

Vim helpers for viewing/editing freecell solitaire layouts and solutions
Vim Script
3
star
44

Fiction-XML

Fiction-Text, Screenplay-Text, Fiction-XML and Screenplay-XML.
Perl
3
star
45

Buffy-a-Few-Good-Slayers

A screenplay for a Buffy fanfiction set in 2014/2015 in a forked version of the Buffyverse.
Shell
3
star
46

perl-File-Dir-Dumper

Dump nested directory structures to a stream.
Perl
3
star
47

patsolve

A solver for Freecell and Seahaven Towers
C
3
star
48

abc-path

Solvers, Generators, etc. for the game ABC Path
JavaScript
3
star
49

perl-XML-LibXSLT

XSLT
3
star
50

writing-the-perfect-question

Jon Skeet's Writing the Perfect Question
Makefile
3
star
51

pysol-sound-server

pysol-sound-server to provide sounds and music for PySol FC. Maintenance fork with support for python 3 and future enhancements
C
3
star
52

pysolfc-website

sources for the pysolfc web site
HTML
2
star
53

better-scm

Sources of the Better-SCM Site
Perl
2
star
54

Math-Cephes

A Perl/CPAN Interface to the Cephes Mathematics Library
C
2
star
55

xxHash-wrapper

A wrapper for xxHash with some cmake glue
C
2
star
56

zenfilter

Small Python script used to filter TravisCI output
Python
2
star
57

python-vnu_validator

vnu validator wrapper
HTML
2
star
58

vim-screenplay-text

Vim Script
2
star
59

perl-begin

The Perl Beginners’ Site’ Sources
HTML
2
star
60

vim-faq-notes

2
star
61

Adrian-Ettlinger-Emails-Collection

Perl
2
star
62

HTML-Spelling-Site

Spell checking system/framework for an entire static HTML site.
Perl
2
star
63

shlomif-cmake-modules

CMake
2
star
64

test-xml-ordered

Perl
2
star
65

putting-cards-2019-2020

Summary of Rindolfism, Shlomi Fish's personal and dynamic philosophy, as of 2019-2020
Perl
2
star
66

Shlomi-Fish-Back-to-my-Homepage-Logo

The new incarnation of the Back to My Homepage Logo Based on the Logo from the film Back to the Future
Python
2
star
67

captioned-image--emma-watson-doesnt-need-a-wand

Captioned Image: Emma Watson played Hermione in the Harry Potters but she doesn't need a wand to kick your ass.
Makefile
2
star
68

fc-solve-site-assets

Freecell Solver's Site Assets (tarballs, downloads, etc.)
Ruby
2
star
69

quad-pres

Perl
2
star
70

SQL-Injections--danger-and-prevention

SQL Injections
Ruby
2
star
71

Docker-CLI-Wrapper

wrapper for the Docker CLI
Perl
2
star
72

Selina-Mandrake

Selina Mandrake - The Slayer: “caught between post-modernism and the New Age” - a screenplay
Shell
2
star
73

SQL-Abstract

The CPAN SQL::Abstract Module
Perl
2
star
74

MeToo-me-too

#MeToo me too! The collection of "sexual harassment" quotes where we show that sexy women (and men) are competent and respected
Makefile
2
star
75

pydistman

python "overkill DRY" distribution manager
Python
2
star
76

rakudo-git-master-install

Bash program to install rakudo perl6 git master
Shell
2
star
77

freecell-pro-0fc-deals

Finding zero freecells deals in the fc-pro range
Shell
2
star
78

perl-html-links-localize

Perl
2
star
79

cpan-smoke-auto-setup

Perl
2
star
80

html-tutorial

CSS
2
star
81

dzil-dist-ini-format-documentation

Proposed draft for Dist-Zilla's dist.ini's format document
2
star
82

shlomif-c-snippets

C (and some C++) snippets and short demonstration programs by Shlomi Fish and Friends
C++
2
star
83

Captioned-Image-Ayn-Rand-to-Christina-Grimmie

A captioned image reading "If Ayn Rand was born in the 1990s, she would be Christina Grimmie.".
Makefile
2
star
84

Star-Trek--We-the-Living-Dead

Star Trek Deep Space Nine: “We, the Living Dead” - a fan fiction screenplay by Shlomi Fish
Shell
2
star
85

cpandeps

The code behind deps.cpantesters.org
Perl
2
star
86

add-to-word-search.vim

Add more keywords to the search in Vim
Vim Script
2
star
87

plea-to-not-use-github-tags-as-releases

A plea (from packagers/etc.) to not use GitHub tags as Releases and instead make regular release tarballs.
2
star
88

usr-share-games-fortunes--backup

/usr/share/games/fortunes backup
Shell
2
star
89

cookiecutter--shlomif-latemp-sites

Common files and skeleton for Shlomi Fish's Latemp sites
XSLT
2
star
90

missile-vs-melee-take-three

"Queen Amidala vs. The Klingon Warriors" - an enhanced/modernised version of the David and Goliath story set in a fanfic crossoverred Star Trek and Star Wars universe. "Why can't we have both?" (CC-by)
Perl
2
star
91

peter-sanders-priority-queues

C
2
star
92

perl-HTML-Widgets-NavMenu

Perl
2
star
93

The-Muppets-Show--The-New-Incarnation

New incarnation of The Muppet Show with themes such as Summer Glau/Chuck Norris/Grammar nazism ; Jenn Lawrence/SLP/Hunger Games ; Harry Potter ; etc.
Shell
2
star
94

urpmi

The Mageia Linux Software Installation and Management Tools
Perl
1
star
95

book-of-proof--exercises-solutions

Solutions by Shlomi Fish for the Exercises in the book "Book of Proof".
TeX
1
star
96

perl-Code-TidyAll-Plugin-ClangFormat

clang-format plugin for Code-TidyAll
Perl
1
star
97

lm-solve-layouts

1
star
98

Captioned-Image-If-You-Wanna-Be-Sad

A captioned image from The Simpsons
Makefile
1
star
99

perl-Parallel-ForkManager-Segmented

perl-Parallel-ForkManager-Segmented
Perl
1
star
100

the-enemy

HTML
1
star