X-Git-Url: http://git.silc.fi/gitweb/?a=blobdiff_plain;f=lib%2Fsilcacc%2Fsilcacc.c;h=4f54308c79720d5fb4f3924ffd11de4ff112331c;hb=87f7fe2aac95581dbd3e6258b6276da08952c13d;hp=e50a0eae0214f81ebc941033b022b0dabe332ecf;hpb=1218ffebfc22091283bbd73886c8e7cd734e856f;p=crypto.git diff --git a/lib/silcacc/silcacc.c b/lib/silcacc/silcacc.c index e50a0eae..4f54308c 100644 --- a/lib/silcacc/silcacc.c +++ b/lib/silcacc/silcacc.c @@ -4,7 +4,7 @@ Author: Pekka Riikonen - Copyright (C) 2007 Pekka Riikonen + Copyright (C) 2007 - 2008 Pekka Riikonen This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -17,22 +17,17 @@ */ -#include "silc.h" +#include "silccrypto.h" #include "softacc.h" /************************** Types and definitions ***************************/ -#ifndef SILC_SYMBIAN -/* Dynamically registered list of accelerators. */ -SilcDList silc_acc_list = NULL; -#endif /* SILC_SYMBIAN */ - /* Static list of accelerators */ const SilcAcceleratorStruct *silc_default_accs[] = { #ifndef SILC_SYMBIAN /* Software accelerator */ - &softacc, + &silc_softacc, #endif /* SILC_SYMBIAN */ NULL }; @@ -43,13 +38,18 @@ const SilcAcceleratorStruct *silc_default_accs[] = SilcBool silc_acc_register(const SilcAccelerator acc) { + SilcDList silc_acc_list; + if (!acc) return FALSE; + silc_acc_list = silc_global_get_var("silc_acc_list", FALSE); if (!silc_acc_list) { - silc_acc_list = silc_dlist_init(); + silc_acc_list = silc_global_set_var("silc_acc_list", + sizeof(*silc_acc_list), NULL, FALSE); if (!silc_acc_list) return FALSE; + silc_dlist_init_static(silc_acc_list); } SILC_LOG_DEBUG(("Register accelerator %p, name %s", acc, acc->name)); @@ -62,19 +62,20 @@ SilcBool silc_acc_register(const SilcAccelerator acc) void silc_acc_unregister(SilcAccelerator acc) { + SilcDList silc_acc_list; + if (!acc) return; + silc_acc_list = silc_global_get_var("silc_acc_list", FALSE); if (!silc_acc_list) return; SILC_LOG_DEBUG(("Unregister accelerator %p, name %s", acc, acc->name)); silc_dlist_del(silc_acc_list, acc); - if (!silc_dlist_count(silc_acc_list)) { - silc_dlist_uninit(silc_acc_list); - silc_acc_list = NULL; - } + if (!silc_dlist_count(silc_acc_list)) + silc_global_del_var("silc_acc_list", FALSE); } /* Initialize accelerator */ @@ -111,6 +112,7 @@ SilcBool silc_acc_uninit(SilcAccelerator acc) SilcDList silc_acc_get_supported(void) { + SilcDList silc_acc_list; SilcDList list; SilcAccelerator acc; int i; @@ -119,6 +121,7 @@ SilcDList silc_acc_get_supported(void) if (!list) return NULL; + silc_acc_list = silc_global_get_var("silc_acc_list", FALSE); if (silc_acc_list) { silc_dlist_start(silc_acc_list); while ((acc = silc_dlist_get(silc_acc_list))) @@ -135,6 +138,7 @@ SilcDList silc_acc_get_supported(void) SilcAccelerator silc_acc_find(const char *name) { + SilcDList silc_acc_list; SilcAccelerator acc; int i; @@ -143,6 +147,7 @@ SilcAccelerator silc_acc_find(const char *name) SILC_LOG_DEBUG(("Find accelerator %s", name)); + silc_acc_list = silc_global_get_var("silc_acc_list", FALSE); if (silc_acc_list) { silc_dlist_start(silc_acc_list); while ((acc = silc_dlist_get(silc_acc_list))) {