Initial commit
[fillmore] / src / marina / AppDirs.vala
diff --git a/src/marina/AppDirs.vala b/src/marina/AppDirs.vala
new file mode 100644 (file)
index 0000000..04d2248
--- /dev/null
@@ -0,0 +1,44 @@
+/* Copyright 2009-2010 Yorba Foundation
+ *
+ * This software is licensed under the GNU LGPL (version 2.1 or later).
+ * See the COPYING file in this distribution. 
+ */
+
+extern const string _PREFIX;
+
+
+public class AppDirs {
+    static File exec_dir;
+    static string program_name;
+
+    public static void init(string arg0, string program_name) {
+        File exec_file = File.new_for_path(Environment.find_program_in_path(arg0));
+        exec_dir = exec_file.get_parent();
+        AppDirs.program_name = program_name;
+    }
+
+    public static void terminate() {
+    }
+
+    public static File get_exec_dir() {
+        return exec_dir;
+    }
+
+    public static File get_resources_dir() {
+        File exec_dir = get_exec_dir();
+        File install_dir = get_install_dir();
+        File return_value;
+        if (install_dir != null) {
+            return_value = install_dir.get_child("share").get_child(program_name);
+        } else {    // running locally
+            return_value = exec_dir;
+        }
+        return return_value.get_child("resources");
+    }
+
+    static File? get_install_dir() {
+        File prefix_dir = File.new_for_path(_PREFIX);
+        return exec_dir.has_prefix(prefix_dir) ? prefix_dir : null;
+    }
+}
+