Skip to content

Commit

Permalink
Merge branch 'sp/shortlog-missing-lf'
Browse files Browse the repository at this point in the history
When a line to be wrapped has a solid run of non space characters
whose length exactly is the wrap width, "git shortlog -w" failed to
add a newline after such a line.

* sp/shortlog-missing-lf:
  strbuf_add_wrapped*(): Remove unused return value
  shortlog: fix wrapping lines of wraplen
  • Loading branch information
gitster committed Jan 2, 2013
2 parents b05d8c6 + e0db176 commit 71288e1
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 12 deletions.
5 changes: 2 additions & 3 deletions builtin/shortlog.c
Expand Up @@ -306,9 +306,8 @@ int cmd_shortlog(int argc, const char **argv, const char *prefix)
static void add_wrapped_shortlog_msg(struct strbuf *sb, const char *s,
const struct shortlog *log)
{
int col = strbuf_add_wrapped_text(sb, s, log->in1, log->in2, log->wrap);
if (col != log->wrap)
strbuf_addch(sb, '\n');
strbuf_add_wrapped_text(sb, s, log->in1, log->in2, log->wrap);
strbuf_addch(sb, '\n');
}

void shortlog_output(struct shortlog *log)
Expand Down
24 changes: 24 additions & 0 deletions t/t4201-shortlog.sh
Expand Up @@ -120,6 +120,30 @@ test_expect_success 'shortlog from non-git directory' '
test_cmp expect out
'

test_expect_success 'shortlog should add newline when input line matches wraplen' '
cat >expect <<\EOF &&
A U Thor (2):
bbbbbbbbbbbbbbbbbb: bbbbbbbb bbb bbbb bbbbbbb bb bbbb bbb bbbbb bbbbbb
aaaaaaaaaaaaaaaaaaaaaa: aaaaaa aaaaaaaaaa aaaa aaaaaaaa aa aaaa aa aaa
EOF
git shortlog -w >out <<\EOF &&
commit 0000000000000000000000000000000000000001
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
aaaaaaaaaaaaaaaaaaaaaa: aaaaaa aaaaaaaaaa aaaa aaaaaaaa aa aaaa aa aaa
commit 0000000000000000000000000000000000000002
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
bbbbbbbbbbbbbbbbbb: bbbbbbbb bbb bbbb bbbbbbb bb bbbb bbb bbbbb bbbbbb
EOF
test_cmp expect out
'

iconvfromutf8toiso88591() {
printf "%s" "$*" | iconv -f UTF-8 -t ISO8859-1
}
Expand Down
13 changes: 6 additions & 7 deletions utf8.c
Expand Up @@ -323,7 +323,7 @@ static size_t display_mode_esc_sequence_len(const char *s)
* If indent is negative, assume that already -indent columns have been
* consumed (and no extra indent is necessary for the first line).
*/
int strbuf_add_wrapped_text(struct strbuf *buf,
void strbuf_add_wrapped_text(struct strbuf *buf,
const char *text, int indent1, int indent2, int width)
{
int indent, w, assume_utf8 = 1;
Expand All @@ -332,7 +332,7 @@ int strbuf_add_wrapped_text(struct strbuf *buf,

if (width <= 0) {
strbuf_add_indented_text(buf, text, indent1, indent2);
return 1;
return;
}

retry:
Expand All @@ -356,14 +356,14 @@ int strbuf_add_wrapped_text(struct strbuf *buf,
if (w <= width || !space) {
const char *start = bol;
if (!c && text == start)
return w;
return;
if (space)
start = space;
else
strbuf_addchars(buf, ' ', indent);
strbuf_add(buf, start, text - start);
if (!c)
return w;
return;
space = text;
if (c == '\t')
w |= 0x07;
Expand Down Expand Up @@ -405,13 +405,12 @@ int strbuf_add_wrapped_text(struct strbuf *buf,
}
}

int strbuf_add_wrapped_bytes(struct strbuf *buf, const char *data, int len,
void strbuf_add_wrapped_bytes(struct strbuf *buf, const char *data, int len,
int indent, int indent2, int width)
{
char *tmp = xstrndup(data, len);
int r = strbuf_add_wrapped_text(buf, tmp, indent, indent2, width);
strbuf_add_wrapped_text(buf, tmp, indent, indent2, width);
free(tmp);
return r;
}

int is_encoding_utf8(const char *name)
Expand Down
4 changes: 2 additions & 2 deletions utf8.h
Expand Up @@ -9,9 +9,9 @@ int is_utf8(const char *text);
int is_encoding_utf8(const char *name);
int same_encoding(const char *, const char *);

int strbuf_add_wrapped_text(struct strbuf *buf,
void strbuf_add_wrapped_text(struct strbuf *buf,
const char *text, int indent, int indent2, int width);
int strbuf_add_wrapped_bytes(struct strbuf *buf, const char *data, int len,
void strbuf_add_wrapped_bytes(struct strbuf *buf, const char *data, int len,
int indent, int indent2, int width);

#ifndef NO_ICONV
Expand Down

0 comments on commit 71288e1

Please sign in to comment.