]> granicus.if.org Git - ejabberd/commitdiff
Use the regexp frontend module (EJAB-921)
authorBadlop <badlop@process-one.net>
Tue, 22 Nov 2011 22:11:21 +0000 (23:11 +0100)
committerBadlop <badlop@process-one.net>
Thu, 8 Dec 2011 11:40:04 +0000 (12:40 +0100)
src/acl.erl
src/ejabberd_ctl.erl
src/ejabberd_s2s_in.erl
src/gen_mod.erl
src/mod_configure.erl
src/mod_irc/mod_irc_connection.erl
src/mod_muc/mod_muc_log.erl
src/mod_shared_roster.erl
src/web/ejabberd_web_admin.erl

index 59173f0041d82ac87bca9b3cd4cc3a78a0aaabc7..7b23719e56d72932a63a8e20f9509b4df762500e 100644 (file)
@@ -223,19 +223,19 @@ match_acl(ACL, JID, Host) ->
     end.
 
 is_regexp_match(String, RegExp) ->
-    case regexp:first_match(String, RegExp) of
+    case ejabberd_regexp:run(String, RegExp) of
        nomatch ->
            false;
-       {match, _, _} ->
+       match ->
            true;
        {error, ErrDesc} ->
            ?ERROR_MSG(
               "Wrong regexp ~p in ACL: ~p",
-              [RegExp, lists:flatten(regexp:format_error(ErrDesc))]),
+              [RegExp, ErrDesc]),
            false
     end.
 
 is_glob_match(String, Glob) ->
-    is_regexp_match(String, regexp:sh_to_awk(Glob)).
+    is_regexp_match(String, ejabberd_regexp:sh_to_awk(Glob)).
 
 
index 189aa2c6b5cf15514391aecbe00c5df3208a55ac..40f4210567a7dc8beac7c4b23877e9edc3665592 100644 (file)
@@ -190,7 +190,7 @@ process(["help" | Mode]) ->
            print_usage_help(MaxC, ShCode),
            ?STATUS_SUCCESS;
        [CmdString | _] ->
-           {ok, CmdStringU, _} = regexp:gsub(CmdString, "-", "_"),
+           CmdStringU = ejabberd_regexp:greplace(CmdString, "-", "_"),
            print_usage_commands(CmdStringU, MaxC, ShCode),
            ?STATUS_SUCCESS
     end;
@@ -281,7 +281,7 @@ try_call_command(Args, Auth, AccessCommands) ->
 
 %% @spec (Args::[string()], Auth, AccessCommands) -> string() | integer() | {string(), integer()} | {error, ErrorType}
 call_command([CmdString | Args], Auth, AccessCommands) ->
-    {ok, CmdStringU, _} = regexp:gsub(CmdString, "-", "_"),
+    CmdStringU = ejabberd_regexp:greplace(CmdString, "-", "_"),
     Command = list_to_atom(CmdStringU),
     case ejabberd_commands:get_command_format(Command) of
        {error, command_unknown} ->
@@ -678,13 +678,13 @@ filter_commands(All, SubString) ->
     end.
 
 filter_commands_regexp(All, Glob) ->
-    RegExp = regexp:sh_to_awk(Glob),
+    RegExp = ejabberd_regexp:sh_to_awk(Glob),
     lists:filter(
       fun(Command) ->
-             case regexp:first_match(Command, RegExp) of
-                 {match, _, _} ->
+             case ejabberd_regexp:run(Command, RegExp) of
+                 match ->
                      true;
-                 _ ->
+                 nomatch ->
                      false
              end
       end,
index 2cfc1d460c8f0558a5c8f4682fedc7872814b307..c2db348afb56d1fc5a655064b7d55d7dcd413928 100644 (file)
@@ -823,11 +823,11 @@ match_labels([DL | DLabels], [PL | PLabels]) ->
                                 orelse (C == $-) orelse (C == $*)
                   end, PL) of
        true ->
-           Regexp = regexp:sh_to_awk(PL),
-           case regexp:match(DL, Regexp) of
-               {match, _, _} ->
+           Regexp = ejabberd_regexp:sh_to_awk(PL),
+           case ejabberd_regexp:run(DL, Regexp) of
+               match ->
                    match_labels(DLabels, PLabels);
-               _ ->
+               nomatch ->
                    false
            end;
        false ->
