5 # This file is part of avahi.
7 # avahi is free software; you can redistribute it and/or modify it
8 # under the terms of the GNU Lesser General Public License as
9 # published by the Free Software Foundation; either version 2 of the
10 # License, or (at your option) any later version.
12 # avahi is distributed in the hope that it will be useful, but WITHOUT
13 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14 # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
15 # License for more details.
17 # You should have received a copy of the GNU Lesser General Public
18 # License along with avahi; if not, write to the Free Software
19 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
26 locale.setlocale(locale.LC_ALL, '')
28 class ServiceTypeDatabase:
30 def __init__(self, filename = "@pkgdatadir@/service-types.db"):
32 self.db = @DBM@.open(filename, "r")
34 l = locale.getlocale(locale.LC_MESSAGES)
41 self.suffixes += (l[0] + "@" + l[1], )
43 self.suffixes += (l[0], )
52 self.suffixes += (k + "@" + l[1], )
54 self.suffixes += (k, )
57 self.suffixes = tuple(map(lambda x: "["+x+"]", self.suffixes)) + ("", )
59 def __getitem__(self, key):
61 for suffix in self.suffixes:
63 return self.db[key + suffix]
74 if re.search('_[a-zA-Z0-9-]+\._[a-zA-Z0-9-]+', key) and not re.search('_[a-zA-Z0-9-]+\._[a-zA-Z0-9-]+\[.*\]', key):
75 localized_service_name = self[key]
76 items.append((key, localized_service_name))
80 def has_key(self, key):
82 for suffix in self.suffixes:
84 if self.db.has_key(key + suffix):
89 def __contains__(self, item):
91 for suffix in self.suffixes:
93 if item+suffix in self.db:
100 if __name__ == "__main__":
102 b = ServiceTypeDatabase()
105 print b["_http._tcp"]
107 print b["_webdav._tcp"]
108 print b["_webdavs._tcp"]
110 print b["gurki._tcp"]