|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
memset (res, 0, sizeof (res)); |
|
|
memset (res, 0, sizeof (res)); |
|
|
|
|
|
|
|
|
for (i = 0; i <= (gint)input->len; i ++) { |
|
|
for (i = 0; i <= (gint)input->len; i ++) { |
|
|
if (i - beg >= SHINGLES_WINDOW || i == (gint)input->len) { |
|
|
if (i - beg >= SHINGLES_WINDOW || i == (gint)input->len) { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
beg++; |
|
|
beg++; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
#undef INNER_CYCLE_SHINGLES |
|
|
/* Now we need to filter all hashes and make a shingles result */ |
|
|
/* Now we need to filter all hashes and make a shingles result */ |
|
|
for (i = 0; i < RSPAMD_SHINGLE_SIZE; i ++) { |
|
|
for (i = 0; i < RSPAMD_SHINGLE_SIZE; i ++) { |
|
|
shingle->hashes[i] = filter (hashes[i], hlen, |
|
|
shingle->hashes[i] = filter (hashes[i], hlen, |