From a96111c8026d47147708796091ec7bef216aefd8 Mon Sep 17 00:00:00 2001 From: tlatorre Date: Thu, 7 Mar 2019 14:43:51 -0600 Subject: update code to allow you to run the fit outside of the src directory To enable the fitter to run outside of the src directory, I created a new function open_file() which works exactly like fopen() except that it searches for the file in both the current working directory and the path specified by an environment variable. --- src/util.c | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 src/util.c (limited to 'src/util.c') diff --git a/src/util.c b/src/util.c new file mode 100644 index 0000000..cd39c3f --- /dev/null +++ b/src/util.c @@ -0,0 +1,41 @@ +#include "util.h" +#include /* for access() */ +#include /* for getenv() */ +#include /* for sprintf(), fopen() */ + +/* Equivalent to fopen() but uses find_file() to find the path to the filename. */ +FILE *open_file(const char *filename, const char *mode) +{ + char *path; + + path = find_file(filename); + + if (!path) return NULL; + + return fopen(path,mode); +} + +/* Returns the full path to `filename` by searching the current working + * directory and the path specified by the environment variable SDDM_DATA. + * + * Returns a pointer to the full path on success or NULL if the file isn't + * found. */ +char *find_file(const char *filename) +{ + static char path[256]; + char *dir; + + /* First check in the current working directory. */ + sprintf(path, "%s", filename); + if (access(path, F_OK) == 0) return path; + + /* Now check in the directory specified by the environment variable + * SDDM_DATA. */ + dir = getenv("SDDM_DATA"); + if (dir) { + sprintf(path, "%s/%s", dir,filename); + if (access(path, F_OK) == 0) return path; + } + + return NULL; +} -- cgit