X-Git-Url: https://jasonwoof.com/gitweb/?p=vor.git;a=blobdiff_plain;f=file.c;h=efd08e5a0f23ac78f9444312349de8779c8ce4d8;hp=1e02c8eace6d47dad5c96f5d0e0bffd281f534d8;hb=HEAD;hpb=31a00c721be0b569bc554069cc0a3eb2864eb61f diff --git a/file.c b/file.c index 1e02c8e..5f6204d 100644 --- a/file.c +++ b/file.c @@ -26,16 +26,49 @@ #include #include "common.h" -#include "config.h" +#include "vorconfig.h" #include "file.h" +#ifdef WIN32 + +#define DATA_DIR "data\\" + +char * +add_data_path(char *filename) +{ + char *s; + if(!filename) return filename; + s = malloc(sizeof(DATA_DIR)+strlen(filename)); + if(s) { + strcpy(s, DATA_DIR); + strcpy(s+sizeof(DATA_DIR)-1, filename); + } + return s; +} + +bool +find_files(void) +{ + return true; +} + +FILE * +open_score_file(char *mode) +{ + return fopen("scores", mode); +} + + +#else /* !WIN32 */ + + char *g_data_dir; char *g_score_file; static char * add_path(char *path, char *file) { - char *r, *s; + char *s; size_t plen, flen; if(!path || !file) return NULL; @@ -44,7 +77,7 @@ add_path(char *path, char *file) s = malloc(2+plen+flen); if(!s) return NULL; memcpy(s, path, plen); - s[plen] = PATH_SEPARATOR; + s[plen] = '/'; memcpy(s+plen+1, file, flen+1); return s; } @@ -55,30 +88,24 @@ add_data_path(char *filename) return add_path(g_data_dir, filename); } -#ifdef WIN32 - -static bool -find_data_dir(void) -{ - g_data_dir = "."; - return true; -} - static bool -find_score_file(void) +is_dir(char *dirname) { - g_score_file = "scores"; - return true; + struct stat buf; + if(stat(dirname, &buf)) { + return false; + } + return S_ISDIR(buf.st_mode); } -#else /* !WIN32 */ - static bool -is_dir(char *dirname) +is_file(char *filename) { struct stat buf; - stat(dirname, &buf); - return S_ISDIR(buf.st_mode); + if(stat(filename, &buf)) { + return false; + } + return S_ISREG(buf.st_mode); } static bool @@ -94,12 +121,16 @@ find_data_dir(void) for(i=0; i<3; i++) { if(!data_options[i]) continue; g_data_dir = strdup(data_options[i]); - if(is_dir(g_data_dir)) return true; + if(is_dir(g_data_dir)) { + char *s = add_path(g_data_dir, "b_variations.png"); + if(s) if(is_file(s)) + return true; + } } fprintf(stderr, "Can't find VoR data! Tried:\n"); for(i=0; i<3; i++) { - fprintf(stderr, "\t%s\n", data_options[i]); + if(data_options[i]) fprintf(stderr, "\t%s\n", data_options[i]); } return false; } @@ -120,8 +151,6 @@ find_score_file(void) } else return false; } -#endif /* !WIN32 */ - bool find_files(void) { @@ -134,3 +163,5 @@ open_score_file(char *mode) if(!g_score_file) return NULL; return fopen(g_score_file, mode); } + +#endif /* !WIN32 */