summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--configure.ac3
-rw-r--r--src/dirs.c47
-rw-r--r--src/dirs.h30
-rw-r--r--src/local.mk2
-rw-r--r--src/main.c4
5 files changed, 85 insertions, 1 deletions
diff --git a/configure.ac b/configure.ac
index a506671..b96c677 100644
--- a/configure.ac
+++ b/configure.ac
@@ -38,7 +38,8 @@ test -d "${srcdir}/.git" || CFLAGS="${save_CFLAGS}"
funcs_missing=false
AC_CHECK_FUNCS(
[\
- calloc free malloc memcpy rand srand strlen
+ calloc dirname free malloc memcpy rand realpath srand strcmp \
+ strlen
],
[],
[funcs_missing=true])
diff --git a/src/dirs.c b/src/dirs.c
new file mode 100644
index 0000000..66ac0ec
--- /dev/null
+++ b/src/dirs.c
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2021 P. J. McDermott
+ *
+ * This file is part of Maze Fight
+ *
+ * Maze Fight is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Maze Fight is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Maze Fight. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <libgen.h>
+#include <stdlib.h>
+#include <string.h>
+#include "dirs.h"
+
+static const char *_mf_fonts_dir;
+
+void
+mf_find_dirs(char *program_name)
+{
+ char *program_dir;
+
+ program_dir = realpath(dirname(program_name), NULL);
+ if (strcmp(program_dir, ABS_BUILDDIR) == 0) {
+ /* Running in place */
+ _mf_fonts_dir = ABS_BUILDDIR "/fonts/FifteenTwenty/src";
+ } else {
+ /* Running from installation */
+ _mf_fonts_dir = FONTSDIR;
+ }
+ free(program_dir);
+}
+
+const char *
+mf_get_fonts_dir(void)
+{
+ return _mf_fonts_dir;
+}
diff --git a/src/dirs.h b/src/dirs.h
new file mode 100644
index 0000000..1159ed2
--- /dev/null
+++ b/src/dirs.h
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2021 P. J. McDermott
+ *
+ * This file is part of Maze Fight
+ *
+ * Maze Fight is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Maze Fight is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Maze Fight. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef MF_DIRS_H_
+#define MF_DIRS_H_
+
+void
+mf_find_dirs(char *program_name);
+
+const char *
+mf_get_fonts_dir(void)
+ __attribute__((__pure__));
+
+#endif /* MF_DIRS_H_ */
diff --git a/src/local.mk b/src/local.mk
index c72cb44..891139c 100644
--- a/src/local.mk
+++ b/src/local.mk
@@ -1,5 +1,7 @@
mazefight_SOURCES += \
%reldir%/defs.h \
+ %reldir%/dirs.c \
+ %reldir%/dirs.h \
%reldir%/main.c \
%reldir%/maze.c \
%reldir%/maze.h \
diff --git a/src/main.c b/src/main.c
index 648bac8..2180655 100644
--- a/src/main.c
+++ b/src/main.c
@@ -21,6 +21,7 @@
#include <SDL_ttf.h>
#include <stdlib.h>
#include "defs.h"
+#include "dirs.h"
static SDL_Window *_mf_window;
static SDL_Renderer *_mf_renderer;
@@ -86,6 +87,9 @@ int
main(int argc __attribute__((__unused__)),
char *argv[] __attribute__((__unused__)))
{
+ /* Find data directories */
+ mf_find_dirs(argv[0]);
+
/* Initialize SDL libraries */
if (_mf_init() < 0) {
return EXIT_FAILURE;