#!@PYTHON@
# -*-python-*-
# 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 @DBM@, sys

if len(sys.argv) > 1:
    infn = sys.argv[1]
else:
    infn = "service-types"

if len(sys.argv) > 2:
    outfn = sys.argv[2]
else:
    outfn = infn + ".db"

db = @DBM@.open(outfn, "n")

for ln in file(infn, "r"):
    ln = ln.strip(" \r\n\t")
    
    if ln == "" or ln.startswith("#"):
        continue

    t, n = ln.split(":", 1)

    db[t.strip()] = n.strip()

db.close()
