git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v7 01/11] make lineno_width() from blame reusable for others

From
Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Date
Feb 24, 2012, 20:32 UTC
Message-ID
<1330115538-1576-1-git-send-email-zbyszek@in.waw.pl>
In-Reply-To
<4F47F394.5070007@in.waw.pl>

builtin/blame.c has a helper function to compute how many columns we need to show a line-number, whose implementation is reusable as a more generic helper function to count the number of columns necessary to show any cardinal number.

Rename it to decimal_width(), move it to pager.c and export it for use by future callers.

Signed-off-by: Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
---
 builtin/blame.c | 18 +++---------------
 cache.h         |  1 +
 pager.c         | 13 +++++++++++++
 3 files changed, 17 insertions(+), 15 deletions(-)
diff --git a/builtin/blame.c b/builtin/blame.c
index 01956c8..b35bd62 100644
--- a/builtin/blame.c
+++ b/builtin/blame.c
@@ -1829,18 +1829,6 @@ static int read_ancestry(const char *graft_file)
 }
 
 /*
- * How many columns do we need to show line numbers in decimal?
- */
-static int lineno_width(int lines)
-{
-	int i, width;
-
-	for (width = 1, i = 10; i <= lines; width++)
-		i *= 10;
-	return width;
-}
-
-/*
  * How many columns do we need to show line numbers, authors,
  * and filenames?
  */
@@ -1880,9 +1868,9 @@ static void find_alignment(struct scoreboard *sb, int *option)
 		if (largest_score < ent_score(sb, e))
 			largest_score = ent_score(sb, e);
 	}
-	max_orig_digits = lineno_width(longest_src_lines);
-	max_digits = lineno_width(longest_dst_lines);
-	max_score_digits = lineno_width(largest_score);
+	max_orig_digits = decimal_width(longest_src_lines);
+	max_digits = decimal_width(longest_dst_lines);
+	max_score_digits = decimal_width(largest_score);
 }
 
 /*
diff --git a/cache.h b/cache.h
index 881524f..d908184 100644
--- a/cache.h
+++ b/cache.h
@@ -1187,6 +1187,7 @@ extern const char *pager_program;
 extern int pager_in_use(void);
 extern int pager_use_color;
 extern int term_columns(void);
+extern int decimal_width(uintmax_t number);
 
 extern const char *editor_program;
 extern const char *askpass_program;
diff --git a/pager.c b/pager.c
index b790967..60be7bb 100644
--- a/pager.c
+++ b/pager.c
@@ -147,3 +147,16 @@ int term_columns(void)
 
 	return term_columns_at_startup;
 }
+
+/*
+ * How many columns do we need to show this number in decimal?
+ */
+int decimal_width(uintmax_t number)
+{
+	int width;
+	uintmax_t i;
+
+	for (width = 1, i = 10; i <= number; width++)
+		i *= 10;
+	return width;
+}
-- 
1.7.9.2.332.g05f13
Previous: Zbigniew Jędrzejewski-SzmekNext: Zbigniew Jędrzejewski-Szmek
Message 21 of 35 in “diff --stat: use the full terminal width”
  1. 0/8 diff --stat: use the full terminal widthZbigniew Jędrzejewski-Szmek, Feb 20, 2012
  2. 1/8 make lineno_width() from blame reusable for othersZbigniew Jędrzejewski-Szmek, Feb 20, 2012
  3. 2/8 diff --stat: tests for long filenames and big change countsZbigniew Jędrzejewski-Szmek, Feb 20, 2012
  4. 3/8 diff --stat: use the full terminal widthZbigniew Jędrzejewski-Szmek, Feb 20, 2012
  5. 4/8 show --stat: use the full terminal widthZbigniew Jędrzejewski-Szmek, Feb 20, 2012
  6. 5/8 log --stat: use the full terminal widthZbigniew Jędrzejewski-Szmek, Feb 20, 2012
  7. 6/8 merge --stat: use the full terminal widthZbigniew Jędrzejewski-Szmek, Feb 20, 2012
  8. 7/8 diff --stat: limit graph part to 40 columnsZbigniew Jędrzejewski-Szmek, Feb 20, 2012
  9. 8/8 diff --stat: use less columns for change countsZbigniew Jędrzejewski-Szmek, Feb 20, 2012
  10. Junio C HamanoFeb 20, 2012
  11. Zbigniew Jędrzejewski-SzmekFeb 21, 2012
  12. Junio C HamanoFeb 21, 2012
  13. Zbigniew Jędrzejewski-SzmekFeb 21, 2012
  14. Junio C HamanoFeb 21, 2012
  15. Zbigniew Jędrzejewski-SzmekFeb 22, 2012
  16. 1/8 diff --stat: use a maximum of 5/8 for the filename partZbigniew Jędrzejewski-Szmek, Feb 22, 2012
  17. 2/8 diff --stat: add a test for output with COLUMNS=40Zbigniew Jędrzejewski-Szmek, Feb 22, 2012
  18. 3/8 diff --stat: limit graph part to 40 columnsZbigniew Jędrzejewski-Szmek, Feb 22, 2012
  19. Junio C HamanoFeb 22, 2012
  20. 0/11 diff --stat: use the full terminal widthZbigniew Jędrzejewski-Szmek, Feb 24, 2012
  21. 01/11 make lineno_width() from blame reusable for othersZbigniew Jędrzejewski-Szmek, Feb 24, 2012
  22. 02/11 diff --stat: tests for long filenames and big change countsZbigniew Jędrzejewski-Szmek, Feb 24, 2012
  23. 03/11 diff --stat: use the full terminal widthZbigniew Jędrzejewski-Szmek, Feb 24, 2012
  24. 04/11 show --stat: use the full terminal widthZbigniew Jędrzejewski-Szmek, Feb 24, 2012
  25. 05/11 log --stat: use the full terminal widthZbigniew Jędrzejewski-Szmek, Feb 24, 2012
  26. 06/11 merge --stat: use the full terminal widthZbigniew Jędrzejewski-Szmek, Feb 24, 2012
  27. 07/11 diff --stat: use a maximum of 5/8 for the filename partZbigniew Jędrzejewski-Szmek, Feb 24, 2012
  28. 08/11 diff --stat: add a test for output with COLUMNS=40Zbigniew Jędrzejewski-Szmek, Feb 24, 2012
  29. 09/11 diff --stat: enable limiting of the graph partZbigniew Jędrzejewski-Szmek, Feb 24, 2012
  30. 10/11 diff --stat: add config option to limit graph widthZbigniew Jędrzejewski-Szmek, Feb 24, 2012
  31. 11/11 diff --stat: use less columns for change countsZbigniew Jędrzejewski-Szmek, Feb 24, 2012
  32. Nguyen Thai Ngoc DuyFeb 21, 2012
  33. Zbigniew Jędrzejewski-SzmekFeb 21, 2012
  34. Miles BaderFeb 23, 2012
  35. Junio C HamanoFeb 23, 2012

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.