git-svn-id: file:///var/lib/svn/clamav-devel/branches/newapi@4378 77e5149b-7576-45b1-b177-96237e5ba77b
Tomasz Kojm authored on 2008/11/11 23:42:12... | ... |
@@ -115,6 +115,20 @@ extern int cl_init(unsigned int options); |
115 | 115 |
#define CL_ENGINE_DEFAULT 0x0 |
116 | 116 |
extern struct cl_engine *cl_engine_new(unsigned int options); |
117 | 117 |
|
118 |
+enum cl_engine_field { |
|
119 |
+ CL_ENGINE_MAX_SCANSIZE, /* uint64_t */ |
|
120 |
+ CL_ENGINE_MAX_FILESIZE, /* uint64_t */ |
|
121 |
+ CL_ENGINE_MAX_RECURSION, /* uint32_t */ |
|
122 |
+ CL_ENGINE_MAX_FILES, /* uint32_t */ |
|
123 |
+ CL_ENGINE_MIN_CC_COUNT, /* uint32_t */ |
|
124 |
+ CL_ENGINE_MIN_SSN_COUNT, /* uint32_t */ |
|
125 |
+ CL_ENGINE_PUA_CATEGORIES /* (char *) */ |
|
126 |
+}; |
|
127 |
+ |
|
128 |
+extern int cl_engine_set(struct cl_engine *engine, enum cl_engine_field field, const void *val); |
|
129 |
+ |
|
130 |
+extern int cl_engine_get(struct cl_engine *engine, enum cl_engine_field field, const void *val); |
|
131 |
+ |
|
118 | 132 |
extern int cl_engine_compile(struct cl_engine *engine); |
119 | 133 |
|
120 | 134 |
extern struct cl_engine *cl_engine_dup(struct cl_engine *engine); |
... | ... |
@@ -257,6 +257,78 @@ struct cl_engine *cl_engine_new(unsigned int options) |
257 | 257 |
return new; |
258 | 258 |
} |
259 | 259 |
|
260 |
+int cl_engine_set(struct cl_engine *engine, enum cl_engine_field field, const void *val) |
|
261 |
+{ |
|
262 |
+ if(!engine || !val) |
|
263 |
+ return CL_ENULLARG; |
|
264 |
+ |
|
265 |
+ switch(field) { |
|
266 |
+ case CL_ENGINE_MAX_SCANSIZE: |
|
267 |
+ engine->maxscansize = *((uint64_t *) val); |
|
268 |
+ break; |
|
269 |
+ case CL_ENGINE_MAX_FILESIZE: |
|
270 |
+ engine->maxfilesize = *((uint64_t *) val); |
|
271 |
+ break; |
|
272 |
+ case CL_ENGINE_MAX_RECURSION: |
|
273 |
+ engine->maxreclevel = *((uint32_t *) val); |
|
274 |
+ break; |
|
275 |
+ case CL_ENGINE_MAX_FILES: |
|
276 |
+ engine->maxfiles = *((uint32_t *) val); |
|
277 |
+ break; |
|
278 |
+ case CL_ENGINE_MIN_CC_COUNT: |
|
279 |
+ engine->min_cc_count = *((uint32_t *) val); |
|
280 |
+ break; |
|
281 |
+ case CL_ENGINE_MIN_SSN_COUNT: |
|
282 |
+ engine->min_ssn_count = *((uint32_t *) val); |
|
283 |
+ break; |
|
284 |
+ case CL_ENGINE_PUA_CATEGORIES: |
|
285 |
+ engine->pua_cats = cli_mp_strdup(engine->mempool, (char *) val); |
|
286 |
+ if(!engine->pua_cats) |
|
287 |
+ return CL_EMEM; |
|
288 |
+ break; |
|
289 |
+ default: |
|
290 |
+ cli_errmsg("cl_engine_set: Incorrect field number\n"); |
|
291 |
+ return CL_ENULLARG; /* FIXME */ |
|
292 |
+ } |
|
293 |
+ |
|
294 |
+ return CL_SUCCESS; |
|
295 |
+} |
|
296 |
+ |
|
297 |
+int cl_engine_get(struct cl_engine *engine, enum cl_engine_field field, const void *val) |
|
298 |
+{ |
|
299 |
+ if(!engine || !val) |
|
300 |
+ return CL_ENULLARG; |
|
301 |
+ |
|
302 |
+ switch(field) { |
|
303 |
+ case CL_ENGINE_MAX_SCANSIZE: |
|
304 |
+ *((uint64_t *) val) = engine->maxscansize; |
|
305 |
+ break; |
|
306 |
+ case CL_ENGINE_MAX_FILESIZE: |
|
307 |
+ *((uint64_t *) val) = engine->maxfilesize; |
|
308 |
+ break; |
|
309 |
+ case CL_ENGINE_MAX_RECURSION: |
|
310 |
+ *((uint32_t *) val) = engine->maxreclevel; |
|
311 |
+ break; |
|
312 |
+ case CL_ENGINE_MAX_FILES: |
|
313 |
+ *((uint32_t *) val) = engine->maxfiles; |
|
314 |
+ break; |
|
315 |
+ case CL_ENGINE_MIN_CC_COUNT: |
|
316 |
+ *((uint32_t *) val) = engine->min_cc_count; |
|
317 |
+ break; |
|
318 |
+ case CL_ENGINE_MIN_SSN_COUNT: |
|
319 |
+ *((uint32_t *) val) = engine->min_ssn_count; |
|
320 |
+ break; |
|
321 |
+ case CL_ENGINE_PUA_CATEGORIES: |
|
322 |
+ strncpy((char *) val, engine->pua_cats, 128); |
|
323 |
+ break; |
|
324 |
+ default: |
|
325 |
+ cli_errmsg("cl_engine_get: Incorrect field number\n"); |
|
326 |
+ return CL_ENULLARG; /* FIXME */ |
|
327 |
+ } |
|
328 |
+ |
|
329 |
+ return CL_SUCCESS; |
|
330 |
+} |
|
331 |
+ |
|
260 | 332 |
int cli_checklimits(const char *who, cli_ctx *ctx, unsigned long need1, unsigned long need2, unsigned long need3) { |
261 | 333 |
int ret = CL_SUCCESS; |
262 | 334 |
unsigned long needed; |