Archive of RubyForge sup-talk mailing list
 help / color / mirror / Atom feed
From: Michael Stapelberg <michael+sup@stapelberg.de>
To: sup-devel <sup-devel@rubyforge.org>
Cc: sup-talk <sup-talk@rubyforge.org>
Subject: [sup-devel] [PATCH] Re: [sup-talk] Bug reading/writing contacts with \" in them
Date: Mon, 24 Jan 2011 19:20:13 +0100	[thread overview]
Message-ID: <1295892863-sup-1896@midna.zekjur.net> (raw)
In-Reply-To: <1295845756-sup-308@pruts.nl>

[-- Attachment #1: Type: text/plain, Size: 1083 bytes --]

Hi Ico,

Excerpts from Ico's message of 2011-01-24 06:20:47 +0100:
> The problem occurs when contacts have a certain combination of backslashes and
> quotes in them. I 'imported' my mutt aliases with a simple script converting
> the format (too bad it is *almost* the same but not quite), and one of the
> contacts looked like this:
> 
>   somename: \"Some, Name\" <somename@somedomain.com>
As discussed on IRC, I’ve made the following findings:

 • Some combinations of email addresses (phrase + addr-spec in RFC822
   terminology) need to be escaped, for example when they contain a comma or a
   quote.
 • This escaping happens in Person#full_address by using @name.inspect
 • Person#full_address also is used when saving contacts back to contacts.txt
 • Person#initialize partly strips the quotes (line 10/11), but does not handle
   backslashes.

Attached is a patch which fixes the issue. Input like "Rob, Post\" will first
be turned into "Rob, Post\\" when initially escaping, but will then stay "Rob,
Post\\" (no more exploding backslashes).

Best regards,
Michael

[-- Attachment #2: 0001-Bugfix-Un-escape-slashes-when-initializing-a-new-Per.patch --]
[-- Type: application/octet-stream, Size: 798 bytes --]

From 318d1a4f88a75776123471a665807923c8463dd0 Mon Sep 17 00:00:00 2001
From: Michael Stapelberg <michael@stapelberg.de>
Date: Mon, 24 Jan 2011 19:18:57 +0100
Subject: [PATCH] Bugfix: Un-escape slashes when initializing a new Person

In Person#full_address, we add slashes by using @name.inspect, so we need to
take care of them here.
---
 lib/sup/person.rb |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/lib/sup/person.rb b/lib/sup/person.rb
index 28887b3..45660c0 100644
--- a/lib/sup/person.rb
+++ b/lib/sup/person.rb
@@ -9,6 +9,7 @@ class Person
     @name = if name
       name = name.strip.gsub(/\s+/, " ")
       name =~ /^(['"]\s*)(.*?)(\s*["'])$/ ? $2 : name
+      name.gsub('\\\\', '\\')
     end
 
     @email = email.strip.gsub(/\s+/, " ").downcase
-- 
1.7.1


[-- Attachment #3: Type: text/plain, Size: 143 bytes --]

_______________________________________________
Sup-devel mailing list
Sup-devel@rubyforge.org
http://rubyforge.org/mailman/listinfo/sup-devel

      reply	other threads:[~2011-01-24 18:27 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-01-24  5:20 Ico
2011-01-24 18:20 ` Michael Stapelberg [this message]

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=1295892863-sup-1896@midna.zekjur.net \
    --to=michael+sup@stapelberg.de \
    --cc=sup-devel@rubyforge.org \
    --cc=sup-talk@rubyforge.org \
    /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