Show
Ignore:
Timestamp:
01/27/08 04:24:46 (10 years ago)
Author:
Theo Schlossnagle <jesus@omniti.com>
git-committer:
Theo Schlossnagle <jesus@omniti.com> 1201407886 +0000
git-parent:

[625628acfb7f3623d81f48a89a59459ebbb8dfd9]

git-author:
Theo Schlossnagle <jesus@omniti.com> 1201407886 +0000
Message:

modules actually load now.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • src/noit_module.c

    rcaa7b86 re102af3  
    2323  noit_module_t *module; 
    2424 
    25   if(!noit_conf_get_string("/global/modules/directory", &base)) 
     25  if(!noit_conf_get_string(NULL, "/global/modules/directory", &base)) 
    2626    base = strdup(""); 
    2727 
     
    4848  } 
    4949 
    50   module = (noit_module_t *)dlsymbol; 
    51   if(noit_module_validate_magic(module) == -1) { 
     50  if(noit_module_validate_magic((noit_module_t *)dlsymbol) == -1) { 
    5251    noit_log(noit_stderr, NULL, "I can't understand module %s\n", name); 
    5352    dlclose(dlhandle); 
     
    5554  } 
    5655 
     56  module = calloc(1, sizeof(*module)); 
     57  memcpy(module, dlsymbol, sizeof(*module)); 
     58 
     59  if(module->onload(module)) { 
     60    free(module); 
     61    return -1; 
     62  } 
    5763  noit_hash_store(&modules, module->name, strlen(module->name), module); 
    5864  return 0; 
     
    6874} 
    6975 
     76void noit_module_init() { 
     77  noit_conf_section_t *sections; 
     78  int i, cnt = 0; 
     79 
     80  sections = noit_conf_get_sections(NULL, "/global/modules/module", &cnt); 
     81  if(!sections) return; 
     82  for(i=0; i<cnt; i++) { 
     83    noit_hash_table *config; 
     84    noit_module_t *module; 
     85    char module_file[PATH_MAX]; 
     86    char module_name[256]; 
     87    if(!noit_conf_get_stringbuf(sections[i], "image", 
     88                                module_file, sizeof(module_file))) { 
     89      noit_log(noit_stderr, NULL, 
     90               "No image defined in module stanza %d\n", i+1); 
     91      continue; 
     92    } 
     93    if(!noit_conf_get_stringbuf(sections[i], "name", 
     94                                module_name, sizeof(module_name))) { 
     95      noit_log(noit_stderr, NULL, 
     96               "No name defined in module stanza %d\n", i+1); 
     97      continue; 
     98    } 
     99    if(noit_module_load(module_file, module_name)) { 
     100      noit_log(noit_stderr, NULL, 
     101               "Could not load %s:%s\n", module_file, module_name); 
     102      continue; 
     103    } 
     104    config = noit_conf_get_hash(sections[i], "config/*"); 
     105    module = noit_module_lookup(module_name); 
     106    if(module->config(module, config)) { 
     107      noit_log(noit_stderr, NULL, 
     108               "Configure failed on %s:%s\n", module_file, module_name); 
     109      continue; 
     110    } 
     111    noit_log(noit_stderr, NULL, "Module %s:%s successfully loaded.\n", 
     112             module_file, module_name); 
     113  } 
     114}