diff options
author | lukeg <lukeg> | 2003-02-21 19:01:14 +0000 |
---|---|---|
committer | lukeg <lukeg> | 2003-02-21 19:01:14 +0000 |
commit | e7d48fe500f6ed676ee1b212ebd61408bced1c5b (patch) | |
tree | 11a756c7bb4906f3e186c1cb8331cb7ed27bc69c /src/edit_mod.erl | |
download | ermacs-fork-e7d48fe500f6ed676ee1b212ebd61408bced1c5b.tar.gz |
*** empty log message ***
Diffstat (limited to 'src/edit_mod.erl')
-rw-r--r-- | src/edit_mod.erl | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/src/edit_mod.erl b/src/edit_mod.erl new file mode 100644 index 0000000..ae5be54 --- /dev/null +++ b/src/edit_mod.erl @@ -0,0 +1,42 @@ +%%%---------------------------------------------------------------------- +%%% File : edit_mod.erl +%%% Author : Luke Gorrie <luke@bluetail.com> +%%% Purpose : Module loader +%%% Created : 28 Apr 2001 by Luke Gorrie <luke@bluetail.com> +%%%---------------------------------------------------------------------- + +-module(edit_mod). +-author('luke@bluetail.com'). + +-export([init/0, require/1, load/1]). + +init() -> + ets:new(?MODULE, [set, named_table, public]), + ok. + +require(Mod) -> + case ets:lookup(?MODULE, Mod) of + [] -> % not initialised + case load(Mod) of + ok -> + ok; + {error, Reason} -> + {error, Reason} + end; + [_] -> % already initialised + ok + end. + +load(Mod) -> + case catch Mod:mod_init() of + ok -> + ets:insert(?MODULE, {Mod}), + ok; + {'EXIT', {undef, _}} -> + {error, {missing, Mod, mod_init, 0}}; + {error, Reason} -> + {error, Reason}; + Unexpected -> + {error, {unexpected, Unexpected}} + end. + |