diff options
author | Ondrej Zajicek <santiago@crfreenet.org> | 2009-11-09 22:54:39 +0100 |
---|---|---|
committer | Ondrej Zajicek <santiago@crfreenet.org> | 2009-11-09 22:54:39 +0100 |
commit | 3f22fa9e74c8643d3e4f7e3a7b4f2aa992ad09f5 (patch) | |
tree | 703e2606e1f01118098ad662f0ecc54c0c48fcd6 /client | |
parent | a6bc04d59130c49a1dbfadffa4285b11e2ff4939 (diff) | |
parent | b7c0e93ebd40cdc4f6e89067a3e5f7293263c7f9 (diff) | |
download | bird-3f22fa9e74c8643d3e4f7e3a7b4f2aa992ad09f5.tar bird-3f22fa9e74c8643d3e4f7e3a7b4f2aa992ad09f5.zip |
Merge branch 'dev' into ospf3
Diffstat (limited to 'client')
-rw-r--r-- | client/client.c | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/client/client.c b/client/client.c index ea8f8d3..88a6095 100644 --- a/client/client.c +++ b/client/client.c @@ -333,17 +333,18 @@ static void server_got_reply(char *x) { int code; + int len = 0; if (*x == '+') /* Async reply */ - skip_input || printf(">>> %s\n", x+1); + skip_input || (len = printf(">>> %s\n", x+1)); else if (x[0] == ' ') /* Continuation */ - skip_input || printf("%s%s\n", verbose ? " " : "", x+1); + skip_input || (len = printf("%s%s\n", verbose ? " " : "", x+1)); else if (strlen(x) > 4 && sscanf(x, "%d", &code) == 1 && code >= 0 && code < 10000 && (x[4] == ' ' || x[4] == '-')) { if (code) - skip_input || printf("%s\n", verbose ? x : x+5); + skip_input || (len = printf("%s\n", verbose ? x : x+5)); if (x[4] == ' ') { nstate = STATE_PROMPT; @@ -352,14 +353,19 @@ server_got_reply(char *x) } } else - skip_input || printf("??? <%s>\n", x); + skip_input || (len = printf("??? <%s>\n", x)); if (skip_input) return; - num_lines++; - if (interactive && input_initialized && (num_lines >= LINES) && (cstate == STATE_CMD_SERVER)) - more(); + if (interactive && input_initialized && (len > 0)) + { + int lns = LINES ? LINES : 25; + int cls = COLS ? COLS : 80; + num_lines += (len + cls - 1) / cls; /* Divide and round up */ + if ((num_lines >= lns) && (cstate == STATE_CMD_SERVER)) + more(); + } } static void |