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

[PATCH] Better mail handling in stgit

From
POPierre Ossman <drzeus-list@drzeus.cx>
Date
Sep 17, 2005, 13:34 UTC
Message-ID
<432C1B71.4090105@drzeus.cx>
Fix some issues with the mail function in StGIT:
 * Allow multiple To/Cc/Bcc command line options.
 * Better parsing of mail addresses.
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>

--- stgit.orig/commands/mail.py 2005-08-03 21:04:10.000000000 +0200 +++ stgit/commands/mail.py 2005-09-17 14:57:23.000000000 +0200

@@ -78,11 +78,14 @@
                        metavar = '[PATCH1][:[PATCH2]]',
                        help = 'e-mail patches between PATCH1 and PATCH2'),
            make_option('--to',
-                       help = 'Add TO to the To: list'),
+                       help = 'Add TO to the To: list',
+                       action = 'append'),
            make_option('--cc',
-                       help = 'Add CC to the Cc: list'),
+                       help = 'Add CC to the Cc: list',
+                       action = 'append'),
            make_option('--bcc',
-                       help = 'Add BCC to the Bcc: list'),
+                       help = 'Add BCC to the Bcc: list',
+                       action = 'append'),
            make_option('-t', '--template', metavar = 'FILE',
                        help = 'use FILE as the message template'),
            make_option('-f', '--first', metavar = 'FILE',
@@ -112,7 +115,10 @@
     """Return a two elements tuple: (from, [to])
     """
     def __addr_list(string):
-        return re.split('.*?([\w\.]+@[\w\.]+)', string)[1:-1:2]
+    	m = re.search('[^@\s<,]+@[^>\s,]+', string);
+    	if (m == None):
+    		return []
+    	return [ m.group() ] + __addr_list(string[m.end():])
 
     from_addr_list = []
     to_addr_list = []
@@ -152,6 +158,25 @@
 
     s.quit()
 
+def __build_address_headers(options):
+    headers_end = ''
+    if options.to:
+    	headers_end += 'To: '
+    	for to in options.to:
+	        headers_end += '%s,' % to
+	headers_end = headers_end[:-1] + '\n'
+    if options.cc:
+    	headers_end += 'Cc: '
+    	for cc in options.cc:
+	        headers_end += '%s,' % cc
+	headers_end = headers_end[:-1] + '\n'
+    if options.bcc:
+    	headers_end += 'Bcc: '
+    	for bcc in options.bcc:
+	        headers_end += '%s,' % bcc
+	headers_end = headers_end[:-1] + '\n'
+    return headers_end
+
 def __build_first(tmpl, total_nr, msg_id, options):
     """Build the first message (series description) to be sent via SMTP
     """
@@ -160,12 +185,7 @@
         maintainer = ''
 
     headers_end = ''
-    if options.to:
-        headers_end += 'To: %s\n' % options.to
-    if options.cc:
-        headers_end += 'Cc: %s\n' % options.cc
-    if options.bcc:
-        headers_end += 'Bcc: %s\n' % options.bcc
+    headers_end += __build_address_headers(options)
     headers_end += 'Message-Id: %s\n' % msg_id
 
     total_nr_str = str(total_nr)
@@ -210,12 +230,7 @@
         maintainer = '%s <%s>' % (p.get_commname(), p.get_commemail())
 
     headers_end = ''
-    if options.to:
-        headers_end += 'To: %s\n' % options.to
-    if options.cc:
-        headers_end += 'Cc: %s\n' % options.cc
-    if options.bcc:
-        headers_end += 'Bcc: %s\n' % options.bcc
+    headers_end += __build_address_headers(options)
     headers_end += 'Message-Id: %s\n' % msg_id
     if ref_id:
         headers_end += "In-Reply-To: %s\n" % ref_id
Next: Catalin Marinas
Message 1 of 2 in “Better mail handling in stgit”
  1. Better mail handling in stgitPierre Ossman, Sep 17, 2005
  2. Catalin MarinasSep 18, 2005

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.