Hello Tomasz!

Ok, I'll check for database updates in every hour
(or shall I do that more often?)

But I would like to know what code is preferred doing so.
I tried the following:

void init_cl(){
   int ret, no=0;

   if((ret = cl_loaddbdir(cl_retdbdir(), &root, &no))){
      syslog(LOG_PRIORITY, "cl_loaddbdir: %s", cl_perror(ret));
      fatal(ERR_LOAD_DB);
   }

   syslog(LOG_PRIORITY, "Loaded %d signatures.\n", no);

   if((ret = cl_build(root))) {
      syslog(LOG_PRIORITY, "%s: %s", ERR_DB_INIT, cl_strerror(ret));
      fatal(ERR_BUILD_TRIE);
   }

   memset(&limits, 0, sizeof(struct cl_limits));
   limits.maxfiles = MAXFILES;
   limits.maxfilesize = MAX_ARCHIVED_FILE_SIZE;
   limits.maxreclevel = MAX_RECURSION_LEVEL;
   limits.maxratio = MAX_COMPRESS_RATIO;
   limits.archivememlim = ARCHIVE_MEM_LIMIT;

}

void reload_cl(){

   if(cl_statchkdir(&dbstat) == 1){

      syslog(LOG_PRIORITY, "av database update has detected");
      if(root){
         cl_free(root);
         root = NULL;
      }

      init_cl();

      cl_statfree(&dbstat);
      cl_statinidir(cl_retdbdir(), &dbstat);

      syslog(LOG_PRIORITY, "av database reloaded");
   }

   alarm(REFRESH_INTERVAL);
}


SJ
_______________________________________________
http://lists.clamav.net/cgi-bin/mailman/listinfo/clamav-users

Reply via email to