From e7138d3118c08a48d7cc2735affc6e484ce3c361 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fredrik=20H=C3=BCbinette=20=28Hubbe=29?= <hubbe@hubbe.net>
Date: Thu, 31 Dec 1998 16:59:45 -0800
Subject: [PATCH] fixes for NT

Rev: src/modules/spider/xml.c:1.5
---
 src/modules/spider/xml.c | 95 ++++++++++++++++++++--------------------
 1 file changed, 48 insertions(+), 47 deletions(-)

diff --git a/src/modules/spider/xml.c b/src/modules/spider/xml.c
index 34a2608a1b..ce7b910a36 100644
--- a/src/modules/spider/xml.c
+++ b/src/modules/spider/xml.c
@@ -38,6 +38,7 @@ struct xmlobj
   struct mapping *is_cdata;
 };
 
+#undef THIS
 #define THIS ((struct xmlobj *)(fp->current_storage))
 
 
@@ -640,7 +641,7 @@ static int low_parse_xml(struct xmldata *data,
 			 struct pike_string *end,
 			 int toplevel);
 
-#define ERROR(desc) do {			\
+#define XMLERROR(desc) do {			\
     struct svalue * save_sp=sp;			\
     push_text("error");				\
     push_int(0); /* no name */			\
@@ -678,7 +679,7 @@ static int gobble(struct xmldata *data, char *s)
 	  POKE(X, PEEK(0));				\
 	  READ(1);					\
 	}else{						\
-	  ERROR("Name expected");			\
+	  XMLERROR("Name expected");			\
 	}						\
 	while(isNameChar(PEEK(0)))			\
 	{						\
@@ -693,7 +694,7 @@ static int gobble(struct xmldata *data, char *s)
 	  POKE(X, PEEK(0));				\
 	  READ(1);					\
 	}else{						\
-	  ERROR("Nametoken expected");			\
+	  XMLERROR("Nametoken expected");			\
 	}						\
 	while(isNameChar(PEEK(0)))			\
 	{						\
@@ -762,7 +763,7 @@ static int gobble(struct xmldata *data, char *s)
 	    }								 \
 	  }								 \
 	  if(PEEK(0)!=';')						 \
-	    ERROR("Missing ';' after character reference.");		 \
+	    XMLERROR("Missing ';' after character reference.");		 \
 	  READ(1);							 \
 	  POKE(X, num);							 \
    }while(0)
