Browse code

*really* final

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
Showing 1 changed files
... ...
@@ -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