git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: What's cooking in git.git (Jan 2009, #03; Wed, 14)

From
Kirill Smelkov <kirr@landau.phys.spbu.ru>
Date
Jan 18, 2009, 14:54 UTC
Message-ID
<20090118145429.GA27522@roro3.zxlink>
In-Reply-To
<alpine.DEB.1.00.0901161253411.3586@pacific.mpi-cbg.de>
On Fri, Jan 16, 2009 at 12:54:28PM +0100, Johannes Schindelin wrote:
Show 10 quoted lines
> Hi,
> 
> On Fri, 16 Jan 2009, Junio C Hamano wrote:
> 
> > I thought there is somebody on this list who insists his name is of form:
> > 
> > 	From: A U Thor (MonikeR) <a.u@thor.xz>
> 
> It is Philippe Bruhat (BooK), who sometimes forgets the closing 
> parenthesis, and who is listed in .mailmap without the moniker.
So now I don't understand what to do.
>From one hand RFC822 says '(...)' is a comment, and from the other hand,
we have a use case where one guy wants this to stay.
For the record, here is the questionable patch. Any suggestion?

Thanks, Kirill

commit 49bebfbe18dac296e5e246884bd98c1f90be9676
Author: Kirill Smelkov <kirr@landau.phys.spbu.ru>
Date:   Tue Jan 13 01:21:04 2009 +0300
    mailinfo: more smarter removal of rfc822 comments from 'From'
    
    As described in RFC822 (3.4.3 COMMENTS, and  A.1.4.), comments, as e.g.
    
        John (zzz) Doe <john.doe@xz> (Comment)
    
    should "NOT [be] included in the destination mailbox"
    
    We need this functionality to pass all RFC2047 based tests in the next commit.
    
    Signed-off-by: Kirill Smelkov <kirr@landau.phys.spbu.ru>
diff --git a/builtin-mailinfo.c b/builtin-mailinfo.c
index dacc8ac..958c905 100644
--- a/builtin-mailinfo.c
+++ b/builtin-mailinfo.c
@@ -29,6 +29,9 @@ static struct strbuf **p_hdr_data, **s_hdr_data;
 #define MAX_HDR_PARSED 10
 #define MAX_BOUNDARIES 5
 
+static void cleanup_space(struct strbuf *sb);
+
+
 static void get_sane_name(struct strbuf *out, struct strbuf *name, struct strbuf *email)
 {
 	struct strbuf *src = name;
@@ -120,6 +123,33 @@ static void handle_from(const struct strbuf *from)
 		strbuf_setlen(&f, f.len - 1);
 	}
 
+	/* This still could not be finished for emails like
+	 *
+	 *	"John (zzz) Doe <john.doe@xz> (Comment)"
+	 *
+	 * The email part had already been removed, so let's kill comments as
+	 * well -- RFC822 says comments should not be present in destination
+	 * mailbox (3.4.3. Comments  and  A.1.4.)
+	 */
+	while (1) {
+		char *ta;
+
+		at = strchr(f.buf, '(');
+		if (!at)
+			break;
+		ta = strchr(at, ')');
+		if (!ta)
+			break;
+
+		strbuf_remove(&f, at - f.buf, ta-at + (*ta ? 1 : 0));
+	}
+
+	/* and let's finally cleanup spaces that were around (possibly
+	 * internal) comments
+	 */
+	cleanup_space(&f);
+	strbuf_trim(&f);
+
 	get_sane_name(&name, &f, &email);
 	strbuf_release(&f);
 }
diff --git a/t/t5100/sample.mbox b/t/t5100/sample.mbox
index 38725f3..4f80b82 100644
--- a/t/t5100/sample.mbox
+++ b/t/t5100/sample.mbox
@@ -2,10 +2,10 @@
 	
     
 From nobody Mon Sep 17 00:00:00 2001
-From: A
+From: A (zzz)
       U
       Thor
-      <a.u.thor@example.com>
+      <a.u.thor@example.com> (Comment)
 Date: Fri, 9 Jun 2006 00:44:16 -0700
 Subject: [PATCH] a commit.
 
Previous: Johannes SchindelinNext: Junio C Hamano
Message 7 of 11 in “What's cooking in git.git (Jan 2009, #03; Wed, 14)”
  1. Junio C HamanoJan 14, 2009
  2. Kirill SmelkovJan 15, 2009
  3. Junio C HamanoJan 15, 2009
  4. Kirill SmelkovJan 16, 2009
  5. Junio C HamanoJan 16, 2009
  6. Johannes SchindelinJan 16, 2009
  7. Kirill SmelkovJan 18, 2009
  8. John (zzz) Doe <john.doe@xz> (Comment)Junio C Hamano, Jan 18, 2009
  9. Kirill SmelkovJan 20, 2009
  10. Junio C HamanoJan 21, 2009
  11. Kirill SmelkovJan 21, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.