]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Client: Use exit status to report errors
authorOndrej Zajicek (work) <santiago@crfreenet.org>
Fri, 11 Mar 2022 02:40:03 +0000 (03:40 +0100)
committerOndrej Zajicek (work) <santiago@crfreenet.org>
Fri, 11 Mar 2022 02:52:50 +0000 (03:52 +0100)
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.

client/client.c

index 97cf663988c473d30934e6278dc5fc61bd501aa8..934e16e0697cae5a0ddaf138d7e9d02bb13c5269 100644 (file)
@@ -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;