33 #include <gwenhywfar/buffer.h>
34 #include <gwenhywfar/debug.h>
35 #include <gwenhywfar/directory.h>
36 #include <gwenhywfar/pathmanager.h>
37 #include <gwenhywfar/gwenhywfar.h>
39 #include <sys/types.h>
81 const char *fileName){
94 p->fileName=strdup(fileName);
105 if (--(p->refCount)==0) {
171 const char *destLib){
180 pm->name=strdup(name);
181 pm->destLib=strdup(destLib);
182 pm->plugins=GWEN_Plugin_List_new();
192 GWEN_Plugin_List_free(pm->plugins);
211 const char *callingLib,
223 const char *callingLib,
237 const char *callingLib,
249 const char *callingLib,
262 const char *callingLib,
264 const char *varname){
275 snprintf(nbuffer,
sizeof(nbuffer), keypath);
278 if (RegOpenKey(HKEY_LOCAL_MACHINE, nbuffer, &hkey)){
285 nsize=
sizeof(nbuffer);
286 vsize=
sizeof(vbuffer);
287 if (ERROR_SUCCESS!=RegEnumValue(hkey,
296 if (strcasecmp(nbuffer, varname)==0 && typ==REG_SZ) {
308 "In RegKey \"%s\" the variable \"%s\" does not exist",
327 const char *modname){
360 "Could not load plugin \"%s\" from \"%s\"", modname, fname);
396 plugin=fn(pm, modname, fname);
427 "Could not load plugin \"%s\" (%s)", modname, fname);
454 plugin=fn(pm, modname, fname);
475 p=GWEN_Plugin_List_First(pm->plugins);
477 if (strcasecmp(p->name, s)==0)
479 p=GWEN_Plugin_List_Next(p);
496 GWEN_Plugin_List_Add(p, pm->plugins);
510 if (strcasecmp(pm->name, s)==0)
512 pm=GWEN_PluginManager_List_Next(pm);
529 "Plugin type \"%s\" already registered",
537 pm->destLib, pm->name);
543 "Plugin type \"%s\" registered",
559 "Plugin type \"%s\" not registered",
567 pm->destLib, pm->name);
571 GWEN_PluginManager_List_Del(pm);
573 "Plugin type \"%s\" unregistered",
580 GWEN_PLUGIN_DESCRIPTION_LIST2*
582 GWEN_PLUGIN_DESCRIPTION_LIST2 *pl;
598 pl=GWEN_PluginDescription_List2_new();
608 "Error loading plugin description in \"%s\"", path);
613 if (GWEN_PluginDescription_List2_GetSize(pl)==0) {
614 GWEN_PluginDescription_List2_free(pl);
633 const char *modName) {
634 GWEN_PLUGIN_DESCRIPTION_LIST2 *dl;
640 GWEN_PLUGIN_DESCRIPTION_LIST2_ITERATOR *dit;
642 dit=GWEN_PluginDescription_List2_First(dl);
646 d=GWEN_PluginDescription_List2Iterator_Data(dit);
650 d=GWEN_PluginDescription_List2Iterator_Next(dit);
652 GWEN_PluginDescription_List2Iterator_free(dit);
670 DBG_ERROR(0,
"Adding plugin [%s] of type [%s]",
673 GWEN_Plugin_List_Add(p, pm->plugins);