~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/repository.py

Use simple xml unescaping to find involved ids, rather than importing xml.sax

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
from copy import deepcopy
18
18
from cStringIO import StringIO
19
19
from unittest import TestSuite
20
 
import xml.sax.saxutils
21
20
 
22
21
import bzrlib.bzrdir as bzrdir
23
22
from bzrlib.decorators import needs_read_lock, needs_write_lock
366
365
            if start < 9: continue
367
366
            end = line.find('"', start)
368
367
            assert end>= 0
369
 
            file_id = xml.sax.saxutils.unescape(line[start:end])
 
368
            file_id = _unescape_xml(line[start:end])
370
369
 
371
370
            # check if file_id is already present
372
371
            if file_id in file_ids: continue
375
374
            if start < 10: continue
376
375
            end = line.find('"', start)
377
376
            assert end>= 0
378
 
            revision_id = xml.sax.saxutils.unescape(line[start:end])
379
 
 
 
377
            revision_id = _unescape_xml(line[start:end])
380
378
            if revision_id in changes:
381
379
                file_ids.add(file_id)
382
380
        return file_ids
1664
1662
        """Update the pb by a step."""
1665
1663
        self.count +=1
1666
1664
        self.pb.update(message, self.count, self.total)
 
1665
 
 
1666
 
 
1667
# Copied from xml.sax.saxutils
 
1668
def _unescape_xml(data):
 
1669
    """Unescape &amp;, &lt;, and &gt; in a string of data.
 
1670
    """
 
1671
    data = data.replace("&lt;", "<")
 
1672
    data = data.replace("&gt;", ">")
 
1673
    # must do ampersand last
 
1674
    return data.replace("&amp;", "&")