# kwc
`kwc` é um porte direto, em Rust, do utilitário `wc(1)` do FreeBSD, desenvolvido com auxílio de IA.
O objetivo deste projeto não é reinventar o `wc` com uma interface nova, dependências extras ou uma camada de abstração moderna. A proposta aqui é mais específica: preservar a forma de operação do programa original do FreeBSD e reimplementá-la em Rust, com um binário próprio, pequeno e fácil de distribuir.
O nome `kwc` foi escolhido de propósito. Em vez de disputar espaço com o `wc` já presente na grande maioria dos sistemas operacionais, este projeto adota um nome distinto para coexistir com segurança durante testes, empacotamento e instalação.
## Feito com IA, mas orientado pelo original
Este projeto foi implementado com apoio de IA, mas isso não muda a sua proposta técnica.
A referência primária continua sendo o `wc(1)` do FreeBSD, originalmente localizado em `usr.bin/wc/wc.c`. A IA foi usada como ferramenta de desenvolvimento para acelerar a transposição para Rust; o alvo do trabalho permanece o mesmo: reproduzir a interface, a semântica e o comportamento observável do programa original.
## Por que isto pode ser chamado de porte direto
Este repositório segue a estrutura e o comportamento do `wc(1)` do FreeBSD, originalmente localizado em `usr.bin/wc/wc.c`.
Na prática, isso significa preservar os pontos que definem o utilitário:
- mesmas opções centrais: `-l`, `-w`, `-c` e `-L`
- mesmo comportamento padrão quando nenhuma flag é informada: linhas, palavras e bytes
- leitura tanto de arquivos quanto de `stdin`
- soma total ao processar múltiplos arquivos
- alinhamento da saída em colunas de largura compatível com a tradição BSD
- foco em comportamento previsível, sem "reinterpretar" o programa original
Em outras palavras: `kwc` não é apenas uma ferramenta inspirada em `wc`; ele foi escrito para reproduzir em Rust a interface e a semântica operacional essenciais do utilitário do FreeBSD.
## O que o programa faz
`kwc` conta:
- linhas
- palavras
- bytes
- comprimento da maior linha
## Compilação
```bash
cargo build --release
```
O binário gerado será `kwc`, evitando conflito com o `wc` já instalado no sistema.
## Uso
```bash
kwc arquivo.txt
kwc -l arquivo.txt
kwc -w -c arquivo.txt
kwc -L arquivo.txt
Uso resumido:
```text
kwc [-c] [-Llw] [file ...]
```
## Manual
Uma man page em estilo BSD foi adicionada em `man/kwc.1`.
Em sistemas Unix-like com `man`, ela pode ser aberta diretamente do repositório com:
```bash
man -l man/kwc.1
```
## Posicionamento do projeto
Se você quer um clone estilizado de `wc`, com parsing de argumentos reimaginado ou extensões fora da tradição Unix, este não é o objetivo deste repositório.
Se você quer um porte enxuto e fiel do `wc(1)` do FreeBSD para Rust, com nome próprio para não conflitar com o ecossistema já existente, é exatamente isso que `kwc` entrega.