From 158117d020f2f88cdcbbf5d57a0bfc8873fdd779 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?= <grubba@grubba.org> Date: Sat, 12 Apr 1997 16:24:20 +0200 Subject: [PATCH] Now handles white-space in end-tags. Rev: src/modules/spider/spider.c:1.27 --- src/modules/spider/spider.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/modules/spider/spider.c b/src/modules/spider/spider.c index 108c5c5402..fb4275cf9c 100644 --- a/src/modules/spider/spider.c +++ b/src/modules/spider/spider.c @@ -307,7 +307,10 @@ void f_parse_html(INT32 args) return; } - sp[-args].type=T_INT; + ss->refs++; +#if 0 + sp[-args].type=T_INT; /* ???? */ +#endif /* 0 */ single=sp[1-args].u.mapping; cont=sp[2-args].u.mapping; @@ -514,13 +517,19 @@ INLINE int tagsequal(char *s, char *t, int len, char *end) { if(s+len >= end) return 0; - if(s[len] != '>' && s[len] != ' ') - return 0; - while(len--) if(tolower(*(t++)) != tolower(*(s++))) return 0; - return 1; + switch(*s) { + case '>': + case ' ': + case '\t': + case '\n': + case '\r': + return 1; + default: + return 0; + } } int find_endtag(struct pike_string *tag, char *s, int len, int *aftertag) @@ -534,6 +543,7 @@ int find_endtag(struct pike_string *tag, char *s, int len, int *aftertag) for (; i<len && s[i]!='<'; i++); if (i>=len) break; j=i++; + for(; i<len && (s[i]==' ' || s[i]=='\t' || s[i]=='\n' || s[i]=='\r'); i++); if (i>=len) break; if (s[i]=='/') { -- GitLab