aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlexey Shchepin <alexey@process-one.net>2007-07-31 04:13:29 +0000
committerAlexey Shchepin <alexey@process-one.net>2007-07-31 04:13:29 +0000
commit27a826cfe84b7c0e1afe1a86d6d3f3a66151bf9c (patch)
tree34865bb7810906ad960c8632930f7bc9aa54c0c7 /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.erl24
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.