summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexey Shchepin <alexey@process-one.net>2008-04-11 05:52:10 +0000
committerAlexey Shchepin <alexey@process-one.net>2008-04-11 05:52:10 +0000
commit9733e6874e73b2274a96bc77082cc44aeb5e941a (patch)
tree55dbbbba6c4793dc3616410cf496c7ed059cc249
parent* src/tls/tls_drv.c: Fixed gcc signedness warnings (diff)
* src/ejabberd_config.erl: Removed a dependency on string:to_upper
SVN Revision: 1288
Diffstat (limited to '')
-rw-r--r--ChangeLog2
-rw-r--r--src/ejabberd_config.erl45
2 files changed, 25 insertions, 22 deletions
diff --git a/ChangeLog b/ChangeLog
index 3f8b8337..89ebf88b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
2008-04-11 Alexey Shchepin <alexey@process-one.net>
+ * src/ejabberd_config.erl: Removed a dependency on string:to_upper
+
* src/tls/tls_drv.c: Fixed gcc signedness warnings
* src/ejabberd_zlib/ejabberd_zlib_drv.c: Likewise
diff --git a/src/ejabberd_config.erl b/src/ejabberd_config.erl
index a585b39f..6d110ed1 100644
--- a/src/ejabberd_config.erl
+++ b/src/ejabberd_config.erl
@@ -239,18 +239,18 @@ split_terms_macros(Terms) ->
lists:foldl(
fun(Term, {TOs, Ms}) ->
case Term of
- {define_macro, Key, Value} ->
- case is_atom(Key) and is_all_uppercase(Key) of
- true ->
- {TOs, Ms++[{Key, Value}]};
- false ->
- exit({macro_not_properly_defined, Term})
- end;
- Term ->
- {TOs ++ [Term], Ms}
+ {define_macro, Key, Value} ->
+ case is_atom(Key) and is_all_uppercase(Key) of
+ true ->
+ {TOs, Ms++[{Key, Value}]};
+ false ->
+ exit({macro_not_properly_defined, Term})
+ end;
+ Term ->
+ {TOs ++ [Term], Ms}
end
end,
- {[], []},
+ {[], []},
Terms).
%% @doc Recursively replace in Terms macro usages with the defined value.
@@ -263,15 +263,15 @@ replace([Term|Terms], Macros) ->
[replace_term(Term, Macros) | replace(Terms, Macros)].
replace_term(Key, Macros) when is_atom(Key) ->
- case is_all_uppercase(Key) of
- true ->
- case proplists:get_value(Key, Macros) of
- undefined -> exit({undefined_macro, Key});
- Value -> Value
- end;
- false ->
- Key
- end;
+ case is_all_uppercase(Key) of
+ true ->
+ case proplists:get_value(Key, Macros) of
+ undefined -> exit({undefined_macro, Key});
+ Value -> Value
+ end;
+ false ->
+ Key
+ end;
replace_term({use_macro, Key, Value}, Macros) ->
proplists:get_value(Key, Macros, Value);
replace_term(Term, Macros) when is_list(Term) ->
@@ -284,9 +284,10 @@ replace_term(Term, _) ->
Term.
is_all_uppercase(Atom) ->
- String = erlang:atom_to_list(Atom),
- (String == string:to_upper(String)).
-
+ String = erlang:atom_to_list(Atom),
+ lists:all(fun(C) when C >= $a, C =< $z -> false;
+ (_) -> true
+ end, String).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Process terms