This file is indexed.

/usr/lib/python2.7/dist-packages/framework/subsystems/ogsmd/helpers.py is in fso-frameworkd 0.9.5.9+git20110512-5.

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
#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-
"""
(C) 2008 Michael 'Mickey' Lauer <mlauer@vanille-media.de>
(C) 2008 Openmoko, Inc.
GPLv2 or later

Package: ogsmd
Module: helpers

"""

import logging
logger = logging.getLogger('ogsmd')

#========================================================================#
def writeToFile( path, value ):
#========================================================================#
    logger.debug( "(writing '%s' to '%s')" % ( value, path ) )
    try:
        f = open( path, 'w' )
    except IOError, e:
        logger.warning( "(could not write to '%s': %s)" % ( path, e ) )
    else:
        f.write( "%s\n" % value )

#=========================================================================#
def safesplit( string, delim, max=-1 ):
#=========================================================================#
    """A split function which is quote sign aware."""
    items = string.split(delim)
    safeitems = []
    safeitem = ""
    for i in items:
        safeitem = delim.join( [safeitem, i] )
        if safeitem.count('"')%2 == 0:
            safeitems.append( safeitem[1:] )
            safeitem = ""
    if max < len(safeitems):
        return safeitems[:max] + [delim.join(safeitems[max:])]
    else:
        return safeitems

#=========================================================================#
class BiDict( object ):
#=========================================================================#
    """A bidirectional dictionary."""

    AUTOINVERSE = False

    def __init__( self, adict = {} ):
        self._d = adict.copy()
        self._back = {}
        self._syncBack()

    def _syncBack( self ):
        for key, value in self._d.iteritems():
            self._back[value] = key
        assert len( self._d) == len( self._back ), "logic error"

    def __getitem__( self, key ):
        if not self.AUTOINVERSE:
            return self._d[key]
        else:
            try:
                return self._d[key]
            except KeyError:
                return self._back[key]

    def revlookup( self, key ):
        return self._back[key]

    def __setitem__( self, key, value ):
        if value in self._d:
            raise ValueError( "value is already a key" )
        elif key in self._back:
            raise ValueError( "key is already a value" )
        else:
            try:
                oldvalue = self._d[key]
            except KeyError:
                pass
            else:
                del self._back[oldvalue]
            self._d[key] = value
            self._back[value] = key
        assert len( self._d) == len( self._back ), "logic error"

    def __delitem__( self, key ):
        try:
            value = self._d[key]
        except KeyError:
            value = self._back[key]
            del self._back[key]
            del self._d[value]
        else:
            del self._d[key]
            del self._back[value]
        assert len( self._d) == len( self._back ), "logic error"

    def __repr__( self ):
        return "%s + %s" % ( self._d, self._back )

    def keys( self ):
        if not self.AUTOINVERSE:
            return self._d.keys()
        else:
            return self._d.keys() + self._back.keys()

    def has_key( self, k ):
        if not self.AUTOINVERSE:
            return self._d.has_key(k)
        else:
            return self._d.has_key(k) + self._back.has_key(k)

#=========================================================================#
if __name__ == "__main__":
#=========================================================================#
    d = BiDict( {"x":"y" } )

    d["foo"] = "bar"
    try:
        d["bar"] = 10 # should bail out
    except ValueError:
        pass
    else:
        assert False, "axiom violated"
    assert d["bar"] == "foo"

    del d["bar"]