[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