When submitting a command in bgplg(8), argument is not kept in its entirety
(split on space) which can be annoying ie. when querying extended community.
Fix this by printing request before splitting.
Index: bgplg.c
===================================================================
RCS file: /cvs/src/usr.bin/bgplg/bgplg.c,v
retrieving revision 1.19
diff -u -p -r1.19 bgplg.c
--- bgplg.c 5 Mar 2018 10:53:37 -0000 1.19
+++ bgplg.c 27 Oct 2018 15:52:34 -0000
@@ -245,7 +245,7 @@ lg_incl(const char *file)
int
main(void)
{
- char *query, *myname, *self, *cmd = NULL, *req;
+ char *query, *myname, *self, *cmd = NULL, *req = NULL;
char **argv = NULL;
int ret = 1, argc = 0, query_length = 0;
struct stat st;
@@ -282,8 +282,11 @@ main(void)
printf("fatal error: invalid request\n");
goto err;
}
- if ((query = lg_getenv("QUERY_STRING", &query_length)) != NULL)
+ if ((query = lg_getenv("QUERY_STRING", &query_length)) != NULL) {
cmd = lg_getarg("cmd=", query, query_length);
+ req = lg_getarg("req=", query, query_length);
+ }
+
printf(
"<form action='%s'>\n"
"<div class=\"command\">\n"
@@ -302,11 +305,6 @@ main(void)
cmds[i].name, cmds[i].name);
}
- if ((req = lg_getarg("req=", query, query_length)) != NULL) {
- /* Could be NULL */
- argv = lg_arg2argv(req, &argc);
- }
-
printf("</select>\n"
"<input type='text' value='%s' name='req'/>\n"
"<input type='submit' value='submit'/>\n"
@@ -343,6 +341,10 @@ main(void)
printf("invalid command: %s\n", cmd);
goto err;
}
+
+ if (req != NULL)
+ argv = lg_arg2argv(req, &argc);
+
if (argc > cmdp->maxargs) {
printf("superfluous argument(s): %s %s\n",
cmd, cmdp->args ? cmdp->args : "");