@@ -778,7 +779,7 @@ static int gobble(struct xmldata *data, char *s)
 	  /* Entity reference */					 \
 	  if(!THIS->entities)						 \
           {								 \
-            ERROR("XML->__entities is not a mapping");			 \
+            XMLERROR("XML->__entities is not a mapping");			 \
 	    f_aggregate_mapping(0);					 \
 	  }else{							 \
 	    ref_push_mapping(THIS->entities);				 \
@@ -786,19 +787,19 @@ static int gobble(struct xmldata *data, char *s)
 	  SIMPLE_READNAME();						 \
           IF_XMLDEBUG(fprintf(stderr,"Found entity: %s\n",sp[-1].u.string->str)); \
 	  if(PEEK(0)!=';')						 \
-	    ERROR("Missing ';' after entity reference.");		 \
+	    XMLERROR("Missing ';' after entity reference.");		 \
 	  READ(1);							 \
 	  /* lookup entry in mapping and parse it recursively */	 \
 	  /* Generate error if entity is not defined */			 \
 	  f_index(2);							 \
           if(IS_ZERO(sp-1))						 \
 	  {								 \
-	    ERROR("No such entity.");					 \
+	    XMLERROR("No such entity.");					 \
 	    pop_stack();						 \
 	  }else{							 \
 	    if(sp[-1].type!=T_STRING)					 \
 	    {								 \
-	      ERROR("XML->__entities value is not a string!");		 \
+	      XMLERROR("XML->__entities value is not a string!");		 \
 	    }else{							 \
 	      struct pike_string *s=sp[-1].u.string;			 \
 	      struct xmldata my_tmp=*data;			      	 \
@@ -823,7 +824,7 @@ static int gobble(struct xmldata *data, char *s)
 	READ(1); /* Assume '%'  */					 \
 	  if(!THIS->entities)						 \
           {								 \
-            ERROR("XML->__entities is not a mapping");			 \
+            XMLERROR("XML->__entities is not a mapping");			 \
 	    f_aggregate_mapping(0);					 \
 	  }else{							 \
 	    ref_push_mapping(THIS->entities);				 \
@@ -832,19 +833,19 @@ static int gobble(struct xmldata *data, char *s)
 	  SIMPLE_READNAME();						 \
           f_add(2);                                                      \
 	  if(PEEK(0)!=';')						 \
-	    ERROR("Missing ';' after entity reference.");		 \
+	    XMLERROR("Missing ';' after entity reference.");		 \
 	  READ(1);							 \
 	  /* lookup entry in mapping and parse it recursively */	 \
 	  /* Generate error if entity is not defined */			 \
 	  f_index(2);							 \
           if(IS_ZERO(sp-1))						 \
 	  {								 \
-	    ERROR("No such entity.");					 \
+	    XMLERROR("No such entity.");					 \
 	    pop_stack();						 \
 	  }else{							 \
 	    if(sp[-1].type!=T_STRING)					 \
 	    {								 \
-	      ERROR("XML->__entities value is not a string!");		 \
+	      XMLERROR("XML->__entities value is not a string!");		 \
 	    }else{							 \
 	      struct pike_string *s=sp[-1].u.string;			 \
 	      struct xmldata my_tmp=*data;			      	 \
@@ -877,7 +878,7 @@ static int gobble(struct xmldata *data, char *s)
             read_attvalue(data,&X,'\"',0);	\
             break;				\
           default:				\
-            ERROR("Unquoted attribute value.");	\
+            XMLERROR("Unquoted attribute value.");	\
             push_text("");                      \
         }					\
       }while(0)
@@ -895,7 +896,7 @@ static int gobble(struct xmldata *data, char *s)
             read_pubid(data,&X,'\"');	\
             break;				\
           default:				\
-            ERROR("Unquoted public id.");	\
+            XMLERROR("Unquoted public id.");	\
         }					\
       }while(0)
 
@@ -912,7 +913,7 @@ static int gobble(struct xmldata *data, char *s)
             read_attvalue2(data,&X,'\"');	\
             break;				\
           default:				\
-            ERROR("Unquoted attribute value.");	\
+            XMLERROR("Unquoted attribute value.");	\
         }					\
       }while(0)
 
@@ -963,7 +964,7 @@ static void read_attvalue(struct xmldata *data,
     if(data->len<=0)
     {
       if(Y)
-	ERROR("End of file while looking for end of attribute value.");
+	XMLERROR("End of file while looking for end of attribute value.");
       break;
     }
     if(PEEK(0)==Y)
@@ -1008,7 +1009,7 @@ static void read_pubid(struct xmldata *data,
     if(data->len<=0)
     {
       if(Y)
-	ERROR("End of file while looking for end of attribute value.");
+	XMLERROR("End of file while looking for end of attribute value.");
       break;
     }
     if(PEEK(0)==Y)
@@ -1042,7 +1043,7 @@ static void read_attvalue2(struct xmldata *data,
     if(data->len<=0)
     {
       if(Y)
-	ERROR("End of file while looking for end of attribute value.");
+	XMLERROR("End of file while looking for end of attribute value.");
       break;
     }
     if(PEEK(0)==Y)
@@ -1141,7 +1142,7 @@ static void simple_read_attributes(struct xmldata *data,
     SIMPLE_READNAME();
     SKIPSPACE();
     if(PEEK(0)!='=')
-      ERROR("Missing '=' in attribute.");
+      XMLERROR("Missing '=' in attribute.");
     READ(1);
 
     iscd=1;
@@ -1185,7 +1186,7 @@ static int really_low_parse_dtd(struct xmldata *data)
 #ifdef VERBOSE_XMLDEBUG
 	  fprintf(stderr,"Non-space character on DTD top level: %c.",PEEK(0));
 #endif
-	  ERROR("Non-space character on DTD top level.");
+	  XMLERROR("Non-space character on DTD top level.");
 	  while(data->len>0 && PEEK(0)!='<')
 	    READ(1);
 	  break;
@@ -1215,7 +1216,7 @@ static int really_low_parse_dtd(struct xmldata *data)
 		  READ_COMMENT();
 		  SYS();
 		}else{
-		  ERROR("Expected <!-- but got something else.");
+		  XMLERROR("Expected <!-- but got something else.");
 		}
 		break;
 
@@ -1268,7 +1269,7 @@ static int really_low_parse_dtd(struct xmldata *data)
 						sp-1);
 			}
 		      }else{
-			ERROR("XML->__entities is not a mapping.");
+			XMLERROR("XML->__entities is not a mapping.");
 		      }
 		      SYS();
 		      break;
