Fall back to system-wide epigram directory.
authorAndre Noll <maan@tuebingen.mpg.de>
Sun, 16 Jun 2019 11:46:45 +0000 (13:46 +0200)
committerAndre Noll <maan@tuebingen.mpg.de>
Wed, 19 Jun 2019 09:33:08 +0000 (11:33 +0200)
If the per-user directory can not be opened, we currently print an
error message and exit. As pointed out by Adam Borowski, this is not
especially user-friendly.

This commit teaches tfortune to look in a second, system-wide location
in this case.  This location can be controlled with the --datadir
option of configure. The man page is updated accordingly.

Makefile
config.mak.in
tfortune.c
tfortune.suite.m4

index 5ad483b..d9f3197 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -99,6 +99,7 @@ version.c:
 index.html tfortune.suite: %: %.m4
        $(call SAY, M4 $<)
        $(M4) -D "AUTHOR=$(AUTHOR)" -D "COPYRIGHT_YEAR=$(COPYRIGHT_YEAR)" \
+               -D "DATADIR=$(datadir)" \
                -D "PACKAGE=$(PACKAGE)" \
                -D "SLOGAN=$(SLOGAN)" \
                -D "EMAIL=$(EMAIL)" \
@@ -150,6 +151,7 @@ TF_CPPFLAGS += -DCC_VERSION='"$(cc_version)"'
 TF_CPPFLAGS += -DUNAME_RS='"$(uname_rs)"'
 TF_CPPFLAGS += -DLICENSE='"$(LICENSE)"'
 TF_CPPFLAGS += -DLICENSE_URL='"$(LICENSE_URL)"'
+TF_CPPFLAGS += -DDATADIR='"$(datadir)"'
 TF_CPPFLAGS += -I/usr/local/include
 
 TF_CFLAGS += -g
index 829f420..b6468b4 100644 (file)
@@ -3,9 +3,9 @@
 prefix := @prefix@
 exec_prefix := @exec_prefix@
 
-# These two use prefix and exec_prefix
 bindir := @bindir@
 datarootdir := @datarootdir@
+datadir := @datadir@
 
 FLEX := @FLEX@
 BISON := @BISON@
index 02e54ea..e3eef04 100644 (file)
@@ -302,9 +302,16 @@ static char *get_basedir(void)
 static char *get_epidir(void)
 {
        char *basedir, *epidir;
+       struct stat s;
+
        basedir = get_basedir();
        xasprintf(&epidir, "%s/epigrams", basedir);
        free(basedir);
+       if (!OPT_GIVEN(TFORTUNE, BASEDIR) && stat(epidir, &s) < 0) {
+               free(epidir);
+               epidir = xstrdup(DATADIR "/tfortunes/epigrams");
+               INFO_LOG("falling back to system-wide epidir %s\n", epidir);
+       }
        return epidir;
 }
 
index ce0324a..dc8bae9 100644 (file)
@@ -65,6 +65,10 @@ caption = Subcommands
                        Epigrams are expected in the "epigrams" subdirectory of the base
                        directory while tag expressions are expected to be stored below
                        "expressions".
+
+                       If the option is not given, and the per-user epigram directory does
+                       not exist, the system-wide default DATADIR() is tried. There is no
+                       such fallback for tag expressions, though.
                [/help]
 
 [subcommand compgen]