diff options
| author | Lennart Poettering <lennart@poettering.net> | 2005-08-27 17:12:48 +0000 | 
|---|---|---|
| committer | Lennart Poettering <lennart@poettering.net> | 2005-08-27 17:12:48 +0000 | 
| commit | 3c7af5cffa21cf302b357c6ab722cdb0615e1950 (patch) | |
| tree | 065b692530f07e6db0d3372593bd1d83427bf238 | |
| parent | e7e6788a9596c781528980fca066f57d4afc3adb (diff) | |
* add new object ServiceTypeDatabase to avahi module for python
git-svn-id: file:///home/lennart/svn/public/avahi/trunk@456 941a03a8-eaeb-0310-b9a0-b1bbd8fe43fe
| -rw-r--r-- | avahi-utils/avahi/Makefile.am | 17 | ||||
| -rw-r--r-- | avahi-utils/avahi/ServiceTypeDatabase.py.in | 97 | 
2 files changed, 110 insertions, 4 deletions
| diff --git a/avahi-utils/avahi/Makefile.am b/avahi-utils/avahi/Makefile.am index 68c7147..c5a4be8 100644 --- a/avahi-utils/avahi/Makefile.am +++ b/avahi-utils/avahi/Makefile.am @@ -17,13 +17,22 @@  # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  # USA. +EXTRA_DIST = __init__.py SimpleGladeApp.py ServiceTypeDatabase.py.in +  if HAVE_PYTHON  avahidir = $(pythondir)/avahi -avahi_PYTHON = __init__.py SimpleGladeApp.py +avahi_PYTHON = __init__.py SimpleGladeApp.py ServiceTypeDatabase.py + +BUILT_SOURCES = ServiceTypeDatabase.py + +ServiceTypeDatabase.py: ServiceTypeDatabase.py.in +	sed -e 's,@PYTHON\@,$(PYTHON),g' \ +		-e 's,@pkgdatadir\@,$(pkgdatadir),g' $< > $@ +	chmod +x $@ + +CLEANFILES=*.pyc *.pyo ServiceTypeDatabase.py +  endif -EXTRA_DIST = __init__.py SimpleGladeApp.py -clean-local: -	rm -rf *.pyc *.pyo diff --git a/avahi-utils/avahi/ServiceTypeDatabase.py.in b/avahi-utils/avahi/ServiceTypeDatabase.py.in new file mode 100644 index 0000000..863c85d --- /dev/null +++ b/avahi-utils/avahi/ServiceTypeDatabase.py.in @@ -0,0 +1,97 @@ +#!@PYTHON@ +# -*-python-*- +# $Id$ + +# This file is part of avahi. +# +# avahi is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as +# published by the Free Software Foundation; either version 2 of the +# License, or (at your option) any later version. +# +# avahi is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +# License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with avahi; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +# USA. + +import anydbm +import locale + +locale.setlocale(locale.LC_ALL, '') + +class ServiceTypeDatabase: + +    def __init__(self, filename = "@pkgdatadir@/service-types.db"): + +        self.db = anydbm.open(filename, "r") + +        l = locale.getlocale(locale.LC_MESSAGES) + +        self.suffixes = () + +        if not l[0] is None: + +            if not l[1] is None: +                self.suffixes += (l[0] + "@" + l[1], ) + +            self.suffixes += (l[0], ) + +            i = l[0].find("_") + +            if i >= 0: + +                k = l[0][:i] +                 +                if not l[1] is None: +                    self.suffixes += (k + "@" + l[1], ) + +                self.suffixes += (k, ) +             +             +        self.suffixes = tuple(map(lambda x:  "["+x+"]", self.suffixes)) + ("", ) + +    def __getitem__(self, key): + +        for suffix in self.suffixes: +            try: +                return self.db[key + suffix] +            except KeyError: +                pass + +        raise KeyError() + +    def has_key(self, key): + +        for suffix in self.suffixes: + +            if self.db.has_key(key + suffix): +                return True +             +        return False + +    def __contains__(self, item): + +        for suffix in self.suffixes: + +            if item+suffix in self.db: +                return True + +        return False +         + +         +if __name__ == "__main__": +     +    b = ServiceTypeDatabase() + +    print b["_http._tcp"] +    print b["_ftp._tcp"] +    print b["_webdav._tcp"] +    print b["_webdavs._tcp"] + +    print b["gurki._tcp"] | 