@@ -1315,7 +1316,7 @@ static int really_low_parse_dtd(struct xmldata *data)
 			{
 			  if(!may_have_ndata)
 			  {
-			    ERROR("This entity is not allowed to have an NDATA keyword.");
+			    XMLERROR("This entity is not allowed to have an NDATA keyword.");
 			  }
 			  
 			  attributes++;
@@ -1333,14 +1334,14 @@ static int really_low_parse_dtd(struct xmldata *data)
 		    default:
 		  not_system:
 		      /* FIXME, DTD's are IGNORED! */
-		      ERROR("Unexpected data in <!ENTITY");
+		      XMLERROR("Unexpected data in <!ENTITY");
 		      while(data->len>0 && PEEK(0)!='>')
 			READ(1);
 		  }
 		  
 		  SKIPSPACE();
 		  if(PEEK(0)!='>')
-		    ERROR("Missing '>' in ENTITY.");
+		    XMLERROR("Missing '>' in ENTITY.");
 		  READ(1);
 		  break;
 
@@ -1379,7 +1380,7 @@ static int really_low_parse_dtd(struct xmldata *data)
 		    struct svalue *save;
 		    if(data->len<=0)
 		    {
-		      ERROR("End of file while parsing ATTLIST.");
+		      XMLERROR("End of file while parsing ATTLIST.");
 		      break;
 		    }
 		    SKIPSPACE();
@@ -1467,7 +1468,7 @@ static int really_low_parse_dtd(struct xmldata *data)
 			{
 			  SKIPSPACE();
 			  if(PEEK(0)!='(')
-			    ERROR("Expected '(' after NOTATION.");
+			    XMLERROR("Expected '(' after NOTATION.");
 			  READ(1);
 
 			  SIMPLE_READNAME();
@@ -1480,7 +1481,7 @@ static int really_low_parse_dtd(struct xmldata *data)
 			    check_stack(1);
 			  }
 			  if(PEEK(0)!=')')
-			    ERROR("Expected ')' after NOTATION enumeration.");
+			    XMLERROR("Expected ')' after NOTATION enumeration.");
 			  READ(1);
 			}
 			break;
@@ -1500,7 +1501,7 @@ static int really_low_parse_dtd(struct xmldata *data)
 			  check_stack(1);
 			}
 			if(PEEK(0)!=')')
-			  ERROR("Expected ')' after enumeration.");
+			  XMLERROR("Expected ')' after enumeration.");
 			READ(1);
 			break;
 		    }
@@ -1559,7 +1560,7 @@ static int really_low_parse_dtd(struct xmldata *data)
 
 			  default:
 			bad_defaultdecl:
-			    ERROR("Bad default declaration.");
+			    XMLERROR("Bad default declaration.");
 			    break;
 			}
 			break;
@@ -1653,7 +1654,7 @@ static int really_low_parse_dtd(struct xmldata *data)
 		  READ(1);
 
 		if(PEEK(0) != '>')
-		  ERROR("Missing '>' in DTD");
+		  XMLERROR("Missing '>' in DTD");
 		READ(1);
 
 		push_int(0); /* No attributes */
@@ -1663,7 +1664,7 @@ static int really_low_parse_dtd(struct xmldata *data)
 
 	      default:
 	    unknown_entry_in_dtd:
-		ERROR("Unknown entry in DTD.");
+		XMLERROR("Unknown entry in DTD.");
 
 		/* Try to recover */
 		while(data->len>0 && PEEK(0)!='>')
@@ -1699,7 +1700,7 @@ static int really_low_parse_dtd(struct xmldata *data)
 	    break;
 
 	  default:
-	    ERROR("Unknown entry in DTD.");
+	    XMLERROR("Unknown entry in DTD.");
 	    break;
 
 	}
