#include #include "search_path.h" #include "options.h" #include #ifdef HAVE_MS_C_RUNTIME #include #endif static vector g_importPaths; void set_import_paths(const vector& importPaths) { g_importPaths = importPaths; } char* find_import_file(const char* given) { string expected = given; int N = expected.length(); for (int i=0; i& paths = g_importPaths; for (vector::iterator it=paths.begin(); it!=paths.end(); it++) { string f = *it; if (f.size() == 0) { f = "."; f += OS_PATH_SEPARATOR; } else if (f[f.size()-1] != OS_PATH_SEPARATOR) { f += OS_PATH_SEPARATOR; } f.append(expected); #ifdef HAVE_MS_C_RUNTIME /* check that the file exists and is not write-only */ if (0 == _access(f.c_str(), 0) && /* mode 0=exist */ 0 == _access(f.c_str(), 4) ) { /* mode 4=readable */ #else if (0 == access(f.c_str(), R_OK)) { #endif return strdup(f.c_str()); } } return NULL; }