aboutsummaryrefslogtreecommitdiffstats
path: root/lib/wx/src/wxe_util.erl
diff options
context:
space:
mode:
authorDan Gudmundsson <[email protected]>2010-10-19 10:34:08 +0200
committerDan Gudmundsson <[email protected]>2010-11-15 10:13:07 +0100
commit029429cae951a9896d544eb7693fd130e4abc979 (patch)
tree4999245716dfbee0b648f27c2cfbf83cbc043967 /lib/wx/src/wxe_util.erl
parent8577598667bff43f503f3cae87934c3e9918d135 (diff)
downloadotp-029429cae951a9896d544eb7693fd130e4abc979.tar.gz
otp-029429cae951a9896d544eb7693fd130e4abc979.tar.bz2
otp-029429cae951a9896d544eb7693fd130e4abc979.zip
Remove ostype sub dirs below wx/priv
This was intended for distributing several binaries in one package, in standalone version, it has no need when included in otp.
Diffstat (limited to 'lib/wx/src/wxe_util.erl')
-rw-r--r--lib/wx/src/wxe_util.erl105
1 files changed, 15 insertions, 90 deletions
diff --git a/lib/wx/src/wxe_util.erl b/lib/wx/src/wxe_util.erl
index 78068fe1b0..02bca62486 100644
--- a/lib/wx/src/wxe_util.erl
+++ b/lib/wx/src/wxe_util.erl
@@ -201,8 +201,7 @@ check_previous() ->
after 0 -> ok
end.
-
-%% If you want anything done, do it yourself.
+%% Get gl dynamic library
wxgl_dl() ->
DynLib0 = "erl_gl",
@@ -213,17 +212,9 @@ wxgl_dl() ->
_ ->
DynLib0 ++ ".so"
end,
- GLLib = filename:join(PrivDir, DynLib),
- case file:read_file_info(GLLib) of
- {ok, _} ->
- GLLib;
- {error,_} ->
- error({enoent, GLLib})
- end.
+ filename:join(PrivDir, DynLib).
-
-priv_dir(Driver) ->
- Type = erlang:system_info(system_architecture),
+priv_dir(Driver0) ->
{file, Path} = code:is_loaded(?MODULE),
Priv = case filelib:is_regular(Path) of
true ->
@@ -232,90 +223,24 @@ priv_dir(Driver) ->
false ->
code:priv_dir(wx)
end,
- try
- {ok, Dirs0} = file:list_dir(Priv),
- Dirs1 = split_dirs(Dirs0),
- Dirs = lists:reverse(lists:sort(Dirs1)),
+ Driver = case os:type() of
+ {win32,_} ->
+ Driver0 ++ ".dll";
+ _ ->
+ Driver0 ++ ".so"
+ end,
- Best = best_dir(hd(split_dirs([Type])),Dirs, Driver, Priv),
- filename:join(Priv, Best)
- catch _:_ ->
- error_logger:format("ERROR: Could not find suitable \'~s\' for ~s in: ~s~n",
- [Driver, Type, Priv]),
+ case file:read_file_info(filename:join(Priv, Driver)) of
+ {ok, _} ->
+ Priv;
+ {error, _} ->
+ error_logger:format("ERROR: Could not find \'~s\' in: ~s~n",
+ [Driver, Priv]),
erlang:error({load_driver, "No driver found"})
end.
-best_dir(Dir, Dirs0, Driver, Priv) ->
- Dirs = [{D,D} || D <- Dirs0],
- best_dir(Dir, Dirs, [], Driver, Priv).
-
-best_dir(Pre, [{[],_}|R], Acc, Driver, Priv) -> %% Empty skip'em
- best_dir(Pre, R, Acc, Driver, Priv);
-best_dir(Pre, [{Pre,Dir}|R], Acc, Driver, Priv) ->
- Real = dir_app(lists:reverse(Dir)),
- case file:list_dir(filename:join(Priv,Real)) of
- {ok, Fs} ->
- case lists:any(fun(File) -> filename:rootname(File) =:= Driver end, Fs) of
- true -> Real; %% Found dir and it contains a driver
- false -> best_dir(Pre, R, Acc, Driver, Priv)
- end;
- _ ->
- best_dir(Pre, R, Acc, Driver, Priv)
- end;
-best_dir(Pre, [{[_|F],Dir}|R], Acc, Driver, Priv) ->
- best_dir(Pre, R, [{F,Dir}|Acc], Driver, Priv);
-best_dir(_Pre, [], [], _,_) -> throw(no_dir); %% Nothing found
-best_dir([_|Pre], [], Acc, Driver, Priv) ->
- best_dir(Pre, lists:reverse(Acc), [], Driver, Priv);
-best_dir([], _, _,_,_) -> throw(no_dir). %% Nothing found
-
-split_dirs(Dirs0) ->
- ToInt = fun(Str) ->
- try
- list_to_integer(Str)
- catch _:_ -> Str
- end
- end,
- Split = fun(Dir) ->
- Toks = tokens(Dir,".-"),
- lists:reverse([ToInt(Str) || Str <- Toks])
- end,
- lists:map(Split,Dirs0).
-
-dir_app([]) -> [];
-dir_app([Dir]) -> Dir;
-dir_app(Dir) ->
- dir_app2(Dir).
-dir_app2([Int]) when is_integer(Int) ->
- integer_to_list(Int);
-dir_app2([Str]) when is_list(Str) ->
- Str;
-dir_app2([Head|Rest]) when is_integer(Head) ->
- integer_to_list(Head) ++ dir_app2(Rest);
-dir_app2([Head|Rest]) when is_list(Head) ->
- Head ++ dir_app2(Rest).
-
strip(Src, Src) ->
[];
strip([H|R], Src) ->
[H| strip(R, Src)].
-tokens(S,Seps) ->
- tokens1(S, Seps, []).
-
-tokens1([C|S], Seps, Toks) ->
- case lists:member(C, Seps) of
- true -> tokens1(S, Seps, [[C]|Toks]);
- false -> tokens2(S, Seps, Toks, [C])
- end;
-tokens1([], _Seps, Toks) ->
- lists:reverse(Toks).
-
-tokens2([C|S], Seps, Toks, Cs) ->
- case lists:member(C, Seps) of
- true -> tokens1(S, Seps, [[C], lists:reverse(Cs) |Toks]);
- false -> tokens2(S, Seps, Toks, [C|Cs])
- end;
-tokens2([], _Seps, Toks, Cs) ->
- lists:reverse([lists:reverse(Cs)|Toks]).
-