introduce new osmo_util.erl for utility routines

move digit_list/int conversion and config reload into it
diff --git a/src/mgw_nat_app.erl b/src/mgw_nat_app.erl
index 31c71ff..c4e32ea 100644
--- a/src/mgw_nat_app.erl
+++ b/src/mgw_nat_app.erl
@@ -13,34 +13,4 @@
 	ok.
 
 reload_config() ->
-	case init:get_argument(config) of
-	{ok, [ Files ]} ->
-		ConfFiles = [begin
-				S = filename:basename(F,".config"),
-				filename:join(filename:dirname(F),
-				S ++ ".config")
-			     end || F <- Files],
-		% Move sys.config to the head of the list
-		Config = lists:sort(fun("sys.config", _) -> true;
-					(_, _) -> false end, ConfFiles),
-
-		OldEnv = application_controller:prep_config_change(),
-
-		Apps = [{application, A, make_appl(A)}
-		|| {A,_,_} <- application:which_applications()],
-		application_controller:change_application_data(Apps, Config),
-		application_controller:config_change(OldEnv);
-	_ ->
-		{ok, []}
-	end.
-
-make_appl(App) when is_atom(App) ->
-	AppList  = element(2,application:get_all_key(App)),
-	FullName = code:where_is_file(atom_to_list(App) ++ ".app"),
-	case file:consult(FullName) of
-	{ok, [{application, _, Opts}]} ->
-		Env = proplists:get_value(env, Opts, []),
-		lists:keyreplace(env, 1, AppList, {env, Env});
-	{error, _Reason} ->
-		lists:keyreplace(env, 1, AppList, {env, []})
-	end.
+	osmo_util:reload_config().
diff --git a/src/osmo_util.erl b/src/osmo_util.erl
new file mode 100644
index 0000000..bc6a885
--- /dev/null
+++ b/src/osmo_util.erl
@@ -0,0 +1,75 @@
+% Osmocom Erlang utility functions
+
+% (C) 2011 by Harald Welte <laforge@gnumonks.org>
+%
+% All Rights Reserved
+%
+% This program is free software; you can redistribute it and/or modify
+% it under the terms of the GNU Affero General Public License as
+% published by the Free Software Foundation; either version 3 of the
+% License, or (at your option) any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU Affero General Public License
+% along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+-module(osmo_util).
+-author('Harald Welte <laforge@gnumonks.org>').
+
+-export([digit_list2int/1, int2digit_list/1]).
+-export([reload_config/0]).
+
+% Convert a list of digits to an integer value
+digit_list2int(Int, []) ->
+	Int;
+digit_list2int(Int, [Digit|Tail]) ->
+	digit_list2int(Int*10 + Digit, Tail).
+digit_list2int(Digits) when is_list(Digits) ->
+	digit_list2int(0, Digits).
+
+% Convert an integer value into a list of decimal digits
+int2digit_list(0, Digits) when is_list(Digits) ->
+	Digits;
+int2digit_list(Int, Digits) when is_integer(Int), is_list(Digits) ->
+	Digit = Int rem 10,
+	int2digit_list(Int div 10, [Digit|Digits]).
+int2digit_list(Int) when is_integer(Int) ->
+	int2digit_list(Int, []).
+
+% reload configuration of an application
+reload_config() ->
+	case init:get_argument(config) of
+	{ok, [ Files ]} ->
+		ConfFiles = [begin
+				S = filename:basename(F,".config"),
+				filename:join(filename:dirname(F),
+				S ++ ".config")
+			     end || F <- Files],
+		% Move sys.config to the head of the list
+		Config = lists:sort(fun("sys.config", _) -> true;
+					(_, _) -> false end, ConfFiles),
+
+		OldEnv = application_controller:prep_config_change(),
+
+		Apps = [{application, A, make_appl(A)}
+		|| {A,_,_} <- application:which_applications()],
+		application_controller:change_application_data(Apps, Config),
+		application_controller:config_change(OldEnv);
+	_ ->
+		{ok, []}
+	end.
+
+make_appl(App) when is_atom(App) ->
+	AppList  = element(2,application:get_all_key(App)),
+	FullName = code:where_is_file(atom_to_list(App) ++ ".app"),
+	case file:consult(FullName) of
+	{ok, [{application, _, Opts}]} ->
+		Env = proplists:get_value(env, Opts, []),
+		lists:keyreplace(env, 1, AppList, {env, Env});
+	{error, _Reason} ->
+		lists:keyreplace(env, 1, AppList, {env, []})
+	end.
diff --git a/src/sccp_masq.erl b/src/sccp_masq.erl
index 4d0027b..e5ac21b 100644
--- a/src/sccp_masq.erl
+++ b/src/sccp_masq.erl
@@ -31,23 +31,6 @@
 	  last_access	% timestamp of last usage
 	}).
 
-% Convert a list of digits to an integer value
-digit_list2int(Int, []) ->
-	Int;
-digit_list2int(Int, [Digit|Tail]) ->
-	digit_list2int(Int*10 + Digit, Tail).
-digit_list2int(Digits) when is_list(Digits) ->
-	digit_list2int(0, Digits).
-
-% Convert an integer value into a list of decimal digits
-int2digit_list(0, Digits) when is_list(Digits) ->
-	Digits;
-int2digit_list(Int, Digits) when is_integer(Int), is_list(Digits) ->
-	Digit = Int rem 10,
-	int2digit_list(Int div 10, [Digit|Digits]).
-int2digit_list(Int) when is_integer(Int) ->
-	int2digit_list(Int, []).
-
 -define(MASQ_GT_BASE, 12340000).
 -define(MASQ_GT_MAX, 9999).
 
@@ -58,7 +41,7 @@
 	undef;
 masq_try_alloc(DigitsOrig, Offset) ->
 	Try = ?MASQ_GT_BASE + Offset,
-	TryDigits = int2digit_list(Try),
+	TryDigits = osmo_util:int2digit_list(Try),
 	EtsRet = ets:insert_new(get(sccp_masq_orig),
 				#sccp_masq_rec{digits_in = DigitsOrig,
 					       digits_out = TryDigits}),