Tue, 02 Oct 2012 10:49:25 +0200
added multi-directory support
fixed parser bug in directory parser locking argument number 1024
fixed freed memory access on settings structure
/* * bfile_heuristics.c * * Created on: 20.10.2011 * Author: Mike */ #include "bfile_heuristics.h" #include <ctype.h> bfile_heuristics_t *new_bfile_heuristics_t() { bfile_heuristics_t *ret = malloc(sizeof(bfile_heuristics_t)); ret->level = BFILE_MEDIUM_ACCURACY; bfile_reset(ret); return ret; } void destroy_bfile_heuristics_t(bfile_heuristics_t *def) { free(def); } void bfile_reset(bfile_heuristics_t *def) { def->bcount = 0; def->tcount = 0; } bool bfile_check(bfile_heuristics_t *def, int next_char) { bool ret = false; if (def->level != BFILE_IGNORE) { def->tcount++; if (!isprint(next_char) && !isspace(next_char)) { def->bcount++; } if (def->tcount > 1) { /* empty files are text files */ switch (def->level) { case BFILE_LOW_ACCURACY: if (def->tcount > 15 || next_char == EOF) { ret = (1.0*def->bcount)/def->tcount > 0.32; } break; case BFILE_HIGH_ACCURACY: if (def->tcount > 500 || next_char == EOF) { ret = (1.0*def->bcount)/def->tcount > 0.1; } break; default: /* BFILE_MEDIUM_ACCURACY */ if (def->tcount > 100 || next_char == EOF) { ret = (1.0*def->bcount)/def->tcount > 0.1; } break; } } } return ret; }