[Zope-Checkins] CVS: Zope/lib/python/OFS - DTMLMethod.py:1.78
Andreas Jung
andreas@digicool.com
Fri, 19 Apr 2002 10:27:42 -0400
Update of /cvs-repository/Zope/lib/python/OFS
In directory cvs.zope.org:/tmp/cvs-serv10748/lib/python/OFS
Modified Files:
DTMLMethod.py
Log Message:
Collector #348: decapitate() now recognizes both \r\n and \n\n
to be compliant with the HTTP RFC
=== Zope/lib/python/OFS/DTMLMethod.py 1.77 => 1.78 ===
hdr_start = re.compile(r'(%s):(.*)' % token).match
+
def decapitate(html, RESPONSE=None):
headers = []
- spos = 0
+ spos = 0
+ eolen = 1
while 1:
m = hdr_start(html, spos)
if not m:
+ if html[spos:spos+2] == '\r\n':
+ eolen = 2
+ break
if html[spos:spos+1] == '\n':
+ eolen = 1
break
return html
header = list(m.groups())
headers.append(header)
spos = m.end() + 1
while spos < len(html) and html[spos] in ' \t':
- eol = html.find( '\n', spos)
- if eol < 0: return html
- header.append(html[spos:eol].strip())
- spos = eol + 1
+ eol = find(html, '\r\n', spos)
+ if eol <> -1:
+ eolen = 2
+ else:
+ eol = find(html, '\n', spos)
+ if eol < 0: return html
+ eolen = 1
+ header.append(strip(html[spos:eol]))
+ spos = eol + eolen
if RESPONSE is not None:
for header in headers:
hkey = header.pop(0)
RESPONSE.setHeader(hkey, ' '.join(header).strip())
- return html[spos + 1:]
+ return html[spos + eolen:]
+
default_dm_html="""<dtml-var standard_html_header>
<h2><dtml-var title_or_id> <dtml-var document_title></h2>