[Mapserver-dev] msBuildPath etc...
Daniel Morissette
morissette at dmsolutions.ca
Mon Feb 3 23:38:32 EST 2003
Steve Lime wrote:
>
> Hi folks: I'd like to ditch passing shapepath around to msOpenLayer and
> the shapefile routines. What's the best way to use the various
> msBuildPath functions to do that? For the shapefile (and Xbase
> functions) i'd like to simply pass the final file name. The logic (I
> think) would be:
>
> - if DATA or TABLE is full path, then use it
> - if DATA or TABLE relative, and SHAPEPATH is valid then append it
> - if SHAPEPATH relative, then append MAPPATH
>
> If those that wrote those functions would help with their interpretation
> that would be great.
>
Hi Steve,
FYI msBuildPath() already contains logic to prevent concatenating two
absolute paths. There is also a msBuildPath3() function that takes 3
path components and combines them, so I believe you should be able to do
this:
char path_buffer[MS_MAXPATHLEN];
msBuildPath3(path_buffer, map_path, shape_path, data_filename);
Unless I'm mistaken, this call should do exactly what you proposed
above, i.e.
- if data_filename is an absolute path then map_path and shape_path
are ignored.
- if data_filename is relative then it is appended to shape_path
- if shape_path is absolute then map_path is ignored
- if shape_path is relative then it is appended to map_path.
- finally, if shape_path is null then it should be automatically
ignored and the result will be map_path appended to data_filename.
Oh, and if some error happens then the function returns NULL, otherwise
it will return a reference to path_buffer.
Julien, can you please confirm that this is the expected behavior?
Daniel
--
------------------------------------------------------------
Daniel Morissette morissette at dmsolutions.ca
DM Solutions Group http://www.dmsolutions.ca/
------------------------------------------------------------
More information about the mapserver-dev
mailing list