From b51b44afb91afbecf5b9594f9034fa9eb7daf1bd Mon Sep 17 00:00:00 2001 From: aCaB Date: Mon, 10 Nov 2008 17:36:55 +0000 Subject: [PATCH] *really* final git-svn-id: file:///var/lib/svn/clamav-devel/branches/dlopen@4369 77e5149b-7576-45b1-b177-96237e5ba77b --- libclamav/readdb.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/libclamav/readdb.c b/libclamav/readdb.c index 462ab5086..60f945ac7 100644 --- a/libclamav/readdb.c +++ b/libclamav/readdb.c @@ -87,19 +87,29 @@ int have_rar = 0; void cli_rarload(void) { lt_dlhandle rhandle; + #ifndef CL_THREAD_SAFE if(is_rar_initd) return; is_rar_initd = 1; #endif - if(lt_dlinit()) cli_errmsg("Cannot init ltdl\n"); + if(lt_dlinit()) { + cli_warnmsg("Cannot init ltdl - unrar support unavailable\n"); + return; + } rhandle = lt_dlopenext("libclamunrar_iface"); - if (!rhandle) { cli_errmsg("Cannot dlopen: %s\n", lt_dlerror()); return; } + if (!rhandle) { + cli_dbgmsg("Cannot dlopen: %s - unrar support unavailable\n", lt_dlerror()); + return; + } if (!(cli_unrar_open = (int(*)(int, const char *, unrar_state_t *))lt_dlsym(rhandle, "unrar_open")) || !(cli_unrar_extract_next_prepare = (int(*)(unrar_state_t *, const char *))lt_dlsym(rhandle, "unrar_extract_next_prepare")) || !(cli_unrar_extract_next = (int(*)(unrar_state_t *, const char *))lt_dlsym(rhandle, "unrar_extract_next")) || !(cli_unrar_close = (void(*)(unrar_state_t *))lt_dlsym(rhandle, "unrar_close")) - ) { cli_errmsg("Cannot resolve: %s\n", lt_dlerror()); return; } - cli_errmsg("RAR IS FOUND!\n"); + ) { + /* ideally we should never land here, we'd better warn so */ + cli_warnmsg("Cannot resolve: %s (version mismatch?) - unrar support unavailable\n", lt_dlerror()); + return; + } have_rar = 1; }