8 months agoAdd infrastructure to build debian packages.
Andre Noll [Mon, 20 May 2019 14:58:20 +0000 (16:58 +0200)]
Add infrastructure to build debian packages.

This commit adds the usual files below debian/ so that debian source
and binary packages can be made with a command like


The debian/rules file relies on dh but overrides the dh_auto_configure
and the dh_autoreconf targets. The default recipe for dh_auto_configure
results in warnings because tfortune's configure does not implement
some of the options which dh appends to the configure command. The
override for autoreconf is needed because the default recipe would
remove our configure wrapper and replace it with the generated script.

This has been tested on debian-9, debian-10 and debian-11. On all
systems, lintian(1) reports no warnings and no errors.

v3 -> v4
* Fix Bug ID in debian/changelog (pointed out by Adam Borowski)

v2 -> v3
* Switch to a simple debian/rules file as suggested by Alexis Murzeau
  and Adam Borowski.

v1 -> v2
Incorporate feedback from Adam Borowski:
 * Use dh_installchangelogs instead of open-coding it
 * Use gzip -n to avoid rendering the build non-reproducible
 * Fix the installation path of debian/copyright by running dh_install,
 * Create md5sums file

8 months agoMakefile: Avoid warning when config.mak is not present.
Andre Noll [Tue, 4 Jun 2019 14:22:05 +0000 (16:22 +0200)]
Makefile: Avoid warning when config.mak is not present.

Without the leading dash, make(1) complains if, for example,

make config.mak

is run on a pristine tree. The dash instructs make(1) to not emit
a warning if the file to include does not exist or cannot be remade.

8 months agoRun gzip with -n.
Andre Noll [Fri, 31 May 2019 18:23:02 +0000 (20:23 +0200)]
Run gzip with -n.

It is generally a good idea to not save the local file name and
timestamp in the compressed file, as this thwarts reproducible builds.

Suggested-by: Adam Borowski <>
9 months agoNew make targets: exe, build-arch, man and build-indep.
Andre Noll [Wed, 22 May 2019 13:56:31 +0000 (15:56 +0200)]
New make targets: exe, build-arch, man and build-indep.

It's good practice to provide separate make targets for generating
arch-dependent files (e.g., executables) and for arch-independent files
(e.g., manual pages). Currently there is only one file of either type
which gets installed by the make target, but this might change.

9 months agomake distclean: Remove also
Andre Noll [Mon, 20 May 2019 22:09:51 +0000 (00:09 +0200)]
make distclean: Remove also

All derived files should be removed by the distclean target.

9 months agoInstall man pages in compressed form.
Andre Noll [Tue, 21 May 2019 09:54:25 +0000 (11:54 +0200)]
Install man pages in compressed form.

This is generally a good idea since all versions of man(1) support
at least gzip-compressed manual pages.

9 months agoInstall man page in section 6.
Andre Noll [Mon, 20 May 2019 17:09:30 +0000 (19:09 +0200)]
Install man page in section 6.

The manual page of the standard fortune program is part of section 6
(Games Manuals), so the tfortune man page should be installed there
as well rather than in section 1.

11 months agoAvoid duplication in version, README, man page.
Andre Noll [Sun, 17 Feb 2019 11:39:40 +0000 (12:39 +0100)]
Avoid duplication in version, README, man page.

URLs and the email address are currently spread out over multiple
files.  This commit cleans up the mess by defining everything in
Makefile and adjusting other places to use the information from there.
We use the opportunity to add a link to the author's home page. is made generic, i.e., it does not refer to tfortune
any more.

13 months agoFix --basedir completion.
Andre Noll [Sun, 20 Jan 2019 21:01:35 +0000 (22:01 +0100)]
Fix --basedir completion.

Silly braino.

13 months agoUpdate copyright year.
Andre Noll [Sat, 19 Jan 2019 23:17:36 +0000 (00:17 +0100)]
Update copyright year.

13 months agocom_help(): Fix comma placement.
Andre Noll [Sun, 13 May 2018 17:23:33 +0000 (19:23 +0200)]
com_help(): Fix comma placement.

We never want to print a comma at the beginning of the line.

13 months agoepi_iter_new(): Use xrealloc().
Andre Noll [Sun, 13 May 2018 15:27:07 +0000 (17:27 +0200)]
epi_iter_new(): Use xrealloc().

This way we get proper error checking.

13 months agotxt2ast(): Mark iovec structure as const.
Andre Noll [Sun, 13 May 2018 10:51:00 +0000 (12:51 +0200)]
txt2ast(): Mark iovec structure as const.

The function does not modify the fields of "tx".

23 months agoInitial commit. v1.0.0
Andre Noll [Mon, 19 Mar 2018 17:37:28 +0000 (18:37 +0100)]
Initial commit.

Tfortune was maintained in a non-public git repository between 2016-04
and 2018-01. By then it was moved to a dedicated repository, rewritten
to support the tag expression grammar and made scalable by introducing
linear hashing. At the same time command line parsing was switched
to the lopsub library, the command line options were redesigned and
properly documented, and the nifty logo was added.

In 2018-03 tfortune reached version 1.0 and was finally made public. All
commits that led to version 1.0 have been discarded, so this repository
contains only the final result as a single commit.

Many thanks to Effie Symeonidi who gave valuable feedback regarding the
installation instructions.