JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
Only use ./data if it contains b_variotions.png
authorJason Woofenden <jason@jasonwoof.com>
Sun, 22 Apr 2012 20:22:32 +0000 (16:22 -0400)
committerJason Woofenden <jason@jasonwoof.com>
Sun, 22 Apr 2012 20:22:32 +0000 (16:22 -0400)
file.c

diff --git a/file.c b/file.c
index 3a77ffd..5ce183f 100644 (file)
--- a/file.c
+++ b/file.c
@@ -91,11 +91,23 @@ static bool
 is_dir(char *dirname)
 {
        struct stat buf;
 is_dir(char *dirname)
 {
        struct stat buf;
-       stat(dirname, &buf);
+       if(stat(dirname, &buf)) {
+               return false;
+       }
        return S_ISDIR(buf.st_mode);
 }
 
 static bool
        return S_ISDIR(buf.st_mode);
 }
 
 static bool
+is_file(char *dirname)
+{
+       struct stat buf;
+       if(stat(dirname, &buf)) {
+               return false;
+       }
+       return S_ISREG(buf.st_mode);
+}
+
+static bool
 find_data_dir(void)
 {
        int i;
 find_data_dir(void)
 {
        int i;
@@ -108,7 +120,11 @@ find_data_dir(void)
        for(i=0; i<3; i++) {
                if(!data_options[i]) continue;
                g_data_dir = strdup(data_options[i]);
        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");
        }
 
        fprintf(stderr, "Can't find VoR data! Tried:\n");