[erlang-questions] Retrieving priv directory path

Håkan Mattsson hm@REDACTED
Wed Oct 26 10:37:56 CEST 2011


On Wed, Oct 26, 2011 at 6:50 AM, Garrett Smith <g@REDACTED> wrote:
> Hi Nikola,
>
> On Tue, Oct 25, 2011 at 6:42 PM, Nikola Skoric <nskoric@REDACTED> wrote:
>> What would be universal way to get priv dir path?
>>
>> Currently I retrieve priv dir like this:
>>
>> priv_dir(App) ->
>>    case code:priv_dir(App) of
>>        {error, bad_name} ->
>>            {ok, Cwd} = file:get_cwd(),
>>            Cwd ++ "/" ++ "priv/";
>>        Priv ->
>>            Priv ++ "/"
>>    end.
>>
>> First case is when I develop code, it does not work when I make a
>> release. When I make a release, core:priv_dir returns {error,
>> bad_name} because application:get_application returns something that
>> core:priv_dir doesn't agree with.
>>
>> So, how do you do it?
>
> I use this:
>
> priv_dir(Mod) ->
>    Ebin = filename:dirname(code:which(Mod)),
>    filename:join(filename:dirname(Ebin), "priv").

Keep in mind that this trick not necessarily will work if you are putting
parts of your application in an archive. In that case you need to use
code:priv_dir/1 or code:lib_dir/2 in order to find the correct priv dir.

/Håkan



More information about the erlang-questions mailing list