Lines Matching defs:stack
2 * services/modstack.c - stack of modules
39 * This file contains functions to help maintain a stack of modules.
76 modstack_init(struct module_stack* stack)
78 stack->num = 0;
79 stack->mod = NULL;
83 modstack_config(struct module_stack* stack, const char* module_conf)
87 stack->num = count_modules(module_conf);
88 if(stack->num == 0) {
92 if(stack->num > MAX_MODULE) {
94 stack->num, MAX_MODULE);
97 stack->mod = (struct module_func_block**)calloc((size_t)
98 stack->num, sizeof(struct module_func_block*));
99 if(!stack->mod) {
103 for(i=0; i<stack->num; i++) {
104 stack->mod[i] = module_factory(&module_conf);
105 if(!stack->mod[i]) {
169 modstack_setup(struct module_stack* stack, const char* module_conf,
173 if(stack->num != 0)
174 modstack_desetup(stack, env);
176 if(!modstack_config(stack, module_conf)) {
180 for(i=0; i<stack->num; i++) {
182 i, stack->mod[i]->name);
183 fptr_ok(fptr_whitelist_mod_init(stack->mod[i]->init));
184 if(!(*stack->mod[i]->init)(env, i)) {
186 stack->mod[i]->name);
194 modstack_desetup(struct module_stack* stack, struct module_env* env)
197 for(i=0; i<stack->num; i++) {
198 fptr_ok(fptr_whitelist_mod_deinit(stack->mod[i]->deinit));
199 (*stack->mod[i]->deinit)(env, i);
201 stack->num = 0;
202 free(stack->mod);
203 stack->mod = NULL;
207 modstack_find(struct module_stack* stack, const char* name)
210 for(i=0; i<stack->num; i++) {
211 if(strcmp(stack->mod[i]->name, name) == 0)