Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/processone/ejabberd.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/jlib.erl')
-rw-r--r--src/jlib.erl36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/jlib.erl b/src/jlib.erl
index 3cf7ed577..c15bc06a4 100644
--- a/src/jlib.erl
+++ b/src/jlib.erl
@@ -19,6 +19,7 @@
remove_attr/2,
string_to_jid/1,
jid_to_string/1,
+ is_nodename/1,
tolower/1,
jid_tolower/1,
jid_remove_resource/1,
@@ -133,6 +134,17 @@ string_to_jid1([$/ | J], "") ->
error;
string_to_jid1([$/ | J], N) ->
string_to_jid3(J, "", lists:reverse(N), "");
+string_to_jid1([C | J], N)
+ when (C =< 32) or
+ (C == $") or
+ (C == $&) or
+ (C == $') or
+ (C == $:) or
+ (C == $<) or
+ (C == $>) or
+ (C == 127)
+ ->
+ error;
string_to_jid1([C | J], N) ->
string_to_jid1(J, [C | N]);
string_to_jid1([], "") ->
@@ -173,6 +185,30 @@ jid_to_string({Node, Server, Resource}) ->
S3.
+is_nodename([]) ->
+ false;
+is_nodename(J) ->
+ is_nodename1(J).
+
+is_nodename1([C | J])
+ when (C =< 32) or
+ (C == $") or
+ (C == $&) or
+ (C == $') or
+ (C == $:) or
+ (C == $<) or
+ (C == $>) or
+ (C == $@) or
+ (C == $/) or
+ (C == 127)
+ ->
+ false;
+is_nodename1([C | J]) ->
+ is_nodename1(J);
+is_nodename1([]) ->
+ true.
+
+
% TODO: UNICODE support
tolower_c(C) when C >= $A, C =< $Z ->