<div dir="ltr">So no MapServer specific implementation, rather just leverage straight CPL calls.<div><br></div><div>What about potentially storing the config (structure or potentially json object) as a global var and then write a few functions to wrap access to it? So it's not hung off a mapObj.</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, Apr 3, 2021 at 10:05 AM Even Rouault <<a href="mailto:even.rouault@spatialys.com">even.rouault@spatialys.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
  
    
  
  <div>
    <br>
    <blockquote type="cite">
      <div dir="ltr">
        <div dir="ltr">
          <div>> Since MS 8.0 will include nlohmann/json, perhaps
            consider a JSON configuration file rather than our
            historical mapfile-like syntax?</div>
        </div>
        <div>We could, I had thought about it... JSON allows the use of
          other tools/validators and nlohmann is dead simple. That said,
          I don't know what the tradeoffs would be in terms of making
          the JSON configuration object available for use. Could it be
          hung off the mapObj? Would we have to cpp-ify everything?</div>
      </div>
    </blockquote>
    You could keep the parsing of the json as an implementation detail
    in the file that parses it and fill a C compatible structure.<br>
    <blockquote type="cite">
      <div dir="ltr">
        <div><br>
        </div>
        <div>>  Regarding using putenv()</div>
        <div>Need to review the exact use of each environment variable
          to see how they are leveraged. Ideally it wouldn't be
          necessary. Where is 
          CPLSetConfigOption() storing the key/value pairs?</div>
      </div>
    </blockquote>
    In a global variable similar to char** environ :
<a href="https://github.com/OSGeo/gdal/blob/bf5289fa6af721cd1ac6a9ff6f215e6340ac4222/gdal/port/cpl_conv.cpp#L1861" target="_blank">https://github.com/OSGeo/gdal/blob/bf5289fa6af721cd1ac6a9ff6f215e6340ac4222/gdal/port/cpl_conv.cpp#L1861</a><br>
    <blockquote type="cite">
      <div dir="ltr"><br>
        <div class="gmail_quote">
          <div dir="ltr" class="gmail_attr">On Sat, Apr 3, 2021 at 6:37
            AM Even Rouault <<a href="mailto:even.rouault@spatialys.com" target="_blank">even.rouault@spatialys.com</a>>
            wrote:<br>
          </div>
          <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
            <div>
              <p>Steve,</p>
              <p>Excellent initiative. A few remarks:</p>
              <p>- Why not calling this a configuration file ? I believe
                it would be slightly clearer than context</p>
              <p>- Since MS 8.0 will include nlohmann/json, perhaps
                consider a JSON configuration file rather than our
                historical mapfile-like syntax ? This would allow to
                develop a json-schema for validation. Your example would
                become:<br>
              </p>
              <p>{<br>
              </p>
              <p>  "env": {</p>
              <p>    "#comment": "put some comment here"<br>
              </p>
              <p>    "<code>MS_MAP_NO_PATH": "true"<br>
                </code></p>
              <p>  },</p>
              <p>  "maps": {<br>
              </p>
              <p>   "<code>MAP1": "/opt/mapserver/myapp/map1.map",</code></p>
              <p><code>  "MAP2": "</code><code>/opt/mapserver/myapp/map2.map"</code></p>
              <p><code></code></p>
              <p>  }</p>
              <p>}</p>
              <p>- Regarding using putenv(), I'm not sure this is a good
                idea in FastCGI mode, according to what is mentioned in
                <a href="http://web.mit.edu/wwwdev/man/man3/FCGI_Accept.3" target="_blank">http://web.mit.edu/wwwdev/man/man3/FCGI_Accept.3</a>. 
                Using GDAL CPLSetConfigOption() instead of putenv() and
                CPLGetConfigOption() instead of getenv() would avoid
                messing with the "environ" global variable. (unless I'm
                wrong our CI doesn't test at all CGI / FastCGI ... I'll
                try to look at adding some testing of this)</p>
              <p>Even</p>
              <p><br>
              </p>
              <div>Le 02/04/2021 à 23:19, Steve Lime a écrit :<br>
              </div>
              <blockquote type="cite">
                <div dir="ltr">Hi all: Just thinking about ways to make
                  configuring MapServer easier for information you can't
                  or don't want to manage in mapfiles. Currently that is
                  done via environment variables. Another option would
                  be the use of config/ini-type file. I've started a
                  draft RFC for something I'll call a MapServer context
                  file for the moment. See <a href="https://github.com/sdlime/mapserver/wiki/MapServer-8.0-Context-File" target="_blank">https://github.com/sdlime/mapserver/wiki/MapServer-8.0-Context-File</a>
                  for more information. Just floating an idea at this
                  point...
                  <div><br>
                  </div>
                  <div>--Steve</div>
                </div>
                <br>
                <fieldset></fieldset>
                <pre>_______________________________________________
mapserver-dev mailing list
<a href="mailto:mapserver-dev@lists.osgeo.org" target="_blank">mapserver-dev@lists.osgeo.org</a>
<a href="https://lists.osgeo.org/mailman/listinfo/mapserver-dev" target="_blank">https://lists.osgeo.org/mailman/listinfo/mapserver-dev</a>
</pre>
              </blockquote>
              <pre cols="72">-- 
<a href="http://www.spatialys.com" target="_blank">http://www.spatialys.com</a>
My software is free, but my time generally not.</pre>
            </div>
          </blockquote>
        </div>
      </div>
    </blockquote>
    <pre cols="72">-- 
<a href="http://www.spatialys.com" target="_blank">http://www.spatialys.com</a>
My software is free, but my time generally not.</pre>
  </div>

</blockquote></div>