Andrew's git
/
gitweb.git
/ diff
summary
|
log
|
commit
| diff |
tree
commit
grep
author
committer
pickaxe
?
re
wt-status: extract the code to compute width for labels
author
Jonathan Nieder
<jrnieder@gmail.com>
Thu, 19 Dec 2013 19:43:19 +0000
(11:43 -0800)
committer
Junio C Hamano
<gitster@pobox.com>
Wed, 12 Mar 2014 21:08:05 +0000
(14:08 -0700)
Signed-off-by: Junio C Hamano <gitster@pobox.com>
wt-status.c
patch
|
blob
|
history
raw
|
patch
|
inline
| side by side (parent:
d52cb57
)
diff --git
a/wt-status.c
b/wt-status.c
index 9cf70287d9aae08e74d5afb9d54a6ba9aad62121..db98c52d452f326fdf01217671a896e39b6aba22 100644
(file)
--- a/
wt-status.c
+++ b/
wt-status.c
@@
-292,6
+292,19
@@
static const char *wt_status_diff_status_string(int status)
}
}
}
}
+static int maxwidth(const char *(*label)(int), int minval, int maxval)
+{
+ int result = 0, i;
+
+ for (i = minval; i <= maxval; i++) {
+ const char *s = label(i);
+ int len = s ? utf8_strwidth(s) : 0;
+ if (len > result)
+ result = len;
+ }
+ return result;
+}
+
static void wt_status_print_change_data(struct wt_status *s,
int change_type,
struct string_list_item *it)
static void wt_status_print_change_data(struct wt_status *s,
int change_type,
struct string_list_item *it)
@@
-310,13
+323,8
@@
static void wt_status_print_change_data(struct wt_status *s,
int len;
if (!padding) {
int len;
if (!padding) {
- /* If DIFF_STATUS_* uses outside this range, we're in trouble */
- for (status = 'A'; status <= 'Z'; status++) {
- what = wt_status_diff_status_string(status);
- len = what ? strlen(what) : 0;
- if (len > label_width)
- label_width = len;
- }
+ /* If DIFF_STATUS_* uses outside the range [A..Z], we're in trouble */
+ label_width = maxwidth(wt_status_diff_status_string, 'A', 'Z');
label_width += strlen(" ");
padding = xmallocz(label_width);
memset(padding, ' ', label_width);
label_width += strlen(" ");
padding = xmallocz(label_width);
memset(padding, ' ', label_width);