| 127 | } |
| 128 | |
| 129 | static void print_cmd_by_category(const struct category_description *catdesc, |
| 130 | int *longest_p) |
| 131 | { |
| 132 | struct cmdname_help *cmds; |
| 133 | int longest = 0; |
| 134 | int i, nr = 0; |
| 135 | uint32_t mask = 0; |
| 136 | |
| 137 | for (i = 0; catdesc[i].desc; i++) |
| 138 | mask |= catdesc[i].category; |
| 139 | |
| 140 | extract_cmds(&cmds, mask); |
| 141 | |
| 142 | for (i = 0; cmds[i].name; i++, nr++) { |
| 143 | if (longest < strlen(cmds[i].name)) |
| 144 | longest = strlen(cmds[i].name); |
| 145 | } |
| 146 | QSORT(cmds, nr, cmd_name_cmp); |
| 147 | |
| 148 | for (i = 0; catdesc[i].desc; i++) { |
| 149 | uint32_t mask = catdesc[i].category; |
| 150 | const char *desc = catdesc[i].desc; |
| 151 | |
| 152 | if (i) |
| 153 | putchar('\n'); |
| 154 | puts(_(desc)); |
| 155 | print_command_list(cmds, mask, longest); |
| 156 | } |
| 157 | free(cmds); |
| 158 | if (longest_p) |
| 159 | *longest_p = longest; |
| 160 | } |
| 161 | |
| 162 | void add_cmdname(struct cmdnames *cmds, const char *name, int len) |
| 163 | { |
no test coverage detected