12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- #include <stdlib.h>
- #include <string.h>
- #include <unistd.h>
- #include <grass/gis.h>
- static char *G__find_etc(const char *name)
- {
- char path[GPATH_MAX];
- const char *pathlist = getenv("GRASS_ADDON_ETC");
- /*
- * reject illegal names
- */
- if (*name == 0 || *name == '.')
- return NULL;
- /*
- * search paths
- */
- if (pathlist) {
- char **dirs = G_tokenize(pathlist, ":");
- char *result = NULL;
- int i;
- for (i = 0; dirs[i]; i++) {
- sprintf(path, "%s/%s", dirs[i], name);
- if (access(path, 0) == 0) {
- result = G_store(path);
- break;
- }
- }
- G_free_tokens(dirs);
- if (result)
- return result;
- }
- /*
- * check application etc dir
- */
- sprintf(path, "%s/etc/%s", G_gisbase(), name);
- if (access(path, 0) == 0)
- return G_store(path);
- return NULL;
- }
- /*!
- * \brief searches for a file from the etc search list in GRASS_ADDON_ETC
- * returns the full path to where the file was found.
- *
- * note:
- * rejects all names that begin with "."
- *
- * \param name file name to look for
- *
- * \return pointer to a string with full path to
- * where file was found, or NULL if not found
- */
- char *G_find_etc(const char *name)
- {
- return G__find_etc(name);
- }
|