kwc 0.1.0

Rust port of FreeBSD's wc(1) utility, published as kwc to avoid clashing with system wc
# 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
type arquivo.txt | kwc
```

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.