Adicionado package_sender.c

O programa em C recebe entrada do usuário e envia cada linha como um pacote TCP individual, mostrando na saída padrão as respostas do servidor, e deve ser usado para testar o servidor a partir de agora (já que o servidor deve receber várias mensagens e não apenas a do login). Adicionarei outros scripts de teste usando o programa.
package_sender.c terminado

Mostra na tela corretamente dados recebidos pelo socket e envia as entradas
package_sender.c melhorado

Provavelmente a versão final do programa. Com algumas melhorias no código, agora é bem flexível e útil para inspecionar o funcionamento do servidor.
Executar sem argumentos dá ajuda de como usar o programa. mateusnakajo, isso pode te ajudar para ver o que o servidor recebe/envia.
Dá pra automatizar os testes se necessário. O script run-tests.sh mostra um exemplo que envia todos os arquivos tests/test*.sh para o servidor.
Ainda não testei direito o servidor com vários pacotes (a função leitura() deve continuar com alguns problemas), mas isso fica pro pós-P2.
Edição errada no Makefile desfeita

Eu tinha feito uma mudança errada, só vi agora.
Nova configuração no Makefile: OUTPUT define diretório para gerar o executável.
Recomendo que mantenham bin/ para não fazer upload acidental dos executáveis para o github (como acabei de fazer), mas podem comentar para gerar no atual (mas se forem mudar algo no repositório, não mandem os executáveis).
leitura() funcionando

Testado com vários pacotes, agora sim funciona (precisei mudar só uma linha errada :( ).
Correção pequena para json_parse_all receber mais que um pacote.
Edição no Makefile

Se OUTPUT não existe, cria o diretório.
Exemplos de teste adicionados

Arquivos tests/test1 e tests/test2 para quem dá/recebe carona. Rodar package_sender e digitar essas entradas mostra o que deve acontecer. Outra opção é mandar os arquivos como entrada para o programa, mas como ele lê o arquivo inteiro primero e depois conecta com o servidor, então a saída no terminal fica fora de ordem.
Para rodar com esses arquivos como entrada na VM:
./package_sender localhost 80 < carona-usp-servidor/tests/test1 (ou test2)
Para conectar com a VM:
./package_sender endereço_ip porta < carona-usp-servidor/tests/test1 (ou test2)

Para digitar a entrada (recomendado, dá pra ver cada mensagem enviada e resposta):
./package_sender localhost 80 (ou endereço_ip da VM e porta) e digitar o conteúdo dos arquivos
Remoção do fim de linha em branco no fim de tests/test1 e tests/test2

Havia linhas vazias nos arquivos.
Função para envio de e-mails

Arquivo tests/envia_email.c pode ser usado para testar. Não funciona por enquanto (conecta com servidor mas não envia), estive testando com gmail.
As senhas e dados de acesso não estão no programa e precisam ser configuradas no ambiente:
export SMTP_EMAIL='<email>' SMTP_USER=usuário SMTP_PASSWORD=senha SMTP_ADDRESS=smtp://servidor:porta/