Keywords: clamdoc

### Initialization

Before using libclamav, you should call `cl_init()` to initialize it. `CL_INIT_DEFAULT` is a macro that can be passed to `cl_init()` representing the default initialization settings. When it's done, you're ready to create a new scan engine by calling `cl_engine_new()`. To free resources allocated by the engine use `cl_engine_free()`. Function prototypes:

    	int cl_init(unsigned int options);
    	struct cl_engine *cl_engine_new(void);
    	int cl_engine_free(struct cl_engine *engine);

`cl_init()` and `cl_engine_free()` return `CL_SUCCESS` on success or another code on error. `cl_engine_new()` return a pointer or NULL if there's not enough memory to allocate a new engine structure.