<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 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
        {mso-style-priority:99;
        mso-style-link:"Plain Text Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
        {mso-style-priority:99;
        mso-style-link:"Balloon Text Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:8.0pt;
        font-family:"Tahoma","sans-serif";}
span.PlainTextChar
        {mso-style-name:"Plain Text Char";
        mso-style-priority:99;
        mso-style-link:"Plain Text";
        font-family:"Calibri","sans-serif";}
span.BalloonTextChar
        {mso-style-name:"Balloon Text Char";
        mso-style-priority:99;
        mso-style-link:"Balloon Text";
        font-family:"Tahoma","sans-serif";}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 129.75pt 1.0in 129.7pt;}
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="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoPlainText">Steve,<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Previously I had thought that something like your idea would be useful not necessarily as a way of managing different MapServer versions, but instead as a way to manage differences different environments such as a field laptop vs production
 server.<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">For example:<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">MAP<o:p></o:p></p>
<p class="MsoPlainText">                #set the version near the top of the mapfile.<o:p></o:p></p>
<p class="MsoPlainText" style="text-indent:.5in">VERSION  Laptop<o:p></o:p></p>
<p class="MsoPlainText">                #VERSION ProductionServer<o:p></o:p></p>
<p class="MsoPlainText" style="margin-left:.5in">…<o:p></o:p></p>
<p class="MsoPlainText" style="margin-left:.5in">IF VERSION Laptop<o:p></o:p></p>
<p class="MsoPlainText" style="margin-left:.5in">                USE shapefiles as the data source<o:p></o:p></p>
<p class="MsoPlainText" style="margin-left:.5in">END IF<o:p></o:p></p>
<p class="MsoPlainText" style="margin-left:.5in">IF VERSION ProductionServer<o:p></o:p></p>
<p class="MsoPlainText" style="margin-left:.5in">                User PostGIS as the data source<o:p></o:p></p>
<p class="MsoPlainText" style="margin-left:.5in">END IF<o:p></o:p></p>
<p class="MsoPlainText" style="margin-left:.5in"><o:p> </o:p></p>
<p class="MsoPlainText">I think your idea is be better, but I thought I would float this idea to see if you think it would be useful.<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Mark Volz, GISP<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">> </p>
<p class="MsoPlainText">> ----------------------------------------------------------------------</p>
<p class="MsoPlainText">> </p>
<p class="MsoPlainText">> Message: 1</p>
<p class="MsoPlainText">> Date: Sun, 22 Dec 2013 17:36:41 -0500</p>
<p class="MsoPlainText">> From: Stephen Woodbridge <<a href="mailto:woodbri@swoodbridge.com"><span style="color:windowtext;text-decoration:none">woodbri@swoodbridge.com</span></a>></p>
<p class="MsoPlainText">> To: mapserver-dev <<a href="mailto:mapserver-dev@lists.osgeo.org"><span style="color:windowtext;text-decoration:none">mapserver-dev@lists.osgeo.org</span></a>></p>
<p class="MsoPlainText">> Subject: [mapserver-dev] Version conditionals in mapfile?</p>
<p class="MsoPlainText">> Message-ID: <<a href="mailto:52B76979.6050807@swoodbridge.com"><span style="color:windowtext;text-decoration:none">52B76979.6050807@swoodbridge.com</span></a>></p>
<p class="MsoPlainText">> Content-Type: text/plain; charset=ISO-8859-1; format=flowed</p>
<p class="MsoPlainText">> </p>
<p class="MsoPlainText">> Hi all,</p>
<p class="MsoPlainText">> </p>
<p class="MsoPlainText">> I want to start a discussion on the possibility of adding version conditionals to</p>
<p class="MsoPlainText">> mapfile to make it easier to support a single mapfile across multiple versions</p>
<p class="MsoPlainText">> of mapserver.</p>
<p class="MsoPlainText">> </p>
<p class="MsoPlainText">> The idea would be to add some syntax that would allow something like:</p>
<p class="MsoPlainText">> </p>
<p class="MsoPlainText">> IF VERSION <op> <value></p>
<p class="MsoPlainText">>    ... use if true</p>
<p class="MsoPlainText">> ENDIF</p>
<p class="MsoPlainText">> </p>
<p class="MsoPlainText">> or may be in short hand</p>
<p class="MsoPlainText">> </p>
<p class="MsoPlainText">> VERSION<op>(<value>) ... use if true to end of line or VERSION <op></p>
<p class="MsoPlainText">> <value>? ... use if true to end of line</p>
<p class="MsoPlainText">> </p>
<p class="MsoPlainText">> where <op> could be like GT|GE|EQ|LE|LT</p>
<p class="MsoPlainText">> and <value> could be VVvv or VV.vv where VV is the major version and vv is</p>
<p class="MsoPlainText">> the minor version and patch should not impact mapfile syntax so we could</p>
<p class="MsoPlainText">> ignore them.</p>
<p class="MsoPlainText">> </p>
<p class="MsoPlainText">> Yes, this could be done using the C preprocessor or a script, but that does not</p>
<p class="MsoPlainText">> solve the use case of having a single file that can be deployed and work for</p>
<p class="MsoPlainText">> various versions of mapserver.</p>
<p class="MsoPlainText">> </p>
<p class="MsoPlainText">> In a production environment, you might have multiple mapfiles and multiple</p>
<p class="MsoPlainText">> versions of mapserver. This would greatly simplify maintaining the</p>
<p class="MsoPlainText">> production server or migrating applications between servers that might have</p>
<p class="MsoPlainText">> different versions of mapserver installed.</p>
<p class="MsoPlainText">> </p>
<p class="MsoPlainText">> Why do I care? I'm in the process of upgrading a bunch of servers and I'm</p>
<p class="MsoPlainText">> annoyed by the fact that I have 3 versions of mapserver that I need to</p>
<p class="MsoPlainText">> support and I'm having to make three separate mapfiles that are 99% the</p>
<p class="MsoPlainText">> same. Oh and this has the ripple effect that if you name these with a version</p>
<p class="MsoPlainText">> number in the mapfile name, than all the applications that reference the</p>
<p class="MsoPlainText">> mapfile have to know what version they are requesting maps from so they</p>
<p class="MsoPlainText">> can specify the correct version named mapfile.</p>
<p class="MsoPlainText">> </p>
<p class="MsoPlainText">> Discussion:</p>
<p class="MsoPlainText">> </p>
<p class="MsoPlainText">> Does this sound like something that would be useful to our users?</p>
<p class="MsoPlainText">> </p>
<p class="MsoPlainText">> On the surface, this seems like it should be fairly easy to implemented in the</p>
<p class="MsoPlainText">> parser, but I could be wrong.</p>
<p class="MsoPlainText">> </p>
<p class="MsoPlainText">> Any thoughts on this?</p>
<p class="MsoPlainText">> </p>
<p class="MsoPlainText">> -Steve W</p>
<p class="MsoPlainText">> </p>
<p class="MsoPlainText">> </p>
</div>
</body>
</html>