summaryrefslogtreecommitdiff
path: root/client/client.c
diff options
context:
space:
mode:
authorOndrej Zajicek (work) <santiago@crfreenet.org>2022-03-11 03:40:03 +0100
committerOndrej Zajicek (work) <santiago@crfreenet.org>2022-03-11 03:52:50 +0100
commit9b0b2c0d410fd26e1b48d158a667e42f4bbec52c (patch)
tree170474c03cecb856e7e177b184531170e983737d /client/client.c
parent5ddf98f6bdfec213d64957a580e0425c3ed4d660 (diff)
Client: Use exit status to report errors
When birdc is called with a command as an argument, it should set exit status to non-zero when BIRD replied with an error reply code. Thanks to Vincent Bernat and others for suggestion.
Diffstat (limited to 'client/client.c')
-rw-r--r--client/client.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/client/client.c b/client/client.c
index 97cf6639..934e16e0 100644
--- a/client/client.c
+++ b/client/client.c
@@ -50,6 +50,7 @@ static byte *server_read_pos = server_read_buf;
int init = 1; /* During intial sequence */
int busy = 1; /* Executing BIRD command */
int interactive; /* Whether stdin is terminal */
+int last_code; /* Last return code */
static int num_lines, skip_input;
int term_lns, term_cls;
@@ -196,7 +197,7 @@ init_commands(void)
{
/* Initial command is finished and we want to exit */
cleanup();
- exit(0);
+ exit((last_code < 8000) ? 0 : 1);
}
input_init();
@@ -283,6 +284,8 @@ server_got_reply(char *x)
if (code)
PRINTF(len, "%s\n", verbose ? x : x+5);
+ last_code = code;
+
if (x[4] == ' ')
{
busy = 0;