summaryrefslogtreecommitdiff
path: root/navit/xmlconfig.c
diff options
context:
space:
mode:
authormartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>2010-12-22 11:35:36 +0000
committermartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>2010-12-22 11:35:36 +0000
commit6c420467c062e60e4679299eece4767e9778f8cc (patch)
tree90d9a65e0e135f49a132181a596275dabb4bfd16 /navit/xmlconfig.c
parent5cf7f1c8257df6cbf4142af4a64716294c706e0e (diff)
downloadnavit-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.c23
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;