~louis/ubuntu/trusty/clamav/lp799623_fix_logrotate

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<!--Converted with LaTeX2HTML 2008 (1.71)
original version by:  Nikos Drakos, CBLU, University of Leeds
* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
* with significant contributions from:
  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>Database loading</TITLE>
<META NAME="description" CONTENT="Database loading">
<META NAME="keywords" CONTENT="clamdoc">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">

<META NAME="Generator" CONTENT="LaTeX2HTML v2008">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">

<LINK REL="STYLESHEET" HREF="clamdoc.css">

<LINK REL="next" HREF="node47.html">
<LINK REL="previous" HREF="node45.html">
<LINK REL="up" HREF="node43.html">
<LINK REL="next" HREF="node47.html">
</HEAD>

<BODY >

<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html821"
  HREF="node47.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
<A NAME="tex2html817"
  HREF="node43.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
<A NAME="tex2html811"
  HREF="node45.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
<A NAME="tex2html819"
  HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>  
<BR>
<B> Next:</B> <A NAME="tex2html822"
  HREF="node47.html">Error handling</A>
<B> Up:</B> <A NAME="tex2html818"
  HREF="node43.html">API</A>
<B> Previous:</B> <A NAME="tex2html812"
  HREF="node45.html">Initialization</A>
 &nbsp; <B>  <A NAME="tex2html820"
  HREF="node1.html">Contents</A></B> 
<BR>
<BR></DIV>
<!--End of Navigation Panel-->

<H3><A NAME="SECTION00073300000000000000">
Database loading</A>
</H3>
    The following set of functions provides an interface for loading
    the virus database:
    <PRE>
	const char *cl_retdbdir(void);

	int cl_load(const char *path, struct cl_engine *engine,
		    unsigned int *signo, unsigned int options);
</PRE>
    <code>cl_retdbdir()</code> returns the default (hardcoded) path to the directory
    with ClamAV databases.
    <code>cl_load()</code> loads a single database file or all databases from a
    given directory (when <code>path</code> points to a directory). The second
    argument is used for passing in the pointer to the engine that should
    be previously allocated with <code>cl_engine_new()</code>. A number of loaded
    signatures will be <SPAN  CLASS="textbf">added</SPAN> to <code>signo</code> <A NAME="tex2html23"
  HREF="footnode.html#foot336"><SUP><SPAN CLASS="arabic">10</SPAN></SUP></A>. The last argument can
    pass the following flags:
    
<UL>
<LI><SPAN  CLASS="textbf">CL_DB_STDOPT</SPAN>
<BR>
This is an alias for a recommended set of scan options.
</LI>
<LI><SPAN  CLASS="textbf">CL_DB_PHISHING</SPAN>
<BR>
Load phishing signatures.
</LI>
<LI><SPAN  CLASS="textbf">CL_DB_PHISHING_URLS</SPAN>
<BR>
Initialize the phishing detection module and load .wdb and .pdb files.
</LI>
<LI><SPAN  CLASS="textbf">CL_DB_PUA</SPAN>
<BR>
Load signatures for Potentially Unwanted Applications.
</LI>
<LI><SPAN  CLASS="textbf">CL_DB_OFFICIAL_ONLY</SPAN>
<BR>
Only load official signatures from digitally signed databases.
</LI>
<LI><SPAN  CLASS="textbf">CL_DB_BYTECODE</SPAN>
<BR>
Load bytecode.
    
</LI>
</UL>
    <code>cl_load()</code> returns <code>CL_SUCCESS</code> on success and another code on
    failure.
    <PRE>
	    ...
	    struct cl_engine *engine;
	    unsigned int sigs = 0;
	    int ret;

	if((ret = cl_init()) != CL_SUCCESS) {
	    printf("cl_init() error: %s\n", cl_strerror(ret));
	    return 1;
	}

	if(!(engine = cl_engine_new())) {
	    printf("Can't create new engine\n");
	    return 1;
	}

	ret = cl_load(cl_retdbdir(), engine, &amp;sigs, CL_DB_STDOPT);
</PRE>

<P>
<BR><HR>
<ADDRESS>
Tomasz Kojm
2010-03-10
</ADDRESS>
</BODY>
</HTML>