From aeb3d25983f4912a00352c82e983da347488fedf Mon Sep 17 00:00:00 2001 From: Patrick McDermott Date: Tue, 16 Mar 2021 09:33:07 -0400 Subject: Find games either in build dir or installed --- (limited to 'src') 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 #include #include +#include #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]); -- cgit v0.9.1