aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/edit_mod.erl
diff options
context:
space:
mode:
authorlukeg <lukeg>2003-02-21 19:01:14 +0000
committerlukeg <lukeg>2003-02-21 19:01:14 +0000
commite7d48fe500f6ed676ee1b212ebd61408bced1c5b (patch)
tree11a756c7bb4906f3e186c1cb8331cb7ed27bc69c /src/edit_mod.erl
downloadermacs-fork-e7d48fe500f6ed676ee1b212ebd61408bced1c5b.tar.gz
*** empty log message ***
Diffstat (limited to 'src/edit_mod.erl')
-rw-r--r--src/edit_mod.erl42
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.
+