[PATCH 2/3] declara: retorna 0 se, e somente se, houverem erros
Antonio Terceiro
terceiro en softwarelivre.org
Lun Abr 30 01:33:06 UTC 2018
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.
---
src/declara.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/declara.c b/src/declara.c
index f5faa00..995dc31 100644
--- a/src/declara.c
+++ b/src/declara.c
@@ -37,21 +37,23 @@ static int fileprocess(struct declaracao *dec, int fd)
size_t lsz = 0;
FILE *f;
int r;
+ int rc = 0;
int n = 1;
f = fdopen(fd, "r");
if (!f)
return -errno;
- while ((r = getline(&line, &lsz, f)) > 0) {
+ while (getline(&line, &lsz, f) > 0) {
r = cmd_run(dec, line);
if (r < 0) {
fprintf(stderr, "Não foi possível executar comando na linha %d: %s\n",
n, dec->error ?: strerror(-r));
+ rc = r;
}
n++;
}
free(line);
fclose(f);
- return r;
+ return rc;
}
static int ttyprocess(struct declaracao *dec)
--
2.17.0
Más información sobre la lista de distribución Softwares-impostos