Adapt for running from escript.

This commit is contained in:
Anton Makarov
2025-09-08 15:41:48 +03:00
parent fd5140f5fb
commit 9a5b1625f3

View File

@@ -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).