diff options
author | martin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220> | 2010-12-22 11:35:36 +0000 |
---|---|---|
committer | martin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220> | 2010-12-22 11:35:36 +0000 |
commit | 6c420467c062e60e4679299eece4767e9778f8cc (patch) | |
tree | 90d9a65e0e135f49a132181a596275dabb4bfd16 /navit/xmlconfig.c | |
parent | 5cf7f1c8257df6cbf4142af4a64716294c706e0e (diff) | |
download | navit-svn-6c420467c062e60e4679299eece4767e9778f8cc.tar.gz |
Add:Core:Support for using Env-Variables and in xi:included files
git-svn-id: http://svn.code.sf.net/p/navit/code/trunk/navit@3812 ffa7fe5e-494d-0410-b361-a75ebd5db220
Diffstat (limited to 'navit/xmlconfig.c')
-rw-r--r-- | navit/xmlconfig.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/navit/xmlconfig.c b/navit/xmlconfig.c index 0fa97cf5..9a4e0332 100644 --- a/navit/xmlconfig.c +++ b/navit/xmlconfig.c @@ -911,6 +911,7 @@ parse_file(struct xmldocument *document, xmlerror **error) gsize len; gint line, chr; gboolean result; + char *xmldir,*newxmldir,*xmlfile,*newxmlfile,*sep; dbg(1,"enter filename='%s'\n", document->href); #if GLIB_MAJOR_VERSION == 2 && GLIB_MINOR_VERSION < 12 @@ -922,6 +923,18 @@ parse_file(struct xmldocument *document, xmlerror **error) g_markup_parse_context_free (context); return FALSE; } + xmldir=getenv("XMLDIR"); + xmlfile=getenv("XMLFILE"); + newxmlfile=g_strdup(document->href); + newxmldir=g_strdup(document->href); + if (sep=strrchr(newxmldir,'/')) + *sep='\0'; + else { + g_free(newxmldir); + newxmldir=g_strdup("."); + } + setenv("XMLDIR",newxmldir,1); + setenv("XMLFILE",newxmlfile,1); document->active=document->xpointer ? 0:1; document->first=NULL; document->last=NULL; @@ -934,6 +947,16 @@ parse_file(struct xmldocument *document, xmlerror **error) } g_markup_parse_context_free (context); g_free (contents); + if (xmldir) + setenv("XMLDIR",xmldir,1); + else + unsetenv("XMLDIR"); + if (xmlfile) + setenv("XMLFILE",xmlfile,1); + else + unsetenv("XMLFILE"); + g_free(newxmldir); + g_free(newxmlfile); dbg(1,"return %d\n", result); return result; |