summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPatrick McDermott <patrick.mcdermott@libiquity.com>2021-03-16 09:33:07 (EDT)
committer Patrick McDermott <patrick.mcdermott@libiquity.com>2021-03-16 09:48:11 (EDT)
commitaeb3d25983f4912a00352c82e983da347488fedf (patch)
tree36b348f210c74bf134dafe9507bb17e9a9b3b14e /src
parentc1c166ec5498a9f07b0ab6e443469c65849468b3 (diff)
downloaddodge-balls-aeb3d25983f4912a00352c82e983da347488fedf.zip
dodge-balls-aeb3d25983f4912a00352c82e983da347488fedf.tar.gz
dodge-balls-aeb3d25983f4912a00352c82e983da347488fedf.tar.bz2
Find games either in build dir or installed
Diffstat (limited to 'src')
-rw-r--r--src/game.c4
-rw-r--r--src/game.h2
-rw-r--r--src/main.c21
3 files changed, 20 insertions, 7 deletions
diff --git a/src/game.c b/src/game.c
index 001fcca..2bf99c5 100644
--- a/src/game.c
+++ b/src/game.c
@@ -30,13 +30,13 @@ _db_game_is_dir(const struct dirent *entry)
}
int
-db_games_find(char ***games)
+db_games_find(const char *games_dir, char ***games)
{
struct dirent **entries;
int n;
int i;
- n = scandir("games", &entries, &_db_game_is_dir, alphasort);
+ n = scandir(games_dir, &entries, &_db_game_is_dir, alphasort);
*games = calloc(n, sizeof(**games));
if (*games == NULL) {
diff --git a/src/game.h b/src/game.h
index 447d56b..f49c7e8 100644
--- a/src/game.h
+++ b/src/game.h
@@ -20,6 +20,6 @@
#ifndef DB_GAME_H_
#define DB_GAME_H_
-int db_games_find(char ***games);
+int db_games_find(const char *games_dir, char ***games);
#endif /* DB_GAME_H_ */
diff --git a/src/main.c b/src/main.c
index 64d8e3d..344cdad 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1,15 +1,28 @@
+#include <libgen.h>
#include <stdio.h>
#include <stdlib.h>
+#include <string.h>
#include "game.h"
int
main(int argc, char *argv[])
{
- char **games;
- int n;
- int i;
+ char *program_dir;
+ const char *games_dir;
+ char **games;
+ int n;
+ int i;
- n = db_games_find(&games);
+ program_dir = realpath(dirname(argv[0]), NULL);
+ if (strcmp(program_dir, ABS_BUILDDIR) == 0) {
+ /* Running in place */
+ games_dir = ABS_BUILDDIR "/games";
+ } else {
+ /* Running from installation */
+ games_dir = GAMESDIR;
+ }
+ free(program_dir);
+ n = db_games_find(games_dir, &games);
printf("%d games:\n", n);
for (i = 0; i < n; ++i) {
printf("\t%s\n", games[i]);