diff options
author | Patrick McDermott <patrick.mcdermott@libiquity.com> | 2021-03-15 17:08:02 (EDT) |
---|---|---|
committer | Patrick McDermott <patrick.mcdermott@libiquity.com> | 2021-03-15 17:08:02 (EDT) |
commit | 6ab7e6951d99c25656dde1bd1928fc12b938a0ff (patch) | |
tree | 66086195e58315bbfddfb3120735d1ba9e0dc6b8 /src | |
parent | ac3ffa95e1e6a529cbe08a9f134b1729ea40c213 (diff) | |
download | dodge-balls-6ab7e6951d99c25656dde1bd1928fc12b938a0ff.zip dodge-balls-6ab7e6951d99c25656dde1bd1928fc12b938a0ff.tar.gz dodge-balls-6ab7e6951d99c25656dde1bd1928fc12b938a0ff.tar.bz2 |
db_games_find(): New function
Diffstat (limited to 'src')
-rw-r--r-- | src/game.c | 55 | ||||
-rw-r--r-- | src/game.h | 25 | ||||
-rw-r--r-- | src/local.mk | 2 | ||||
-rw-r--r-- | src/main.c | 13 |
4 files changed, 94 insertions, 1 deletions
diff --git a/src/game.c b/src/game.c new file mode 100644 index 0000000..001fcca --- /dev/null +++ b/src/game.c @@ -0,0 +1,55 @@ +/* + * Copyright (C) 2021 P. J. McDermott + * + * This file is part of Dodge Balls + * + * Dodge Balls 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. + * + * Dodge Balls 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 Dodge Balls. If not, see <http://www.gnu.org/licenses/>. + */ + +#include <dirent.h> +#include <stdlib.h> +#include <string.h> +#include "game.h" +#include "output.h" + +static int +_db_game_is_dir(const struct dirent *entry) +{ + return (entry->d_type == DT_DIR && entry->d_name[0] != '.'); +} + +int +db_games_find(char ***games) +{ + struct dirent **entries; + int n; + int i; + + n = scandir("games", &entries, &_db_game_is_dir, alphasort); + + *games = calloc(n, sizeof(**games)); + if (*games == NULL) { + db_err("Failed to allocate memory"); + return -1; + } + + for (i = 0; i < n; ++i) { + (*games)[i] = strdup(entries[i]->d_name); + free(entries[i]); + } + + free(entries); + + return n; +} diff --git a/src/game.h b/src/game.h new file mode 100644 index 0000000..447d56b --- /dev/null +++ b/src/game.h @@ -0,0 +1,25 @@ +/* + * Copyright (C) 2021 P. J. McDermott + * + * This file is part of Dodge Balls + * + * Dodge Balls 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. + * + * Dodge Balls 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 Dodge Balls. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef DB_GAME_H_ +#define DB_GAME_H_ + +int db_games_find(char ***games); + +#endif /* DB_GAME_H_ */ diff --git a/src/local.mk b/src/local.mk index 9e51a3d..196ae0c 100644 --- a/src/local.mk +++ b/src/local.mk @@ -1,4 +1,6 @@ dodge_balls_SOURCES += \ + %reldir%/game.c \ + %reldir%/game.h \ %reldir%/main.c \ %reldir%/output.c \ %reldir%/output.h \ @@ -1,9 +1,20 @@ #include <stdio.h> #include <stdlib.h> +#include "game.h" int main(int argc, char *argv[]) { - puts("Hello, world!"); + char **games; + int n; + int i; + + n = db_games_find(&games); + printf("%d games:\n", n); + for (i = 0; i < n; ++i) { + printf("\t%s\n", games[i]); + free(games[i]); + } + free(games); return EXIT_SUCCESS; } |