If it is any help, here is a patch I wrote to restore the functionality in
our 4.0.10 distribution. Seems to work....
Index: nsd/adpparse.c
===================================================================
RCS file: /bom-cvs/out-source/aolserver-4.0.10/nsd/adpparse.c,v
retrieving revision 1.1
retrieving revision 1.3
diff -u -r1.1 -r1.3
--- nsd/adpparse.c 19 Aug 2005 20:29:04 -0000 1.1
+++ nsd/adpparse.c 19 Aug 2005 21:12:57 -0000 1.3
@@ -66,7 +66,7 @@
*/
static void AppendBlock(AdpParse *parsePtr, char *s, char *e, int type);
-static void Parse(AdpParse *parsePtr, NsServer *servPtr, char *utf);
+static void Parse(AdpParse *parsePtr, NsServer *servPtr, char *utf, int
safe);
static int RegisterCmd(ClientData arg, Tcl_Interp *interp, int argc,
char **argv, int type);
@@ -197,8 +197,6 @@
void
NsAdpParse(AdpParse *parsePtr, NsServer *servPtr, char *utf, int safe)
{
- char *s, *e;
-
/*
* Initialize the parse structure.
*/
@@ -208,33 +206,11 @@
parsePtr->code.nscripts = parsePtr->code.nblocks = 0;
/*
- * Scan for <% ... %> sequences which take precedence over
- * other tags.
- */
-
- while ((s = strstr(utf, "<%")) && (e = strstr(s, "%>"))) {
- /*
- * Parse text preceeding the script.
- */
-
- *s = '\0';
- Parse(parsePtr, servPtr, utf);
- *s = '<';
- if (!safe) {
- if (s[2] != '=') {
- AppendBlock(parsePtr, s + 2, e, 's');
- } else {
- AppendBlock(parsePtr, s + 3, e, 'S');
- }
- }
- utf = e + 2;
- }
-
- /*
- * Parse the remaining text.
+ * Alastair Young - Arena - 8/19/2005 - Restored AOLS3 tag precedence
+ * Moved <%%> parsing to Parse()
*/
- Parse(parsePtr, servPtr, utf);;
+ Parse(parsePtr, servPtr, utf, safe);;
/*
* Complete the parse code structure.
@@ -553,7 +529,7 @@
*/
static void
-Parse(AdpParse *parsePtr, NsServer *servPtr, char *utf)
+Parse(AdpParse *parsePtr, NsServer *servPtr, char *utf, int safe)
{
Tag *tagPtr = NULL;
char *ss = NULL, *se = NULL, *s = NULL, *e = NULL;
@@ -579,7 +555,25 @@
*/
GetTag(&tag, s, e, &a);
- if (IsServer(tag.string, a, e, &stream)) {
+ /* Alastair Young - Arena - 8/19/2005 - Restored AOLS3 tag
precedence */
+ if (s[1] == '%') {
+ if (strstr(s, "%>")) {
+ AppendBlock(parsePtr, t, s, 't');
+ e = strstr(s, "%>");
+ if (!safe) {
+ if (s[2] != '=') {
+ AppendBlock(parsePtr, s + 2, e,
's');
+ } else {
+ AppendBlock(parsePtr, s + 3, e,
'S');
+ }
+ }
+ t = e + 2;
+ } else {
+ /* no closer. Include it as text */
+ AppendBlock(parsePtr, t, s + 2, 't');
+ t = s + 2;
+ }
+ } else if (IsServer(tag.string, a, e, &stream)) {
/*
* Record start of script.
*/
-----Original Message-----
From: AOLserver Discussion [mailto:[EMAIL PROTECTED] On Behalf Of
Jeremy Collins
Sent: Wednesday, August 24, 2005 7:46 AM
To: [email protected]
Subject: Re: [AOLSERVER] AOLserver 4.x ADP parser
On Aug 23 06:17:22PM, Jim Davidson wrote:
> Hi,
>
> Jeremy: Can you update the patch to work against the HEAD branch?
>
Sure, I'll look into it later this week.
- Jeremy
--
AOLserver - http://www.aolserver.com/
To Remove yourself from this list, simply send an email to
<[EMAIL PROTECTED]> with the body of "SIGNOFF AOLSERVER" in the
email message. You can leave the Subject: field of your email blank.
--
AOLserver - http://www.aolserver.com/
To Remove yourself from this list, simply send an email to <[EMAIL PROTECTED]>
with the
body of "SIGNOFF AOLSERVER" in the email message. You can leave the Subject:
field of your email blank.