#include "ircd.h"

int LoadModule(char *module,char *name,Mods *head) {
  Mods node;
  if ((node=(ModNode *)calloc(1,sizeof(ModNode)))!=NULL) {
    sprintf(node->ModuleName,"%s",name);
    printf("Loading Module: %s\n",node->ModuleName);
    node->handle = dlopen(module,RTLD_LAZY);
    if (!node->handle) {
      printf("%s\n", dlerror());
      return(0);
      }
    node->char_ptr = dlsym(node->handle, "Description");
    if (!node->char_ptr) {
      printf("%s\n", dlerror());
      exit(0);
      }
    sprintf(node->ModuleDescription,"%s",node->char_ptr("test"));
    (Mods *)node->next=*head;
    *head = node;
    }
  return(1);
  }

int ListModules(Mods head) {
  Mods t;
  t = head;
  printf("Listing Modules\n");
  while (t) {
    printf("[%s][%s]\n",t->ModuleName,t->ModuleDescription);
    (Mods *)t = t->next;
    }
  return(1);
  }