Roxen.git/
server/
base_server/
configuration.pike
Branch:
Tag:
Non-build tags
All tags
No tags
1997-06-11
1997-06-11 18:50:08 by Henrik Grubbström (Grubba) <grubba@grubba.org>
3bbda8d6f4f5ba9913ce5b2d11346d5883573526 (
149
lines) (+
99
/-
50
)
[
Show
|
Annotate
]
Branch:
5.2
Added patch for module-initialization.
Rev: server/base_server/configuration.pike:1.34
1:
-
string cvs_version = "$Id: configuration.pike,v 1.
33
1997/
05
/
31
21
:
44
:
22
grubba Exp $";
+
string cvs_version = "$Id: configuration.pike,v 1.
34
1997/
06
/
11
18
:
50
:
08
grubba Exp $";
#include <module.h> #include <roxen.h> /* A configuration.. */
1375:
object me; mapping tmp; int pr;
+
array err;
#ifdef MODULE_DEBUG perror("Modules: Enabling "+module->name+" # "+id+" ... "); #endif
-
+
if(module->copies) {
-
me = module["program"]();
-
if(module->copies[id])
-
{
+
if (err = catch(
me = module["program"]()
)) {
+
report_error("Couldn't clone module \"" + module->name + "\"\n" +
+
describe_backtrace(err))
;
+
if
(module->copies[id])
{
+
#ifdef
MODULE_DEBUG
+
perror("Keeping old copy\n");
+
#endif
+
}
+
return(module->copies[id]);
+
}
+
if(module->copies[id])
{
+
#ifdef MODULE_DEBUG
+
perror("Disabling old copy ... ");
+
#endif
+
if (err = catch{
module->copies[id]->stop();
-
+
}) {
+
report_error("Error during disabling of module \"" + module->name +
+
"\"\n" + describe_backtrace(err));
+
}
destruct(module->copies[id]); } } else {
-
if(objectp(module->master))
+
if(objectp(module->master))
{
me = module->master;
-
else
-
me = module["program"]();
+
}
else
{
+
if (err = catch(
me = module["program"]()
)) {
+
report_error("Couldn't clone module \"" + module->name + "\"\n" +
+
describe_backtrace(err))
;
+
return(0);
}
-
+
}
+
}
-
+
#ifdef MODULE_DEBUG
+
perror("Initializing ");
+
#endif
-
if(
(
module->type & MODULE_LOCATION
)
|
|
-
(module->type
&
MODULE_EXTENSION)
||
-
(module->type
&
MODULE_FILE_EXTENSION
)
|
|
-
(module->type &
MODULE_LOGGER
)
|
|
-
(module->type
&
MODULE_URL)
||
-
(module->type &
MODULE_LAST
)
|
|
-
(module->type
&
MODULE_FILTER)
||
-
(module->type
&
MODULE_PARSER
)
|
|
-
(module->type &
MODULE_FIRST))
+
if
(module->type &
(
MODULE_LOCATION
|
MODULE_EXTENSION
|
+
MODULE_FILE_EXTENSION | MODULE_LOGGER |
+
MODULE_URL
|
MODULE_LAST |
+
MODULE_FILTER
|
MODULE_PARSER | MODULE_FIRST))
{ me->defvar("_priority", 5, "Priority", TYPE_INT_LIST, "The priority of the module. 9 is highest and 0 is lowest."
1463:
" or auth-module. The default is 'deny ip=*'"); } }
-
} else
+
} else
{
me->defvar("_priority", 0, "", TYPE_INT, "", 0, 1);
-
+
}
me->defvar("_comment", "", " Comment", TYPE_TEXT_FIELD, "An optional comment. This has no effect on the module, it "
1478:
me->setvars(retrieve(modname + "#" + id, this)); mixed err;
-
if(
err=catch{if
(me->start) me->start(0, this);
})
-
{
-
report_error("Error while initiating module copy of "
+module->name+"\n"
-
+ describe_backtrace(err));
+
if((me->start)
&& (err = catch{
+
me->start(0, this);
+
}))
{
+
report_error("Error while initiating module copy of "
+
+
module->name
+
"\n" +
describe_backtrace(err));
destruct(me); return 0; }
-
pr = me->query("_priority");
+
if (err = catch(
pr = me->query("_priority")
)) {
+
report_error("Error while initiating module copy of " +
+
module->name + "\n" + describe_backtrace(err))
;
+
pr = 3;
+
}
-
if(
(
module->type&MODULE_EXTENSION)
&&
arrayp
(me->query_extensions()
))
-
{
+
if(module->type
&
MODULE_EXTENSION)
{
+
if
(
err = catch {
+
array arr =
me->query_extensions()
;
+
if (arrayp(arr))
{
string foo;
-
foreach(
me->query_extensions()
, foo )
+
foreach(
arr
, foo )
if(pri[pr]->extension_modules[ foo ]) pri[pr]->extension_modules[foo] += ({ me }); else pri[pr]->extension_modules[foo] = ({ me }); }
-
+
}) {
+
report_error("Error while initiating module copy of " +
+
module->name + "\n" + describe_backtrace(err));
+
}
+
}
-
if(
(
module->type & MODULE_FILE_EXTENSION)
&&
-
arrayp
(me->query_file_extensions()
))
-
{
+
if(module->type & MODULE_FILE_EXTENSION)
{
+
if (err = catch {
+
array arr =
me->query_file_extensions()
;
+
if (arrayp(arr))
{
string foo; foreach( me->query_file_extensions(), foo ) if(pri[pr]->file_extension_modules[foo] )
1508:
else pri[pr]->file_extension_modules[foo]=({me}); }
+
}) {
+
report_error("Error while initiating module copy of " +
+
module->name + "\n" + describe_backtrace(err));
+
}
+
}
if(module->type & MODULE_TYPES) {
1515:
types_fun = me->type_from_extension; }
-
+
if((module->type & MODULE_MAIN_PARSER)) { parse_module = me;
-
if(_toparse_modules)
-
map(_toparse_modules,
-
lambda(object
o,
object
me)
-
{
me
->add_parse_module(o);
}
,
me
);
+
if
(_toparse_modules)
{
+
map(_toparse_modules,
lambda(object
o,
object
me,
mapping
module)
{
+
array err;
+
if
(err
=
catch{me
->add_parse_module(o);}
)
{
+
report_error("Error while initiating module copy of " +
+
module->name + "\n" + describe_backtrace(err
)
)
;
}
-
+
}, me, module);
+
}
+
}
if(module->type & MODULE_PARSER) {
-
if(parse_module)
+
if(parse_module)
{
+
if (err = catch {
parse_module->add_parse_module( me );
-
+
}) {
+
report_error("Error while initiating module copy of " +
+
module->name + "\n" + describe_backtrace(err));
+
}
+
}
_toparse_modules += ({ me }); }
1576:
perror("New module..."); #endif enabled_modules[modname+"#"+id] = 1;
-
store( "EnabledModules",enabled_modules, 1, this);
+
store( "EnabledModules",
enabled_modules, 1, this);
} #ifdef MODULE_DEBUG perror(" Done.\n");