index 0f577d31ad0e7691dd8dc5262c6b3f0f2ad247fd..ff8b92c9b1f2d408685567532e498cb301aa9070 100644 (file)
@@ -186,11 +186,11 @@ get_module_opt(Host, Module, Opt, Default) ->
 
 get_module_opt_host(Host, Module, Default) ->
     Val = get_module_opt(Host, Module, host, Default),
-    element(2, regexp:gsub(Val, "@HOST@", Host)).
+    ejabberd_regexp:greplace(Val, "@HOST@", Host).
 
 get_opt_host(Host, Opts, Default) ->
     Val = get_opt(host, Opts, Default),
-    element(2, regexp:gsub(Val, "@HOST@", Host)).
+    ejabberd_regexp:greplace(Val, "@HOST@", Host).
 
 loaded_modules(Host) ->
     ets:select(ejabberd_modules,
index 2d58d58e74d6bf9ce563a7840a9327c887c3b51a..e760a3e4a34c1f3197d01cdb8cd1b96caeb667f6 100644 (file)
@@ -542,7 +542,7 @@ get_local_items({_, Host}, ["all users", [$@ | Diap]], _Server, _Lang) ->
        Users ->
            SUsers = lists:sort([{S, U} || {U, S} <- Users]),
            case catch begin
-                          {ok, [S1, S2]} = regexp:split(Diap, "-"),
+                          [S1, S2] = ejabberd_regexp:split(Diap, "-"),
                           N1 = list_to_integer(S1),
                           N2 = list_to_integer(S2),
                           Sub = lists:sublist(SUsers, N1, N2 - N1 + 1),
index da9d26ca83c32a2147205e668e973aab19a1968f..92001aedb38db7aeb3e6f1b954b76d7a6b551ef4 100644 (file)
@@ -625,7 +625,7 @@ handle_info({send_text, Text}, StateName, StateData) ->
     {next_state, StateName, StateData};
 handle_info({tcp, _Socket, Data}, StateName, StateData) ->
     Buf = StateData#state.inbuf ++ binary_to_list(Data),
-    {ok, Strings} = regexp:split([C || C <- Buf, C /= $\r], "\n"),
+    Strings = ejabberd_regexp:split([C || C <- Buf, C /= $\r], "\n"),
     ?DEBUG("strings=~p~n", [Strings]),
     NewBuf = process_lines(StateData#state.encoding, Strings),
     {next_state, StateName, StateData#state{inbuf = NewBuf}};
@@ -797,7 +797,7 @@ process_channel_list_user(StateData, Chan, User) ->
 
 
 process_channel_topic(StateData, Chan, String) ->
-    {ok, Msg, _} = regexp:sub(String, ".*332[^:]*:", ""),
+    Msg = ejabberd_regexp:replace(String, ".*332[^:]*:", ""),
     Msg1 = filter_message(Msg),
     ejabberd_router:route(
       jlib:make_jid(
@@ -831,7 +831,7 @@ process_channel_topic_who(StateData, Chan, String) ->
 
 
 error_nick_in_use(_StateData, String) ->
-    {ok, Msg, _} = regexp:sub(String, ".*433 +[^ ]* +", ""),
+    Msg = ejabberd_regexp:replace(String, ".*433 +[^ ]* +", ""),
     Msg1 = filter_message(Msg),
     {xmlelement, "error", [{"code", "409"}, {"type", "cancel"}],
      [{xmlelement, "conflict", [{"xmlns", ?NS_STANZAS}], []},
@@ -879,7 +879,7 @@ process_endofwhois(StateData, _String, Nick) ->
        [{xmlelement, "body", [], [{xmlcdata, "End of WHOIS"}]}]}).
 
 process_whois311(StateData, String, Nick, Ident, Irchost) ->
-    {ok, Fullname, _} = regexp:sub(String, ".*311[^:]*:", ""),
+    Fullname = ejabberd_regexp:replace(String, ".*311[^:]*:", ""),
     ejabberd_router:route(
       jlib:make_jid(lists:concat([Nick, "!", StateData#state.server]),
                    StateData#state.host, ""),
@@ -891,7 +891,7 @@ process_whois311(StateData, String, Nick, Ident, Irchost) ->
                        Ident, "@" , Irchost, " : " , Fullname])}]}]}).
 
 process_whois312(StateData, String, Nick, Ircserver) ->
-    {ok, Ircserverdesc, _} = regexp:sub(String, ".*312[^:]*:", ""),
+    Ircserverdesc = ejabberd_regexp:replace(String, ".*312[^:]*:", ""),
     ejabberd_router:route(
       jlib:make_jid(lists:concat([Nick, "!", StateData#state.server]),
                    StateData#state.host, ""),
@@ -902,7 +902,7 @@ process_whois312(StateData, String, Nick, Ircserver) ->
                                   Ircserver, " : ", Ircserverdesc])}]}]}).
 
 process_whois319(StateData, String, Nick) ->
