git-svn-id: file:///var/lib/svn/clamav-devel/branches/dlopen@4369 77e5149b-7576-45b1-b177-96237e5ba77b
aCaB authored on 2008/11/11 02:36:55... | ... |
@@ -87,19 +87,29 @@ int have_rar = 0; |
87 | 87 |
|
88 | 88 |
void cli_rarload(void) { |
89 | 89 |
lt_dlhandle rhandle; |
90 |
+ |
|
90 | 91 |
#ifndef CL_THREAD_SAFE |
91 | 92 |
if(is_rar_initd) return; |
92 | 93 |
is_rar_initd = 1; |
93 | 94 |
#endif |
94 |
- if(lt_dlinit()) cli_errmsg("Cannot init ltdl\n"); |
|
95 |
+ if(lt_dlinit()) { |
|
96 |
+ cli_warnmsg("Cannot init ltdl - unrar support unavailable\n"); |
|
97 |
+ return; |
|
98 |
+ } |
|
95 | 99 |
rhandle = lt_dlopenext("libclamunrar_iface"); |
96 |
- if (!rhandle) { cli_errmsg("Cannot dlopen: %s\n", lt_dlerror()); return; } |
|
100 |
+ if (!rhandle) { |
|
101 |
+ cli_dbgmsg("Cannot dlopen: %s - unrar support unavailable\n", lt_dlerror()); |
|
102 |
+ return; |
|
103 |
+ } |
|
97 | 104 |
if (!(cli_unrar_open = (int(*)(int, const char *, unrar_state_t *))lt_dlsym(rhandle, "unrar_open")) || |
98 | 105 |
!(cli_unrar_extract_next_prepare = (int(*)(unrar_state_t *, const char *))lt_dlsym(rhandle, "unrar_extract_next_prepare")) || |
99 | 106 |
!(cli_unrar_extract_next = (int(*)(unrar_state_t *, const char *))lt_dlsym(rhandle, "unrar_extract_next")) || |
100 | 107 |
!(cli_unrar_close = (void(*)(unrar_state_t *))lt_dlsym(rhandle, "unrar_close")) |
101 |
- ) { cli_errmsg("Cannot resolve: %s\n", lt_dlerror()); return; } |
|
102 |
- cli_errmsg("RAR IS FOUND!\n"); |
|
108 |
+ ) { |
|
109 |
+ /* ideally we should never land here, we'd better warn so */ |
|
110 |
+ cli_warnmsg("Cannot resolve: %s (version mismatch?) - unrar support unavailable\n", lt_dlerror()); |
|
111 |
+ return; |
|
112 |
+ } |
|
103 | 113 |
have_rar = 1; |
104 | 114 |
} |
105 | 115 |
|