Browse code

c4w: log libclamav errors.

Török Edvin authored on 2010/11/10 21:05:26
Showing 3 changed files
... ...
@@ -818,3 +818,25 @@ CLAMAPI void Scan_ReloadDatabase(void) {
818 818
 	logg("^Database reload requested received while reload is pending\n");
819 819
     InterlockedDecrement(&reload_waiters);
820 820
 }
821
+
822
+void msg_callback(enum cl_msg severity, const char *fullmsg, const char *msg, void *ctx)
823
+{
824
+    struct scan_ctx *sctx = (struct scan_ctx*)ctx;
825
+    const void *instance = sctx ? sctx->inst : NULL;
826
+    int fd = sctx ? sctx->entryfd : -1;
827
+    char sv;
828
+    switch (severity) {
829
+	case CL_MSG_ERROR:
830
+	    sv = '!';
831
+	    break;
832
+	case CL_MSG_WARN:
833
+	    sv = '^';
834
+	    break;
835
+	default:
836
+	    sv = '*';
837
+	    break;
838
+    }
839
+
840
+    logg("%c[LibClamAV] (instance %p, clamav context %p, fd %d): %s",
841
+	 sv, instance, sctx, fd, msg);
842
+}
... ...
@@ -21,5 +21,6 @@
21 21
 #define __INTERFACE_H
22 22
 
23 23
 BOOL interface_setup(void);
24
+void msg_callback(enum cl_msg severity, const char *fullmsg, const char *msg, void *ctx);
24 25
 
25
-#endif
26 26
\ No newline at end of file
27
+#endif
... ...
@@ -45,6 +45,7 @@ BOOL init() {
45 45
     *slash='\0';
46 46
     SetDllDirectory(whereami);
47 47
     __try {
48
+	cl_set_clcb_msg(msg_callback);
48 49
 	ret = cl_init(CL_INIT_DEFAULT);
49 50
     }
50 51
     __except(EXCEPTION_EXECUTE_HANDLER) { ret = 1; }