From ce7b008b8f4526b489ff3f4beeb0a17bf90e3d19 Mon Sep 17 00:00:00 2001 From: Badlop Date: Fri, 23 Dec 2011 11:33:33 +0100 Subject: [PATCH] Use the regexp frontend module (EJAB-921) --- src/eldap/eldap_filter.erl | 42 ++++++++++++++++++++++---------------- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/src/eldap/eldap_filter.erl b/src/eldap/eldap_filter.erl index d2e1b66a4..f55df6f41 100644 --- a/src/eldap/eldap_filter.erl +++ b/src/eldap/eldap_filter.erl @@ -146,30 +146,36 @@ do_sub(S, [{RegExp, New, Times} | T]) -> do_sub(Result, T). do_sub(S, {RegExp, New}, Iter) -> - case regexp:sub(S, RegExp, New) of - {ok, NewS, 0} -> - NewS; - {ok, NewS, _} when Iter =< ?MAX_RECURSION -> - do_sub(NewS, {RegExp, New}, Iter+1); - {ok, _, _} when Iter > ?MAX_RECURSION -> - erlang:error(max_substitute_recursion); - _ -> - erlang:error(bad_regexp) + case ejabberd_regexp:run(S, RegExp) of + match -> + case ejabberd_regexp:replace(S, RegExp, New) of + NewS when Iter =< ?MAX_RECURSION -> + do_sub(NewS, {RegExp, New}, Iter+1); + _NewS when Iter > ?MAX_RECURSION -> + erlang:error(max_substitute_recursion) + end; + nomatch -> + S; + _ -> + erlang:error(bad_regexp) end; do_sub(S, {_, _, N}, _) when N<1 -> S; do_sub(S, {RegExp, New, Times}, Iter) -> - case regexp:sub(S, RegExp, New) of - {ok, NewS, 0} -> - NewS; - {ok, NewS, _} when Iter < Times -> - do_sub(NewS, {RegExp, New, Times}, Iter+1); - {ok, NewS, _} -> - NewS; - _ -> - erlang:error(bad_regexp) + case ejabberd_regexp:run(S, RegExp) of + match -> + case ejabberd_regexp:replace(S, RegExp, New) of + NewS when Iter < Times -> + do_sub(NewS, {RegExp, New, Times}, Iter+1); + NewS -> + NewS + end; + nomatch -> + S; + _ -> + erlang:error(bad_regexp) end. replace_amps(String) ->