This file is indexed.

/usr/share/pyshared/kid/util.py is in python-kid 0.9.6-2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
# -*- coding: utf-8 -*-

"""Utility functions for Kid."""

__revision__ = "$Rev: 492 $"
__date__ = "$Date: 2007-07-06 21:38:45 -0400 (Fri, 06 Jul 2007) $"
__author__ = "Ryan Tomayko (rtomayko@gmail.com)"
__copyright__ = "Copyright 2004-2005, Ryan Tomayko"
__license__ = "MIT <http://www.opensource.org/licenses/mit-license.php>"


from urllib import splittype


class QuickTextReader(object):

    def __init__(self, text):
        self.text = text
        self.len = len(self.text)
        self.pos = 0
        self.lines = None

    def __iter__(self):
        while 1:
            if self.lines is None:
                self.lines = self.text.splitlines(True)
            if not self.lines:
                break
            yield self.lines.pop(0)

    def close(self):
        self.text = None
        self.pos = self.len = 0
        self.lines = None

    def read(self, size=None):
        if size is not None:
            try:
                size = int(size)
            except:
                size = None
            else:
                if not 0 <= size < self.len:
                    size = None
        pos = self.pos
        if size is None:
            self.pos = self.len
            return self.text[pos:]
        else:
            self.pos += size
            if self.pos > self.len:
                self.pos = self.len
            return self.text[pos:self.pos]

    def seek(self, offset, whence=0):
        if whence:
            if whence == 2:
                self.pos = self.len - offset
            else:
                self.pos += offset
        else:
            self.pos = offset
            self.lines = None
        if self.pos < 0:
            self.pos = 0
        elif self.pos > self.len:
            self.pos = self.len

        def tell(self):
            return self.pos

        def next(self):
            if not self.lineno:
                self.lines = self.splitlines(True)
            self.lineno += 1
            if not self.lines:
                raise StopIteration
            return self.lines.pop(0)

def xml_sniff(text):
    """Sniff text to see if it looks like XML.

    Return True if text looks like XML, otherwise return False.

    """
    for x in text:
        if x in '\t\r\n ':
            continue
        elif x == '<':
            return True
        else:
            return False

def open_resource(uri, mode='rb'):
    """Generic resource opener."""
    scheme, rest = splittype(uri)
    if not scheme or (len(scheme) == 1 and rest.startswith('\\')):
        return open(uri, mode)
    else:
        import urllib2
        return urllib2.urlopen(uri)

def get_expat_error(error):
    """Return text showing the position of an Expat error."""
    source, lineno, offset = error.source, error.lineno, error.offset
    if lineno < 1:
        lineno = 1
        offset = 0
    source.seek(0)
    nlines = 0
    for line in source:
        lineno -= 1
        nlines += 1
        if not lineno:
            break
    else:
        offset = 0
    if nlines:
        if nlines == 1:
            if line.startswith('\xef\xbb\xbf'):
                line = line[3:]
        if line:
            if offset < 0:
                offset = 0
            elif offset > len(line):
                offset = len(line)
            if offset > 75:
                if len(line) - offset > 37:
                    line = line[offset-38:offset+38]
                    offset = 38
                else:
                    offset -= len(line) - 76
                    line = line[-76:]
            else:
                line = line[:76]
            if line:
                line = '%s\n%%%ds\n' % (line.rstrip(), offset + 1)
                line = line % '^'
    return line