[svn-commits] tilghman: branch 1.6.0 r181732 - in /branches/1.6.0: ./ main/

SVN commits to the Digium repositories svn-commits at lists.digium.com
Thu Mar 12 12:58:30 CDT 2009


Author: tilghman
Date: Thu Mar 12 12:58:25 2009
New Revision: 181732

URL: http://svn.digium.com/svn-view/asterisk?view=rev&rev=181732
Log:
Merged revisions 181731 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/trunk

........
  r181731 | tilghman | 2009-03-12 12:32:13 -0500 (Thu, 12 Mar 2009) | 9 lines
  
  Adjust translation table column widths based upon the translation times.
  Previously, only 5 columns were displayed, and if a translation time exceeded
  99,999 useconds, it would be displayed as 0, instead of its actual time.
  (closes issue #14532)
   Reported by: pj
   Patches: 
         20090311__bug14532.diff.txt uploaded by tilghman (license 14)
   Tested by: pj
........

Modified:
    branches/1.6.0/   (props changed)
    branches/1.6.0/configure
    branches/1.6.0/main/translate.c

Propchange: branches/1.6.0/
------------------------------------------------------------------------------
Binary property 'trunk-merged' - no diff available.

Modified: branches/1.6.0/main/translate.c
URL: http://svn.digium.com/svn-view/asterisk/branches/1.6.0/main/translate.c?view=diff&rev=181732&r1=181731&r2=181732
==============================================================================
--- branches/1.6.0/main/translate.c (original)
+++ branches/1.6.0/main/translate.c Thu Mar 12 12:58:25 2009
@@ -29,6 +29,7 @@
 
 #include <sys/time.h>
 #include <sys/resource.h>
+#include <math.h>
 
 #include "asterisk/lock.h"
 #include "asterisk/channel.h"
@@ -518,7 +519,7 @@
 {
 #define SHOW_TRANS 16
 	int x, y, z;
-	int curlen = 0, longest = 0;
+	int curlen = 0, longest = 0, magnitude[SHOW_TRANS] = { 0, };
 
 	switch (cmd) {
 	case CLI_INIT:
@@ -536,7 +537,7 @@
 
 	if (a->argc > 5)
 		return CLI_SHOWUSAGE;
-	
+
 	if (a->argv[3] && !strcasecmp(a->argv[3], "recalc")) {
 		z = a->argv[4] ? atoi(a->argv[4]) : 1;
 
@@ -565,9 +566,14 @@
 		curlen = strlen(ast_getformatname(1 << (x)));
 		if (curlen > longest)
 			longest = curlen;
+		for (y = 0; y < SHOW_TRANS; y++) {
+			if (tr_matrix[x][y].cost > pow(10, magnitude[x])) {
+				magnitude[y] = floor(log10(tr_matrix[x][y].cost));
+			}
+		}
 	}
 	for (x = -1; x < SHOW_TRANS; x++) {
-		struct ast_str *out = ast_str_alloca(120);
+		struct ast_str *out = ast_str_alloca(125);
 		/*Go ahead and move to next iteration if dealing with an unknown codec*/
 		if(x >= 0 && !strcmp(ast_getformatname(1 << (x)), "unknown"))
 			continue;
@@ -578,13 +584,14 @@
 				continue;
 			if (y >= 0)
 				curlen = strlen(ast_getformatname(1 << (y)));
+			if (y >= 0 && magnitude[y] + 1 > curlen) {
+				curlen = magnitude[y] + 1;
+			}
 			if (curlen < 5)
 				curlen = 5;
 			if (x >= 0 && y >= 0 && tr_matrix[x][y].step) {
-				/* XXX 99999 is a little hackish
-				   We don't want this number being larger than the shortest (or current) codec
-				   For now, that is "gsm" */
-				ast_str_append(&out, -1, "%*d", curlen + 1, tr_matrix[x][y].cost > 99999 ? 0 : tr_matrix[x][y].cost);
+				/* Actual codec output */
+				ast_str_append(&out, -1, "%*d", curlen + 1, tr_matrix[x][y].cost);
 			} else if (x == -1 && y >= 0) {
 				/* Top row - use a dynamic size */
 				ast_str_append(&out, -1, "%*s", curlen + 1, ast_getformatname(1 << (y)) );
@@ -592,13 +599,15 @@
 				/* Left column - use a static size. */
 				ast_str_append(&out, -1, "%*s", longest, ast_getformatname(1 << (x)) );
 			} else if (x >= 0 && y >= 0) {
+				/* Codec not supported */
 				ast_str_append(&out, -1, "%*s", curlen + 1, "-");
 			} else {
+				/* Upper left hand corner */
 				ast_str_append(&out, -1, "%*s", longest, "");
 			}
 		}
 		ast_str_append(&out, -1, "\n");
-		ast_cli(a->fd, "%s", out->str);			
+		ast_cli(a->fd, "%s", ast_str_buffer(out));
 	}
 	AST_RWLIST_UNLOCK(&translators);
 	return CLI_SUCCESS;




More information about the svn-commits mailing list