[PATCH v7 01/11] make lineno_width() from blame reusable for others
From: Zbigniew Jędrzejewski-Szmek <hidden>
Date: 2016-06-15 22:53:08
Subsystem:
the rest · Maintainer:
Linus Torvalds
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 <redacted> --- 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