<commit_before>
// MVTODO

perguntas professor:
* ta certa minha interpretaçao dos valores iniciais do FS virtual? (0xbb pra TODO o boot block, fffd,fffe e etc pros headers da FAT16 - serao fixos?)
* oque exatamente vai ser considerado trapaça? manter todo o FS virtual em RAM?
* oque é que se sugere manter em memoria? 3 blocos? mas em seguida a FAT sozinha é dita como tendo 8 blocos??
* esta certa minha interpretação doque é o rootdir? é apenas 1 cluster (1024) bytes pra manter TODAS as definições de diretórios (de 32 bytes cada) ? ou da pra definir mais diretorios nos datablocks?
* como deve ser feito um "mkdir /home/trab/sisop/" ? desmontar o path e ir catando dentro do RootDir?
* tentar confirmar com o professor: oque na pratica vamos fazer com o fffd (boot) e fffe(fat)? e o ffff(eof) vamos usar pra marcar na FAT conforme vamos populando-a certo?
* o enunciado diz "Deve-se ler e escrever sempre utilizando a unidade cluster, independente de ser a FAT, diretorio ou bloco de dados de arquivo" -> oque isto quer dizer exatamente?

// FGTODO

<commit_msg>more ideas<commit_after>
// MVTODO

perguntas professor:
* ta certa minha interpretaçao dos valores iniciais do FS virtual? (0xbb pra TODO o boot block, fffd,fffe e etc pros headers da FAT16 - serao fixos?)
* oque exatamente vai ser considerado trapaça? manter todo o FS virtual em RAM?
* oque é que se sugere manter em memoria? 3 blocos? mas em seguida a FAT sozinha é dita como tendo 8 blocos??
* esta certa minha interpretação doque é o rootdir? é apenas 1 cluster (1024) bytes pra manter TODAS as definições de diretórios (de 32 bytes cada) ? ou da pra definir mais diretorios nos datablocks?
* como deve ser feito um "mkdir /home/trab/sisop/" ? desmontar o path e ir catando dentro do RootDir?
* tentar confirmar com o professor: oque na pratica vamos fazer com o fffd (boot) e fffe(fat)? e o ffff(eof) vamos usar pra marcar na FAT conforme vamos populando-a certo?
* o enunciado diz "Deve-se ler e escrever sempre utilizando a unidade cluster, independente de ser a FAT, diretorio ou bloco de dados de arquivo" -> oque isto quer dizer exatamente?

respostas professor:
* o rootdir eh so pra indicar os niveis embaixo do /
/home por exemplo, o proprio home itself vai nos datablocks.

* e sim, precisamos montar uma arvore pra percorrer os paths
* so pode deixar a FAT na RAM! pode dumpear a FAT, mas tem que fseek() no resto da particao pra escrever os datablocks

"mkdir /home" eh assim: acho o primeiro dir_entry_t dir[4096] vazio, e vou preencher la. attributes = 1 pra indicar dir, first_block eu marco a primeira entrada livre na FAT (11, no começo). e marco no indice 11 da fat como 0xffff.

digamos que exista /home/arq.txt:

durante um ls /home, acontece o seguinte:

1) carrego o rootdir do disco (as 32 structs), e procuro o home ali (o filename sera "home" apenas! tudo dentro do rootdir é filho de /)
2) dai eu pego o first_block do home, e carrego este bloco (que é outra dir_entry_t) - que sao 1024 bytes, ond a cada 32 pode existir algo. é só testar se o filename é diferente de 0 e significa que tem coisa. cuidado qque pode ter buracos no meio, entao tem que ler ate o final.

====

o size é importante pq um arquivo pode nao ocupar um bloco inteiro!

// FGTODO


{'fraction_non_alphanumeric': 0.055931161647203444, 'fraction_numerical': 0.013829133374308543, 'mean_word_length': 4.125984251968504, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1492075', 'n_tokens_mistral': 1173, 'n_tokens_neox': 1098, 'n_words': 546}