getline() com certeza vai retornar -1 quando o arquivo acabar, então não
se pode usar seu valor de retorno como status de saída do programa como
um todo.
Além disso, como `r` é sobrescrito a cada iteração, precisamos de uma
outra variável pra guardar um valor de saída. Caso contrário, se a
execução do ultimo comando no arquivo for bem sucedido, o programa vai
retornar 0 mesmo se houver erros anteriormente.