diff options
author | Alexey Shchepin <alexey@process-one.net> | 2007-07-31 04:13:29 +0000 |
---|---|---|
committer | Alexey Shchepin <alexey@process-one.net> | 2007-07-31 04:13:29 +0000 |
commit | 27a826cfe84b7c0e1afe1a86d6d3f3a66151bf9c (patch) | |
tree | 34865bb7810906ad960c8632930f7bc9aa54c0c7 /src | |
parent | * src/xml.erl: Better escaping management with CDATA. We only add CDATA enclo... (diff) |
* src/ejabberd_config.erl: Added possibility for appending values
to config options (thanks to Badlop)
* doc/guide.tex: Updated
SVN Revision: 845
Diffstat (limited to 'src')
-rw-r--r-- | src/ejabberd_config.erl | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/src/ejabberd_config.erl b/src/ejabberd_config.erl index a44c9378f..a06d4e2bc 100644 --- a/src/ejabberd_config.erl +++ b/src/ejabberd_config.erl @@ -3,12 +3,10 @@ %%% Author : Alexey Shchepin <alexey@sevcom.net> %%% Purpose : Load config file %%% Created : 14 Dec 2002 by Alexey Shchepin <alexey@sevcom.net> -%%% Id : $Id$ %%%---------------------------------------------------------------------- -module(ejabberd_config). -author('alexey@sevcom.net'). --vsn('$Revision$ '). -export([start/0, load_file/1, add_global_option/2, add_local_option/2, @@ -188,8 +186,26 @@ add_option(Opt, Val, State) -> State#state{opts = [#config{key = Opt, value = Val} | State#state.opts]}; local_config -> - State#state{opts = [#local_config{key = Opt, value = Val} | - State#state.opts]} + case Opt of + {{add, OptName}, Host} -> + State#state{opts = compact({OptName, Host}, Val, + State#state.opts, [])}; + _ -> + State#state{opts = [#local_config{key = Opt, value = Val} | + State#state.opts]} + end + end. + +compact(Opt, Val, [], Os) -> + [#local_config{key = Opt, value = Val}] ++ Os; +compact(Opt, Val, [O | Os1], Os2) -> + case O#local_config.key of + Opt -> + Os2 ++ [#local_config{key = Opt, + value = Val++O#local_config.value} + ] ++ Os1; + _ -> + compact(Opt, Val, Os1, Os2++[O]) end. |