char helpbuf[CMDLINE_MAX_DSTBUF_SIZE];
char tmpbuf[CMDLINE_MAX_DSTBUF_SIZE];
char *help_str;
- int n, len, iterate, iterate_count;
+ int n, iterate;
cmdline_preparse(&preparse, buf);
&preparse.opaque);
}
+ /* get token dynamic help string */
+ if ((token->ops->help == NULL) ||
+ (token->ops->help(token, tmpbuf, sizeof(tmpbuf)) < 0))
+ snprintf(tmpbuf, sizeof(tmpbuf), "unknown");
+
+ /* get instruction static help string */
+ help_str = inst->help_str;
+ if (help_str == NULL)
+ help_str = "No help";
+
+ /* send it to callback function */
+ n = snprintf(helpbuf, sizeof(helpbuf),
+ "[%s]: %s\n", tmpbuf, help_str);
+ if (n >= 0 && n < sizeof(helpbuf))
+ write_buf(opaque, helpbuf, n);
+
+ if (iterate == 0)
+ continue;
+
/* iterate over all possible completion for this inst */
- iterate_count = 0;
- while (iterate == 1 &&
- token->ops->complete_iterate(token,
+ while (token->ops->complete_iterate(token,
&preparse.opaque,
tmpbuf,
sizeof(tmpbuf)) == 0) {
continue;
/* get the token and add it in help buffer */
- n = snprintf(helpbuf, sizeof(helpbuf), "%s ", tmpbuf);
- if (n < 0 || n >= sizeof(helpbuf))
- continue;
- len = n;
-
- iterate_count++;
-
- /* get token dynamic help */
- if ((token->ops->help == NULL) ||
- (token->ops->help(token, tmpbuf, sizeof(tmpbuf)) < 0))
- snprintf(tmpbuf, sizeof(tmpbuf), "unknown");
-
- /* get instruction static help string */
- help_str = inst->help_str;
- if (help_str == NULL)
- help_str = "No help";
-
- /* send it to callback function */
- n = snprintf(helpbuf + len, sizeof(helpbuf) - len,
- "[%s]: %s\n", tmpbuf, help_str);
- if (n >= 0)
- write_buf(opaque, helpbuf, n + len);
+ n = snprintf(helpbuf, sizeof(helpbuf), " %s\n", tmpbuf);
+ if (n >= 0 && n < sizeof(helpbuf))
+ write_buf(opaque, helpbuf, n);
}
/* no more completion, go to next inst */
- if (iterate == 1 && token->ops->complete_end != NULL)
+ if ( token->ops->complete_end != NULL)
token->ops->complete_end(token, &preparse.opaque);
-
- if (iterate == 0 || iterate_count == 0) {
- /* get token dynamic help string */
- if ((token->ops->help == NULL) ||
- (token->ops->help(token, tmpbuf, sizeof(tmpbuf)) < 0))
- snprintf(tmpbuf, sizeof(tmpbuf), "unknown");
-
- /* get instruction static help string */
- help_str = inst->help_str;
- if (help_str == NULL)
- help_str = "No help";
-
- /* send it to callback function */
- n = snprintf(helpbuf, sizeof(helpbuf),
- "[%s]: %s\n", tmpbuf, help_str);
- if (n >= 0)
- write_buf(opaque, helpbuf, n);
-
- continue;
- }
}
return 0;