@@ -1751,7 +1752,7 @@ static struct pike_string *very_low_parse_xml(struct xmldata *data,
 	{
 	  if(!isSpace(PEEK(0)))
 	  {
-	    ERROR("All data must be inside tags");
+	    XMLERROR("All data must be inside tags");
 	    READ(1);
 	  }
 	  SKIPSPACE();
@@ -1804,7 +1805,7 @@ static struct pike_string *very_low_parse_xml(struct xmldata *data,
 	      SIMPLE_READ_ATTRIBUTES(0);
 	      
 	      if(PEEK(0) != '?' && PEEK(1)!='>')
-		ERROR("Missing ?> at end of <?xml.");
+		XMLERROR("Missing ?> at end of <?xml.");
 	      READ(2);
 	      
 	      push_int(0); /* No data */
@@ -1848,14 +1849,14 @@ static struct pike_string *very_low_parse_xml(struct xmldata *data,
 		  READ_COMMENT();
 		  SYS();
 		}else{
-		  ERROR("Expected <!-- but got something else.");
+		  XMLERROR("Expected <!-- but got something else.");
 		}
 		break;
 
 
 	      case 'A': /* ATTLIST? */
 	      case 'E': /* ENTITY? ELEMENT?  */
-		ERROR("Invalid entry outside DTD.");
+		XMLERROR("Invalid entry outside DTD.");
 		break;
 
 	      case '[':
@@ -1893,7 +1894,7 @@ static struct pike_string *very_low_parse_xml(struct xmldata *data,
 		}
 
 	      default:
-		ERROR("Invalid entry.");
+		XMLERROR("Invalid entry.");
 		break;
 
 	      case 'D': /* DOCTYPE? */
@@ -1906,7 +1907,7 @@ static struct pike_string *very_low_parse_xml(struct xmldata *data,
 		   PEEK(8)!='E' ||
 		   !isSpace(PEEK(9)))
 		{
-		  ERROR("Expected 'DOCTYPE', got something else.");
+		  XMLERROR("Expected 'DOCTYPE', got something else.");
 		}else{
 		  READ(9);
 		  SKIPSPACE();
@@ -1929,7 +1930,7 @@ static struct pike_string *very_low_parse_xml(struct xmldata *data,
 			SKIPSPACE();
 			f_aggregate_mapping(4);
 		      }else{
-			ERROR("Expected PUBLIC, found something else.");
+			XMLERROR("Expected PUBLIC, found something else.");
 			f_aggregate_mapping(0);
 		      }
 		      break;
@@ -1946,7 +1947,7 @@ static struct pike_string *very_low_parse_xml(struct xmldata *data,
 			SKIPSPACE();
 			f_aggregate_mapping(2);
 		      }else{
-			ERROR("Expected SYSTEM, found something else.");
+			XMLERROR("Expected SYSTEM, found something else.");
 			f_aggregate_mapping(0);
 		      }
 		      break;
@@ -1963,14 +1964,14 @@ static struct pike_string *very_low_parse_xml(struct xmldata *data,
 		    fprintf(stderr,"FOO: %c%c%c%c\n",PEEK(0),PEEK(1),PEEK(2),PEEK(3));
 #endif
 		    if(PEEK(0) != ']')
-		      ERROR("Missing ] in DOCTYPE tag.");
+		      XMLERROR("Missing ] in DOCTYPE tag.");
 		    READ(1);
 		    SKIPSPACE();
 		  }else{
 		    push_int(0);
 		  }
 		  if(PEEK(0)!='>')
-		    ERROR("Missing '>' in DOCTYPE tag.");
+		    XMLERROR("Missing '>' in DOCTYPE tag.");
 		  READ(1);
 		  SYS();
 		}
@@ -1983,12 +1984,12 @@ static struct pike_string *very_low_parse_xml(struct xmldata *data,
 	    SIMPLE_READNAME();
 	    SKIPSPACE();
 	    if(PEEK(0)!='>')
-	      ERROR("Missing > in end tag.");
+	      XMLERROR("Missing > in end tag.");
 	    else
 	      READ(1);
 	    if(end!=sp[-1].u.string)
 	    {
-	      ERROR("Unmatched end tag.");
+	      XMLERROR("Unmatched end tag.");
 	    }else{
 	      end=0;
 	    }
@@ -2034,14 +2035,14 @@ static struct pike_string *very_low_parse_xml(struct xmldata *data,
 	      case '>':
 		READ(1);
 		if(low_parse_xml(data, sp[-2].u.string,0))
-		  ERROR("Unmatched tag.");
+		  XMLERROR("Unmatched tag.");
 		SYS();
 		break;
 
 	      case '/':
 		READ(1);
 		if(PEEK(0)!='>')
-		  ERROR("Missing '>' in empty tag.");
+		  XMLERROR("Missing '>' in empty tag.");
 		READ(1);
 		/* Self-contained tag */
 		free_string(sp[-3].u.string);
-- 
GitLab