--- a/bfile_heuristics.c Tue Oct 02 10:49:25 2012 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,57 +0,0 @@ -/* - * 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; -}