summaryrefslogtreecommitdiff
path: root/client/birdcl/client.c
diff options
context:
space:
mode:
authorTomas Hlavacek <tmshlvck@gmail.com>2013-03-19 18:02:40 +0100
committerTomas Hlavacek <tmshlvck@gmail.com>2013-03-19 18:03:49 +0100
commitce1348537455e5482a283f7a4cae734d13dcf34e (patch)
tree8b57f58da60063a610c2b975f49920f2fc58b1d0 /client/birdcl/client.c
parent8322ecde124188a9408b54afead4666bb954e5a5 (diff)
Fix birdcl questionmark handling
Fix handling of questionmark handling in the bird light client. The questionmark should display help when it is the last non-blank character on command line. Otherwise the questionmark does not have any special meaning and it could be a part of a pattern.
Diffstat (limited to 'client/birdcl/client.c')
-rw-r--r--client/birdcl/client.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/client/birdcl/client.c b/client/birdcl/client.c
index 0a7e3808..21b63270 100644
--- a/client/birdcl/client.c
+++ b/client/birdcl/client.c
@@ -18,6 +18,7 @@
#include <sys/types.h>
#include <sys/ioctl.h>
#include <signal.h>
+#include <ctype.h>
#include "nest/bird.h"
#include "lib/resource.h"
@@ -177,6 +178,18 @@ print_prompt(void)
}
+static int lastnb(char *str)
+{
+ int i;
+ for (i=strlen(str)-1; i>0; i--)
+ {
+ if(!isblank(str[i]))
+ return i;
+ }
+
+ return 0;
+}
+
static void
term_read(void)
{
@@ -208,7 +221,7 @@ term_read(void)
printf("%s\n",buf);
}
- if (strchr(buf, '?'))
+ if (buf[lastnb(buf)] == '?')
{
printf("\n");
cmd_help(buf, strlen(buf));