From f3ddf1917f97b484b137a9f91bc8363d1a459784 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Lemaire?= Date: Sun, 9 Jun 2013 14:07:45 +0200 Subject: [PATCH] Added data system to detect if run in good path --- src/rendering/main.c | 7 +++++++ src/rendering/tools/data.c | 34 ++++++++++++++++++++++++++++++++++ src/rendering/tools/data.h | 10 ++++++++++ 3 files changed, 51 insertions(+) create mode 100644 src/rendering/tools/data.c create mode 100644 src/rendering/tools/data.h diff --git a/src/rendering/main.c b/src/rendering/main.c index 970e351..3006430 100644 --- a/src/rendering/main.c +++ b/src/rendering/main.c @@ -2,6 +2,7 @@ #include #include "auto.h" +#include "tools/data.h" #include "system.h" #include "scenery.h" #include "render.h" @@ -13,6 +14,12 @@ void paysagesInit() { systemInit(); + if (!dataInit()) + { + /* TODO Add error callback (for interface) */ + fprintf(stderr, "ERROR : Can't locate data files.\n"); + exit(1); + } openclInit(); sceneryInit(); diff --git a/src/rendering/tools/data.c b/src/rendering/tools/data.c new file mode 100644 index 0000000..859abe7 --- /dev/null +++ b/src/rendering/tools/data.c @@ -0,0 +1,34 @@ +#include "data.h" + +#include +#include +#include + +static const char* _datapath = NULL; + +static int _tryDataPath(const char* path) +{ + char* buffer; + + buffer = malloc(sizeof (char) * (strlen(path) + 30)); + strcpy(buffer, path); + strcat(buffer, "/.paysages_data"); + + FILE* f = fopen(buffer, "r"); + free(buffer); + if (f) + { + _datapath = path; + fclose(f); + return 1; + } + else + { + return 0; + } +} + +int dataInit() +{ + return _tryDataPath("./data"); +} diff --git a/src/rendering/tools/data.h b/src/rendering/tools/data.h new file mode 100644 index 0000000..f5c77b1 --- /dev/null +++ b/src/rendering/tools/data.h @@ -0,0 +1,10 @@ +#ifndef _PAYSAGES_TOOLS_DATA_H_ +#define _PAYSAGES_TOOLS_DATA_H_ + +/* + * Data directory management. + */ + +int dataInit(); + +#endif