On Mon, Aug 17, 2015 at 5:18 AM, Eric Sunshine <sunshine@xxxxxxxxxxxxxx> wrote: > On Sat, Aug 15, 2015 at 2:00 PM, Karthik Nayak <karthik.188@xxxxxxxxx> wrote: >> Add strbuf_utf8_align() which will align a given string into a strbuf >> as per given align_type and width. If the width is greater than the >> string length then no alignment is performed. > > A couple minor comments below... > >> Signed-off-by: Karthik Nayak <karthik.188@xxxxxxxxx> >> --- >> diff --git a/utf8.c b/utf8.c >> index 28e6d76..0fb8e9d 100644 >> --- a/utf8.c >> +++ b/utf8.c >> @@ -644,3 +644,24 @@ int skip_utf8_bom(char **text, size_t len) >> *text += strlen(utf8_bom); >> return 1; >> } >> + >> +void strbuf_utf8_align(struct strbuf *buf, align_type position, unsigned int width, >> + const char *s) >> +{ >> + int slen = strlen(s); >> + int display_len = utf8_strnwidth(s, slen, 0); >> + int utf8_compensation = slen - display_len; > > Based upon the previous round review, I think you had intended to name > this merely 'compensation'. > In the last patch it was suggested because I spelled 'compensation' wrong. I think the "utf8_" makes a good addition to the variable name. >> + if (display_len >= width) { >> + strbuf_addstr(buf, s); >> + return; >> + } >> + >> + if (position == ALIGN_LEFT) >> + strbuf_addf(buf, "%-*s", width + utf8_compensation, s); >> + else if (position == ALIGN_MIDDLE) { >> + int left = (width - display_len)/2; > > Style: spaces around '/' > will add. >> + strbuf_addf(buf, "%*s%-*s", left, "", width - left + utf8_compensation, s); >> + } else if (position == ALIGN_RIGHT) >> + strbuf_addf(buf, "%*s", width + utf8_compensation, s); >> +} >> diff --git a/utf8.h b/utf8.h >> index 5a9e94b..7930b44 100644 >> --- a/utf8.h >> +++ b/utf8.h >> @@ -55,4 +55,19 @@ int mbs_chrlen(const char **text, size_t *remainder_p, const char *encoding); >> */ >> int is_hfs_dotgit(const char *path); >> >> +typedef enum { >> + ALIGN_LEFT, >> + ALIGN_MIDDLE, >> + ALIGN_RIGHT >> +} align_type; >> + >> +/* >> + * Align the string given and store it into a strbuf as per the >> + * 'position' and 'width'. If the given string length is larger than >> + * 'width' than then the input string is not truncated and no >> + * alignment is done. >> + */ >> +void strbuf_utf8_align(struct strbuf *buf, align_type position, unsigned int width, >> + const char *s); >> + >> #endif >> -- >> 2.5.0 Thanks for the review. -- Regards, Karthik Nayak -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html