<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
span.Shkpostityyli17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 2.0cm 70.85pt 2.0cm;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="FI" link="#0563C1" vlink="#954F72" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal">Hi,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span lang="EN-US">When I was reading the old bug reports in the OSGeo code sprint this 20 years old one
<a href="https://github.com/MapServer/MapServer/issues/408">https://github.com/MapServer/MapServer/issues/408</a> from year 2003 did not feel rotten at all. And the last comment
<a href="https://github.com/MapServer/MapServer/issues/408#issuecomment-1065080140">
https://github.com/MapServer/MapServer/issues/408#issuecomment-1065080140</a> has received 5 thumbs up within 1 year which shows great user activity by our standards.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">I think that environmental variables may be too strong tool for this purpose. For example, are those who write mapfiles allowed to set env variables in managed environments? Maybe something similar to SYMBOLSET and INCLUDE
 would be easier to use.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">As an example, I found a pretty good bug report that includes a mapfile and data, but for testing the mapfile on my Windows machine I need to make a few edits.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG "PROJ_LIB" "/usr/local/share/proj"<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">                          I am on Windows and my proj is in some other place<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">WMS_ONLINERESOURCE <a href="http://odroid1:5001/">
http://odroid1:5001/</a><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">wms_service_onlineresource <a href="http://odroid1:5001/">
http://odroid1:5001/</a><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">                          I don’t understand the difference between those two, but anyway I run Mapserver at
<a href="http://localhost:8060/...">http://localhost:8060/...</a><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">DATA "./bug-report.xml"<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">                          I prefer to keep data in different place than mapfiles<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">DATA "./data-in-31287"<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">                          Same for this shapefile data<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">What if we could write non-fixed paths and other items into the mapfile like<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">CONFIG "PROJ_LIB" "%proj_lib%"<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">WMS_ONLINERESOURCE "%onlineresource_test%"<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">wms_service_onlineresource "%onlineresource_test%"<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">DATA "%datapath_test%/bug-report.xml"<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">DATA "%datapath_test%/data-in-31287"<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">….<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">MAPVARIABLES "map_variables.txt"<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">END # mapfile<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">The contents of "map_variables.txt"<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">//Some magic<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">proj_lib                                      [value]<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">onlineresource_test                [value]<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">onlineresource_qa                  [value]<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">onlineresourse_production   [value]<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">datapath_test                           [value]<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">datapath_qa                             [value]<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">datapath_production             [value]<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">symbolset_topomap               [value]<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">symbolset_citymap                 [value]<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">etc.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">A difference to INCLUDE is that while the whole include file is slipped inside the mapfile the variable file could be a dictionary. That would allow forwarding the mapfile from test to qa to production easily. And when
 the IP address of test servers change an edit in one place would be enough. It would still be possible to use separate "map_variables_testing.txt" for testing if it feels better.
<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">I admit that there are alternative scenarios via INCLUDE or config file or environmental variables.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">-Jukka Rahkonen-<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
</div>
</body>
</html>