"""
import sys, os, re
+from email.Header import decode_header, make_header
from optparse import OptionParser, make_option
from stgit.commands.common import *
return stripped
+def __replace_slashes_with_dashes(name):
+ stripped = name.replace('/', '-')
+
+ return stripped
+
def __parse_description(descr):
"""Parse the patch description and return the new description and
author information (if any).
"""Parse the input file in a mail format and return (description,
authname, authemail, authdate)
"""
+ def __decode_header(header):
+ """Decode a qp-encoded e-mail header as per rfc2047"""
+ try:
+ words_enc = decode_header(header)
+ hobj = make_header(words_enc)
+ except Exception, ex:
+ raise CmdException, 'header decoding error: %s' % str(ex)
+ return unicode(hobj).encode('utf-8')
+
if filename:
f = file(filename)
else:
break
line = line.strip()
if re.match('from:\s+', line, re.I):
- auth = re.findall('^.*?:\s+(.*)$', line)[0]
+ auth = __decode_header(re.findall('^.*?:\s+(.*)$', line)[0])
authname, authemail = name_email(auth)
elif re.match('date:\s+', line, re.I):
authdate = re.findall('^.*?:\s+(.*)$', line)[0]
elif re.match('subject:\s+', line, re.I):
- descr = re.findall('^.*?:\s+(.*)$', line)[0]
+ descr = __decode_header(re.findall('^.*?:\s+(.*)$', line)[0])
elif line == '':
# end of headers
break
__parse_patch(filename)
if not patch:
- patch = make_patch_name(message)
- if not patch:
- raise CmdException, 'Unknown patch name'
+ patch = make_patch_name(message, crt_series.patch_exists)
# refresh_patch() will invoke the editor in this case, with correct
# patch content
if options.strip:
patch = __strip_patch_name(patch)
+ patch = __replace_slashes_with_dashes(patch);
if options.ignore and patch in applied:
print 'Ignoring already applied patch "%s"' % patch
continue