-    {ok, Chanlist, _} = regexp:sub(String, ".*319[^:]*:", ""),
+    Chanlist = ejabberd_regexp:replace(String, ".*319[^:]*:", ""),
     ejabberd_router:route(
       jlib:make_jid(lists:concat([Nick, "!", StateData#state.server]),
                    StateData#state.host, ""),
@@ -916,7 +916,7 @@ process_whois319(StateData, String, Nick) ->
 
 process_chanprivmsg(StateData, Chan, From, String) ->
     [FromUser | _] = string:tokens(From, "!"),
-    {ok, Msg, _} = regexp:sub(String, ".*PRIVMSG[^:]*:", ""),
+    Msg = ejabberd_regexp:replace(String, ".*PRIVMSG[^:]*:", ""),
     Msg1 = case Msg of
               [1, $A, $C, $T, $I, $O, $N, $  | Rest] ->
                   "/me " ++ Rest;
@@ -935,7 +935,7 @@ process_chanprivmsg(StateData, Chan, From, String) ->
 
 process_channotice(StateData, Chan, From, String) ->
     [FromUser | _] = string:tokens(From, "!"),
-    {ok, Msg, _} = regexp:sub(String, ".*NOTICE[^:]*:", ""),
+    Msg = ejabberd_regexp:replace(String, ".*NOTICE[^:]*:", ""),
     Msg1 = case Msg of
               [1, $A, $C, $T, $I, $O, $N, $  | Rest] ->
                   "/me " ++ Rest;
@@ -955,7 +955,7 @@ process_channotice(StateData, Chan, From, String) ->
 
 process_privmsg(StateData, _Nick, From, String) ->
     [FromUser | _] = string:tokens(From, "!"),
-    {ok, Msg, _} = regexp:sub(String, ".*PRIVMSG[^:]*:", ""),
+    Msg = ejabberd_regexp:replace(String, ".*PRIVMSG[^:]*:", ""),
     Msg1 = case Msg of
               [1, $A, $C, $T, $I, $O, $N, $  | Rest] ->
                   "/me " ++ Rest;
@@ -973,7 +973,7 @@ process_privmsg(StateData, _Nick, From, String) ->
 
 process_notice(StateData, _Nick, From, String) ->
     [FromUser | _] = string:tokens(From, "!"),
-    {ok, Msg, _} = regexp:sub(String, ".*NOTICE[^:]*:", ""),
+    Msg = ejabberd_regexp:replace(String, ".*NOTICE[^:]*:", ""),
     Msg1 = case Msg of
               [1, $A, $C, $T, $I, $O, $N, $  | Rest] ->
                   "/me " ++ Rest;
@@ -1016,7 +1016,7 @@ process_userinfo(StateData, _Nick, From) ->
 
 process_topic(StateData, Chan, From, String) ->
     [FromUser | _] = string:tokens(From, "!"),
-    {ok, Msg, _} = regexp:sub(String, ".*TOPIC[^:]*:", ""),
+    Msg = ejabberd_regexp:replace(String, ".*TOPIC[^:]*:", ""),
     Msg1 = filter_message(Msg),
     ejabberd_router:route(
       jlib:make_jid(lists:concat([Chan, "%", StateData#state.server]),
@@ -1030,7 +1030,7 @@ process_topic(StateData, Chan, From, String) ->
 
 process_part(StateData, Chan, From, String) ->
     [FromUser | FromIdent] = string:tokens(From, "!"),
-    {ok, Msg, _} = regexp:sub(String, ".*PART[^:]*:", ""),
+    Msg = ejabberd_regexp:replace(String, ".*PART[^:]*:", ""),
     Msg1 = filter_message(Msg),
     ejabberd_router:route(
       jlib:make_jid(lists:concat([Chan, "%", StateData#state.server]),
@@ -1059,7 +1059,7 @@ process_part(StateData, Chan, From, String) ->
 process_quit(StateData, From, String) ->
     [FromUser | FromIdent] = string:tokens(From, "!"),
 
-    {ok, Msg, _} = regexp:sub(String, ".*QUIT[^:]*:", ""),
+    Msg = ejabberd_regexp:replace(String, ".*QUIT[^:]*:", ""),
     Msg1 = filter_message(Msg),
     %%NewChans =
        dict:map(
@@ -1215,7 +1215,7 @@ process_error(StateData, String) ->
       end, dict:fetch_keys(StateData#state.channels)).
 
 error_unknown_num(_StateData, String, Type) ->
-    {ok, Msg, _} = regexp:sub(String, ".*[45][0-9][0-9] +[^ ]* +", ""),
+    Msg = ejabberd_regexp:replace(String, ".*[45][0-9][0-9] +[^ ]* +", ""),
     Msg1 = filter_message(Msg),
     {xmlelement, "error", [{"code", "500"}, {"type", Type}],
      [{xmlelement, "undefined-condition", [{"xmlns", ?NS_STANZAS}], []},
@@ -1313,12 +1313,7 @@ filter_message(Msg) ->
       end, filter_mirc_colors(Msg)).
 
 filter_mirc_colors(Msg) ->
-    case regexp:gsub(Msg, "(\\003[0-9]+)(,[0-9]+)?", "") of
-       {ok, Msg2, _} ->
-           Msg2;
-       _ ->
-           Msg
-    end.
+    ejabberd_regexp:greplace(Msg, "(\\003[0-9]+)(,[0-9]+)?", "").
 
 unixtime2string(Unixtime) ->
     Secs = Unixtime + calendar:datetime_to_gregorian_seconds(
index 7560016a058f09d760bfd3b5cffea698d03019c6..6cc4efff1ff64668769e318e94207098443ce355 100644 (file)
@@ -416,11 +416,11 @@ add_message_to_log(Nick1, Message, RoomJID, Opts, State) ->
                   io_lib:format("<font class=\"msc\">~s~s~s</font><br/>", 
                                 [Nick, ?T(" has set the subject to: "), htmlize(T,NoFollow,FileFormat)]);
               {body, T} ->  
-                  case {regexp:first_match(T, "^/me\s"), Nick} of
+                  case {ejabberd_regexp:run(T, "^/me\s"), Nick} of
                       {_, ""} ->
                           io_lib:format("<font class=\"msm\">~s</font><br/>",
                                         [htmlize(T,NoFollow,FileFormat)]);
-                      {{match, _, _}, _} ->
+                      {match, _} ->
                           io_lib:format("<font class=\"mne\">~s ~s</font><br/>", 
                                         [Nick, string:substr(htmlize(T,FileFormat), 5)]);
                       {nomatch, _} ->
@@ -662,8 +662,7 @@ fw(F, S, O, FileFormat) ->
             html ->
                 S1;
             plaintext ->
-                {ok, Res, _} = regexp:gsub(S1, "<[^>]*>", ""),
-                Res
+                ejabberd_regexp:greplace(S1, "<[^>]*>", "")
         end,
     io:format(F, S2, []).
 
@@ -790,15 +789,15 @@ htmlize(S1, NoFollow, _FileFormat) ->
       S2_list).
 
 htmlize2(S1, NoFollow) ->
-    S2 = element(2, regexp:gsub(S1, "\\&", "\\&amp;")),
-    S3 = element(2, regexp:gsub(S2, "<", "\\&lt;")),
-    S4 = element(2, regexp:gsub(S3, ">", "\\&gt;")),
-    S5 = element(2, regexp:gsub(S4, "((http|https|ftp)://|(mailto|xmpp):)[^] )\'\"}]+",
-                               link_regexp(NoFollow))),
+    S2 = ejabberd_regexp:greplace(S1, "\\&", "\\&amp;"),
+    S3 = ejabberd_regexp:greplace(S2, "<", "\\&lt;"),
+    S4 = ejabberd_regexp:greplace(S3, ">", "\\&gt;"),
+    S5 = ejabberd_regexp:greplace(S4, "((http|https|ftp)://|(mailto|xmpp):)[^] )\'\"}]+",
+                               link_regexp(NoFollow)),
     %% Remove 'right-to-left override' unicode character 0x202e
-    S6 = element(2, regexp:gsub(S5, "  ", "\\&nbsp;\\&nbsp;")),
-    S7 = element(2, regexp:gsub(S6, "\\t", "\\&nbsp;\\&nbsp;\\&nbsp;\\&nbsp;")),
-    element(2, regexp:gsub(S7, [226,128,174], "[RLO]")).
+    S6 = ejabberd_regexp:greplace(S5, "  ", "\\&nbsp;\\&nbsp;"),
+    S7 = ejabberd_regexp:greplace(S6, "\\t", "\\&nbsp;\\&nbsp;\\&nbsp;\\&nbsp;"),
+    ejabberd_regexp:greplace(S7, [226,128,174], "[RLO]").
 
 %% Regexp link
 %% Add the nofollow rel attribute when required
index 1043e86e3f142a3fa0438a87e2185d499cd5b18b..7d4d293a3070cd6773166c78590fa4d7f39097de 100644 (file)
@@ -614,8 +614,8 @@ is_user_in_group(US, Group, Host) ->
 %% @spec (Host::string(), {User::string(), Server::string()}, Group::string()) -> {atomic, ok}
 add_user_to_group(Host, US, Group) ->
     {LUser, LServer} = US,
-    case regexp:match(LUser, "^@.+@$") of
-       {match,_,_} ->
+    case ejabberd_regexp:run(LUser, "^@.+@$") of
+       match ->
            GroupOpts = mod_shared_roster:get_group_opts(Host, Group),
            MoreGroupOpts =
                case LUser of
@@ -647,8 +647,8 @@ push_displayed_to_user(LUser, LServer, Group, Host, Subscription) ->
 remove_user_from_group(Host, US, Group) ->
     GroupHost = {Group, Host},
     {LUser, LServer} = US,
-    case regexp:match(LUser, "^@.+@$") of
-       {match,_,_} ->
+    case ejabberd_regexp:run(LUser, "^@.+@$") of
+       match ->
            GroupOpts = mod_shared_roster:get_group_opts(Host, Group),
            NewGroupOpts =
                case LUser of
@@ -967,7 +967,7 @@ shared_roster_group(Host, Group, Query, Lang) ->
        end ++
        [[us_to_list(Member), $\n] || Member <- Members],
     FDisplayedGroups = [[DG, $\n] || DG <- DisplayedGroups],
-    DescNL = length(element(2, regexp:split(Description, "\n"))),
+    DescNL = length(ejabberd_regexp:split(Description, "\n")),
     FGroup =
        ?XAE("table", [{"class", "withtextareas"}],
             [?XE("tbody",
index d08ad6371048e953f4f31a2dcd36ac91b8793779..75d0ee8285d735ed86ff9eb104c927cffbbebb70 100644 (file)
@@ -1239,13 +1239,12 @@ acl_spec_select(ID, Opt) ->
 term_to_string(T) ->
     StringParagraph = lists:flatten(io_lib:format("~1000000p", [T])),
     %% Remove from the string all the carriage returns characters
-    {ok, StringLine, _} = regexp:gsub(StringParagraph, "\\n ", ""),
-    StringLine.
+    ejabberd_regexp:greplace(StringParagraph, "\\n ", "").
 
 %% @spec (T::any(), Cols::integer()) -> {NumLines::integer(), Paragraph::string()}
 term_to_paragraph(T, Cols) ->
     Paragraph = erl_prettypr:format(erl_syntax:abstract(T), [{paper, Cols}]),
-    {ok, FieldList} = regexp:split(Paragraph, "\n"),
+    FieldList = ejabberd_regexp:split(Paragraph, "\n"),
     NumLines = length(FieldList),
     {NumLines, Paragraph}.
 
@@ -1558,7 +1557,7 @@ list_users_parse_query(Query, Host) ->
 list_users_in_diapason(Host, Diap, Lang, URLFunc) ->
     Users = ejabberd_auth:get_vh_registered_users(Host),
     SUsers = lists:sort([{S, U} || {U, S} <- Users]),
-    {ok, [S1, S2]} = regexp:split(Diap, "-"),
+    [S1, S2] = ejabberd_regexp:split(Diap, "-"),
     N1 = list_to_integer(S1),
     N2 = list_to_integer(S2),
     Sub = lists:sublist(SUsers, N1, N2 - N1 + 1),