Fix search path for port driver

This commit is contained in:
Alexey Romanov
2010-10-26 10:51:09 +04:00
parent 93e4e74461
commit 92668f10ef

View File

@@ -520,9 +520,8 @@ value_to_sql(X) -> sqlite3_lib:value_to_sql(X).
-spec init([any()]) -> {'ok', #state{}} | {'stop', string()}. -spec init([any()]) -> {'ok', #state{}} | {'stop', string()}.
init(Options) -> init(Options) ->
Dbase = proplists:get_value(db, Options), Dbase = proplists:get_value(db, Options),
{?MODULE, _, FileName} = code:get_object_code(?MODULE), PrivDir = get_priv_dir(),
SearchDir = filename:join(filename:dirname(FileName), "../priv"), case erl_ddll:load(PrivDir, atom_to_list(?DRIVER_NAME)) of
case erl_ddll:load(SearchDir, atom_to_list(?DRIVER_NAME)) of
ok -> ok ->
Port = open_port({spawn, create_port_cmd(Dbase)}, [binary]), Port = open_port({spawn, create_port_cmd(Dbase)}, [binary]),
{ok, #state{port = Port, ops = Options}}; {ok, #state{port = Port, ops = Options}};
@@ -677,6 +676,16 @@ code_change(_OldVsn, State, _Extra) ->
%%% Internal functions %%% Internal functions
%%-------------------------------------------------------------------- %%--------------------------------------------------------------------
get_priv_dir() ->
case code:priv_dir(sqlite3) of
{error, bad_name} ->
%% application isn't in path, fall back
{?MODULE, _, FileName} = code:get_object_code(?MODULE),
filename:join(filename:dirname(FileName), "../priv");
Dir ->
Dir
end.
-define(SQL_EXEC_COMMAND, 2). -define(SQL_EXEC_COMMAND, 2).
-define(SQL_CREATE_FUNCTION, 3). -define(SQL_CREATE_FUNCTION, 3).