+char check_hint(char c)
+{
+ static int current_pos = 0;
+ char hits = 0;
+ int i;
+ char hit_pos = -1;
+
+ for(i=0; i<DICT_SIZE; i++) {
+ /* Veo de no pasarme */
+ if (current_pos < dic[i].len) {
+ /* Si la palabra tiene suficientes hints */
+ if (dic[i].hits == current_pos) {
+ if (dic[i].word[current_pos] == c) {
+ dic[i].hits++;
+ hits++;
+ if (dic[i].hits == dic[i].len) {
+ hit_pos = i;
+ }
+ } else {
+ /* Esta palabra ya no tiene posibilidades */
+ dic[i].hits = 0;
+ }
+ }
+ } else {
+ dic[i].hits = 0;
+ }
+ }
+
+ current_pos++;
+
+ if (hits == 0) {
+ current_pos = 0;
+ return -1; /* No hay hints ! */
+ }
+ if (hits > 1) return -2; /* Tengo mas de 1 hint! */
+
+ if (hit_pos == -1) return -2; /* Tengo 1 solo hit pero no es completo */
+
+ /* Tengo 1 solo hint !!!! */
+ current_pos = 0;
+ return hit_pos;
+}
+
+void bs_clean_dic()
+{
+ int i;
+ for(i=0; i<DICT_SIZE; i++) {
+ dic[i].hits = 0;
+ }
+}
+
+int bs_readblock(FILE *fp, char *data, Uint32 pagesize, int usar_dic)