diff --git a/src/sqlite3.erl b/src/sqlite3.erl index c3cf6ea..8977b8c 100644 --- a/src/sqlite3.erl +++ b/src/sqlite3.erl @@ -1072,12 +1072,36 @@ 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"); + case is_escript() of + {true,Escript} -> + io:format("Escript = ~p~n", [Escript]), + {Pref,Suf} = lists:split(erlang:length(Escript), Which), + io:format("Pref = ~p~n", [Pref]), + io:format("Suf = ~p~n", [Suf]), + RootDir = filename:dirname(filename:dirname(Pref)), + AppsDir = filename:join(RootDir, "lib"), + io:format("AppsDir = ~p~n", [AppsDir]), + SqDir = filename:dirname(filename:dirname(Suf)), + filename:join([AppsDir, [$.|SqDir], "priv"]); % prepend "." to suffix that starts with "/" + false -> + {?MODULE, _, FileName} = code:get_object_code(?MODULE), + filename:join(filename:dirname(FileName), "../priv") + end; Dir -> Dir end. +is_escript() -> + case erlang:function_exported(escript, script_name, 0) of + true -> + try + {true, filename:absname(escript:script_name())} + catch + _:_ -> false + end; + false -> false + end. + -define(SQL_EXEC_COMMAND, 2). -define(SQL_CREATE_FUNCTION, 3). -define(SQL_BIND_AND_EXEC_COMMAND, 4).