Quicky: User_default
Chris Campbell
cyberdanx@REDACTED
Fri Jan 20 23:00:37 CET 2006
Hi,
How do you load user_default? The advice in the manual doesn't seem
to work. .erlang is read (confirmed with io:format), but it doesn't
load the user defaults file. Actually, it may load it but mm(), etc
don't become available. This worked before, but I reinstalled
everything and can't remember the fix.
Cheers,
Chris
~/.erlang
code:load_abs("/home/danx/user_default.erl").
~/user_default.erl
-module(user_default).
-export([mm/0, modified_modules/0, lm/0]).
mm() ->
modified_modules().
modified_modules() ->
[M || {M, _} <- code:all_loaded(), module_modified(M) == true].
module_modified(Module) ->
case code:is_loaded(Module) of
{file, preloaded} ->
false;
{file, Path} ->
CompileOpts = proplists:get_value(compile, Module:module_info()),
CompileTime = proplists:get_value(time, CompileOpts),
Src = proplists:get_value(source, CompileOpts),
module_modified(Path, CompileTime, Src);
_ ->
false
end.
module_modified(Path, PrevCompileTime, PrevSrc) ->
case find_module_file(Path) of
false ->
false;
ModPath ->
{ok, {_, [{_, CB}]}} = beam_lib:chunks(ModPath, ["CInf"]),
CompileOpts = binary_to_term(CB),
CompileTime = proplists:get_value(time, CompileOpts),
Src = proplists:get_value(source, CompileOpts),
not (CompileTime == PrevCompileTime) and (Src == PrevSrc)
end.
find_module_file(Path) ->
case file:read_file_info(Path) of
{ok, _} ->
Path;
_ ->
%% may be the path was changed?
case code:where_is_file(filename:basename(Path)) of
non_existing ->
false;
NewPath ->
NewPath
end
end.
lm() ->
[c:l(M) || M <- mm()].
More information about the erlang-questions
mailing list