[mapserver-commits] r7543 - trunk/mapserver
svn at osgeo.org
svn at osgeo.org
Tue Apr 29 08:57:56 EDT 2008
Author: sdlime
Date: 2008-04-29 08:57:56 -0400 (Tue, 29 Apr 2008)
New Revision: 7543
Modified:
trunk/mapserver/maptemplate.c
Log:
A bit more tag handling code for RFC36.
Modified: trunk/mapserver/maptemplate.c
===================================================================
--- trunk/mapserver/maptemplate.c 2008-04-29 05:39:54 UTC (rev 7542)
+++ trunk/mapserver/maptemplate.c 2008-04-29 12:57:56 UTC (rev 7543)
@@ -786,8 +786,63 @@
}
/*
-** Function to process an [resultset ...] tag.
+** Function to process a [features ...] tag. This tag can *only* be found within
+** a [resultset ...][/resultset] block.
*/
+static int processFeaturesTag(mapservObj *mapserv, char **line, layerObj *layer)
+{
+ char *preTag, *postTag; /* text before and after the tag */
+
+ char *tag, *tagStart, *tagEnd;
+ hashTableObj *tagArgs=NULL;
+
+ int i, j;
+
+ if(!*line) {
+ msSetError(MS_WEBERR, "Invalid line pointer.", "processFeaturesTag()");
+ return(MS_FAILURE);
+ }
+
+ tagStart = findTag(*line, "features");
+ if(!tagStart) return(MS_SUCCESS); /* OK, just return; */
+
+ /* check for any tag arguments */
+ if(getTagArgs("features", tagStart, &tagArgs) != MS_SUCCESS) return(MS_FAILURE);
+ if(tagArgs) {
+ /* todo */
+ }
+
+ if(strstr(*line, "[/features]") == NULL) { /* we know the closing tag must be here, if not throw an error */
+ msSetError(MS_WEBERR, "[features] tag found without closing [/features].", "processFeaturesTag()");
+ return(MS_FAILURE);
+ }
+
+ if(getInlineTag("features", *line, &tag) != MS_SUCCESS) {
+ msSetError(MS_WEBERR, "Malformed features tag.", "processResultSetTag()");
+ return MS_FAILURE;
+ }
+
+ preTag = getPreTagText(*line, "[features");
+ postTag = getPostTagText(*line, "[/featres]");
+
+ /* start rebuilding **line */
+ free(*line); *line = preTag;
+
+ /* we know the layer has query results or we wouldn't be in this code */
+
+ *line = msStringConcatenate(*line, postTag);
+
+ /*
+ ** clean up
+ */
+ free(postTag);
+
+ return(MS_SUCCESS);
+}
+
+/*
+** Function to process a [resultset ...] tag.
+*/
static int processResultSetTag(mapservObj *mapserv, char **line, FILE *stream)
{
char lineBuffer[MS_BUFFER_LENGTH];
@@ -843,7 +898,7 @@
}
if(getInlineTag("resultset", *line, &tag) != MS_SUCCESS) {
- msSetError(MS_WEBERR, "Malformed then resultset tag.", "processResultSetTag()");
+ msSetError(MS_WEBERR, "Malformed resultset tag.", "processResultSetTag()");
return MS_FAILURE;
}
More information about the mapserver-commits
mailing list