# Isspam
Fast as light evaluator for text files to summarize specific details about the text files.

This repository contains two versions of the same algorithm.

Versions:

 - Rust (risspam) written by 12bitfloat.
 - C (isspam) written by retoor.

## Building
```
make build
```
Build isspam with memory check (requires valgrind to be installed):
```
make valgrind
```
## Running
### Using files as parameter
```
./(r)isspam ./spam/*.txt
./(r)isspam ./not_spam/*.txt
```
### Using stdin 
Useful for automation. Works only on the isspam version.
```
cat ./spam/example_spam1.txt | ./isspam
```
## Example output
Output example made by isspam.
```
File: ./spam/example_spam3.txt
Capitalized words: 39
Sentences: 20
Words: 420
Numbers: 1
Forbidden words: 15
<0:recovery>
<1:techie>
<2:https>
<3:digital>
<4:hack>
<5://>
<6:com>
<7:@>
<8:crypto>
<9:bitcoin>
<10:whatsapp>
<11:cryptocurrency>
<12:stolen>
<13:contact>
<14:understanding>
Word count per sentence: 21
Memory usage: 1 MB, 6.460 (re)allocated, 4.222 unqiue free'd, 0 in use.
```
## Valgrind status
Valgrind output for isspam version. 

Rust variant thinks it's too cool for memory checks afterwards. 

Date: 2024-11-30

```
==58062== 
==58062== HEAP SUMMARY:
==58062==     in use at exit: 0 bytes in 0 blocks
==58062==   total heap usage: 6,490 allocs, 6,490 frees, 2,343,156 bytes allocated
==58062== 
==58062== All heap blocks were freed -- no leaks are possible
==58062== 
==58062== For lists of detected and suppressed errors, rerun with: -s
==58062== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
```