Fix formatting of "show codecs" CLI command.
authorJason Parker <jparker@digium.com>
Wed, 16 Aug 2006 03:48:36 +0000 (03:48 +0000)
committerJason Parker <jparker@digium.com>
Wed, 16 Aug 2006 03:48:36 +0000 (03:48 +0000)
Make "show translations" CLI command have dynamic widths.

Also display g726 codec in both commands.
There are probably other places where "11" is hardcoded...

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@39965 65c4cc65-6c06-0410-ace0-fbb531ad65f3

frame.c
translate.c

diff --git a/frame.c b/frame.c
index 4f0cb08..0cc44a7 100644 (file)
--- 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<<i);
-                       ast_cli(fd, "%11u (1 << %2d) %10s  audio   %5s   (%s)\n",1 << i,i,hex,ast_getformatname(1<<i),ast_codec2str(1<<i));
+                       ast_cli(fd, "%11u (1 << %2d) %10s  audio   %8s   (%s)\n",1 << i,i,hex,ast_getformatname(1<<i),ast_codec2str(1<<i));
                }
        }
 
@@ -629,7 +629,7 @@ static int show_codecs(int fd, int argc, char *argv[])
                found = 1;
                for (i=16;i<18;i++) {
                        snprintf(hex,25,"(0x%x)",1<<i);
-                       ast_cli(fd, "%11u (1 << %2d) %10s  image   %5s   (%s)\n",1 << i,i,hex,ast_getformatname(1<<i),ast_codec2str(1<<i));
+                       ast_cli(fd, "%11u (1 << %2d) %10s  image   %8s   (%s)\n",1 << i,i,hex,ast_getformatname(1<<i),ast_codec2str(1<<i));
                }
        }
 
@@ -637,7 +637,7 @@ static int show_codecs(int fd, int argc, char *argv[])
                found = 1;
                for (i=18;i<22;i++) {
                        snprintf(hex,25,"(0x%x)",1<<i);
-                       ast_cli(fd, "%11u (1 << %2d) %10s  video   %5s   (%s)\n",1 << i,i,hex,ast_getformatname(1<<i),ast_codec2str(1<<i));
+                       ast_cli(fd, "%11u (1 << %2d) %10s  video   %8s   (%s)\n",1 << i,i,hex,ast_getformatname(1<<i),ast_codec2str(1<<i));
                }
        }
 
index 59d566d..3c2e5ca 100644 (file)
@@ -482,8 +482,9 @@ static void rebuild_matrix(int samples)
 /*! \brief CLI "show translation" command handler */
 static int show_translation(int fd, int argc, char *argv[])
 {
-#define SHOW_TRANS 11
+#define SHOW_TRANS 12
        int x, y, z;
+       int curlen = 0, longest = 0;
 
        if (argc > 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");