git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Tor Arne Vestbø" <tavestbo@trolltech.com>
To: git@vger.kernel.org
Cc: Johannes.Schindelin@gmx.de, junio@pobox.com
Subject: [PATCH next] git-notes: fix printing of multi-line notes
Date: Tue, 13 Jan 2009 20:57:16 +0100	[thread overview]
Message-ID: <496CF21C.2050500@trolltech.com> (raw)

The line length was read from the same position every time,
causing mangled output when printing notes with multiple lines.

Also, adding new-line manually for each line ensures that we
get a new-line between commits, matching git-log for commits
without notes.

Signed-off-by: Tor Arne Vestbø <tavestbo@trolltech.com>
---

This approach uses a msg pointer, but I started out with just using
msg + msgoffset all over the place, so if that's a preferred way
to do things I'm happy to provide an alternate patch.

Also, I'm guessing this printing should go into pretty.c at some
point, so you can reference the notes as part of a custom pretty
format. If so, this code could be converted to use helpers such
as get_one_line().

This is my first patch to Git, so sorry if I messed something up :)

notes.c |   13 +++++++------
 1 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/notes.c b/notes.c
index ad43a2e..bd73784 100644
--- a/notes.c
+++ b/notes.c
@@ -110,8 +110,8 @@ void get_commit_notes(const struct commit *commit, struct strbuf *sb,
 {
 	static const char *utf8 = "utf-8";
 	unsigned char *sha1;
-	char *msg;
-	unsigned long msgoffset, msglen;
+	char *msg, *msg_p;
+	unsigned long linelen, msglen;
 	enum object_type type;
 
 	if (!initialized) {
@@ -148,12 +148,13 @@ void get_commit_notes(const struct commit *commit, struct strbuf *sb,
 
 	strbuf_addstr(sb, "\nNotes:\n");
 
-	for (msgoffset = 0; msgoffset < msglen;) {
-		int linelen = strchrnul(msg, '\n') - msg;
+	for (msg_p = msg; msg_p < msg + msglen; msg_p += linelen + 1) {
+		linelen = strchrnul(msg_p, '\n') - msg_p;
 
 		strbuf_addstr(sb, "    ");
-		strbuf_add(sb, msg + msgoffset, linelen);
-		msgoffset += linelen;
+		strbuf_add(sb, msg_p, linelen);
+		strbuf_addch(sb, '\n');
 	}
+
 	free(msg);
 }
-- 
1.6.0.2.GIT

             reply	other threads:[~2009-01-13 19:54 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-01-13 19:57 Tor Arne Vestbø [this message]
2009-01-13 22:40 ` [PATCH next] git-notes: fix printing of multi-line notes Johannes Schindelin
2009-01-14  6:48   ` Junio C Hamano
2009-01-14 10:14     ` Johannes Schindelin
2009-01-14 14:39     ` [PATCH next] git-notes: add test case for " Tor Arne Vestbø
2009-01-14 15:34       ` Johannes Schindelin
2009-01-14 16:28         ` [PATCH next v2] " Tor Arne Vestbø
2009-01-14 16:56           ` Jeff King
2009-01-14 17:09             ` Boyd Stephen Smith Jr.
2009-01-14 17:13               ` Jeff King
2009-01-14 17:14             ` Johannes Sixt
2009-01-14 17:19               ` Jeff King
2009-01-14 18:01               ` Johannes Schindelin
2009-01-14 20:57               ` [PATCH next v3] " Tor Arne Vestbø
2009-01-14 21:10                 ` Johannes Schindelin
2009-01-16 13:06                   ` [PATCH next v4] git-notes: fix printing of " Tor Arne Vestbø
2009-01-18 21:27                     ` Junio C Hamano

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=496CF21C.2050500@trolltech.com \
    --to=tavestbo@trolltech.com \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=git@vger.kernel.org \
    --cc=junio@pobox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).