w3m

Unnamed repository; edit this file to name it for gitweb.
git clone https://logand.com/git/w3m.git/
Log | Files | Refs | README

commit 5c617182b79c0f9a812c078577d0dff5a39cc1a9
parent 017ff1d84be4efb0505563e71ef8922ad128f331
Author: ukai <ukai>
Date:   Fri, 22 Nov 2002 15:56:43 +0000

[w3m-dev 03464] Re: case insensitive regexp search
  (rewrite [w3m-dev 03462] by Hiroyuki Ito <hito@crl.go.jp>)
* regex.c (matchWhich): add int
	(newRegex0): igncase
	(regmatch1): matchWhich with re->mode & RE_IGNCASE
	(matchWhich): add igncase
From: Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>

Diffstat:
MChangeLog | 9+++++++++
Mregex.c | 21+++++++++++++++++----
2 files changed, 26 insertions(+), 4 deletions(-)

diff --git a/ChangeLog b/ChangeLog @@ -1,5 +1,14 @@ 2002-11-23 Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp> + * [w3m-dev 03464] Re: case insensitive regexp search + (rewrite [w3m-dev 03462] by Hiroyuki Ito <hito@crl.go.jp>) + * regex.c (matchWhich): add int + (newRegex0): igncase + (regmatch1): matchWhich with re->mode & RE_IGNCASE + (matchWhich): add igncase + +2002-11-23 Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp> + * [w3m-dev 03459] background download when external viewer * etc.c (myExec): added (mySystem): rewrite to use myExec() diff --git a/regex.c b/regex.c @@ -68,7 +68,7 @@ static Regex DefaultRegex; static int regmatch(regexchar *, char *, char *, int, char **); static int regmatch1(regexchar *, longchar); -static int matchWhich(longchar *, longchar); +static int matchWhich(longchar *, longchar, int); /* * regexCompile: compile regular expression @@ -190,6 +190,8 @@ newRegex0(char **ex, int igncase, Regex *regex, char **msg, int level) *(st_ptr++) = '\0'; re->p.pattern = r; RE_SET_MODE(re, m); + if (igncase) + re->mode |= RE_IGNCASE; re++; break; case '|': @@ -634,15 +636,15 @@ regmatch1(regexchar * re, longchar c) else return (*re->p.pattern == c); case RE_WHICH: - return matchWhich(re->p.pattern, c); + return matchWhich(re->p.pattern, c, re->mode & RE_IGNCASE); case RE_EXCEPT: - return !matchWhich(re->p.pattern, c); + return !matchWhich(re->p.pattern, c, re->mode & RE_IGNCASE); } return 0; } static int -matchWhich(longchar * pattern, longchar c) +matchWhich(longchar * pattern, longchar c, int igncase) { longchar *p = pattern; int ans = 0; @@ -657,6 +659,12 @@ matchWhich(longchar * pattern, longchar c) ans = 1; break; } + else if (igncase && c < 127 && IS_ALPHA(c) && + ((*p <= c && tolower(c) <= *(p + 2)) || + (*p <= c && toupper(c) <= *(p + 2)))) { + ans = 1; + break; + } p += 3; } else { @@ -664,6 +672,11 @@ matchWhich(longchar * pattern, longchar c) ans = 1; break; } + else if (igncase && c < 127 && IS_ALPHA(c) && + (*p == tolower(c) || *p == toupper(c))) { + ans = 1; + break; + } p++; } }