diff --git a/frame.c b/frame.c index 4f0cb08bde..0cc44a7eba 100644 --- a/frame.c +++ b/frame.c @@ -615,13 +615,13 @@ static int show_codecs(int fd, int argc, char *argv[]) ast_cli(fd, "Disclaimer: this command is for informational purposes only.\n" "\tIt does not indicate anything about your configuration.\n"); - ast_cli(fd, "%11s %9s %10s TYPE %5s %s\n","INT","BINARY","HEX","NAME","DESC"); + ast_cli(fd, "%11s %9s %10s TYPE %8s %s\n","INT","BINARY","HEX","NAME","DESC"); ast_cli(fd, "--------------------------------------------------------------------------------\n"); if ((argc == 2) || (!strcasecmp(argv[1],"audio"))) { found = 1; - for (i=0;i<11;i++) { + for (i=0;i<12;i++) { snprintf(hex,25,"(0x%x)",1< 4) return RESULT_SHOWUSAGE; @@ -507,7 +508,13 @@ static int show_translation(int fd, int argc, char *argv[]) } ast_cli(fd, " Translation times between formats (in milliseconds)\n"); - ast_cli(fd, " Source Format (Rows) Destination Format(Columns)\n\n"); + ast_cli(fd, " Source Format (Rows) Destination Format (Columns)\n\n"); + /* Get the length of the longest (usable?) codec name, so we know how wide the left side should be */ + for (x = 0; x < SHOW_TRANS; x++) { + curlen = strlen(ast_getformatname(1 << (x + 1))); + if (curlen > longest) + longest = curlen; + } for (x = -1; x < SHOW_TRANS; x++) { char line[80]; char *buf = line; @@ -516,14 +523,23 @@ static int show_translation(int fd, int argc, char *argv[]) *buf++ = ' '; *buf = '\0'; for (y = -1; y < SHOW_TRANS; y++) { - if (x >= 0 && y >= 0 && tr_matrix[x][y].step) /* XXX what is 99999 ? */ - ast_build_string(&buf, &left, " %5d", tr_matrix[x][y].cost >= 99999 ? 0 : tr_matrix[x][y].cost); - else if (((x == -1 && y >= 0) || (y == -1 && x >= 0))) { - ast_build_string(&buf, &left, " %5s", ast_getformatname(1 << (x + y + 1)) ); - } else if (x != -1 && y != -1) { - ast_build_string(&buf, &left, " -"); + curlen = strlen(ast_getformatname(1 << (y))); + + if (x >= 0 && y >= 0 && tr_matrix[x][y].step) { + /* XXX 999 is a little hackish + We don't want this number being larger than the shortest (or current) codec + For now, that is "gsm" */ + ast_build_string(&buf, &left, "%*d", curlen + 1, tr_matrix[x][y].cost > 999 ? 0 : tr_matrix[x][y].cost); + } else if (x == -1 && y >= 0) { + /* Top row - use a dynamic size */ + ast_build_string(&buf, &left, "%*s", curlen + 1, ast_getformatname(1 << (x + y + 1)) ); + } else if (y == -1 && x >= 0) { + /* Left column - use a static size. */ + ast_build_string(&buf, &left, "%*s", longest, ast_getformatname(1 << (x + y + 1)) ); + } else if (x >= 0 && y >= 0) { + ast_build_string(&buf, &left, "%*s", curlen + 1, "-"); } else { - ast_build_string(&buf, &left, " "); + ast_build_string(&buf, &left, "%*s", longest, ""); } } ast_build_string(&buf, &left, "\n");