diff options
author | Peter Palfrader <peter@palfrader.org> | 2004-11-15 09:20:11 +0000 |
---|---|---|
committer | Peter Palfrader <peter@palfrader.org> | 2004-11-15 09:20:11 +0000 |
commit | 5e95090defff64bc8cd7a318a73aa930948fb66d (patch) | |
tree | d977ded4207e51914d539b0ecd20b8583d37c8ea /bin/allpingers-ini2xml | |
parent | 6c3e0ba0a82307abf825bf1cde85638464ab1713 (diff) |
Initial import
Diffstat (limited to 'bin/allpingers-ini2xml')
-rwxr-xr-x | bin/allpingers-ini2xml | 159 |
1 files changed, 159 insertions, 0 deletions
diff --git a/bin/allpingers-ini2xml b/bin/allpingers-ini2xml new file mode 100755 index 0000000..9add8ae --- /dev/null +++ b/bin/allpingers-ini2xml @@ -0,0 +1,159 @@ +#!/usr/bin/perl -wT + +# ini2xml: (c) 2002 Peter Palfrader <peter@palfrader.org> +# $Id$ +# +# This program is free software. you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program 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 General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +=pod + +=head1 NAME + +ini2xml convert pingers ini file to xml + +=over + +=head1 SYNOPSIS + +=item B<update> + +=back + +=head1 DESCRIPTION + +FIXME + +=back + +=head1 BUGS + +Please report them to the author. + +=head1 AUTHOR + +Peter Palfrader, E<lt>peter@palfrader.orgE<gt> + +=cut + +use strict; +use Getopt::Long; +use English; +use FindBin qw{ $Bin }; + +($Bin) = $Bin =~ m/^(.*)$/; +chdir($Bin); + +$ENV{'PATH'} = '/bin:/usr/bin'; +delete @ENV{'IFS', 'CDPATH', 'ENV', 'BASH_ENV'}; + +my %pingers; +{ + my $source; + while(<>) { + s/\s*(.*)\s*/$1/; + next if (/^\s*#/); + $source = $1, next if (/^\[(.*)\]$/); + if (/(.+?)\s*=\s*(.+)/) { + $pingers{$source}->{$1} = $2 if defined $source; + }; + }; +}; + +print qq{<?xml version="1.0"?>\n}; +printf qq{<!-- A L L P I N G E R S' I N D E X --> +<!-- --> +<!-- Generated: %-54s --> +<!-- --> +<!-- This list can be found on the web on http://www.noreply.org/ --> +<!-- --> +<!-- If anything is wrong/broken/missing please mail the maintainer at --> +<!-- pingers\@palfrader.org --> +}, scalar gmtime(); +print qq{ +<!DOCTYPE pingers [ +<!ELEMENT pingers (pinger*)> +<!ATTLIST pingers + version CDATA #FIXED "1" + generated CDATA #REQUIRED + > +<!ELEMENT pinger ( + baseurl?, + rlist*, + mlist*, + rchain*, + pgpring*, + mixring?, + type2list? + )> +<!ATTLIST pinger + name CDATA #REQUIRED + > +<!ELEMENT baseurl (#PCDATA)> +<!ELEMENT rlist (#PCDATA)> +<!ATTLIST rlist + version (1|2) "1" + format (txt|html) "txt" + > +<!ELEMENT mlist (#PCDATA)> +<!ATTLIST mlist + version (1|2) "1" + format (txt|html) "txt" + > +<!ELEMENT rchain (#PCDATA)> +<!ATTLIST rchain + format (txt|html) "txt" + > +<!ELEMENT pgpring (#PCDATA)> +<!ATTLIST pgpring + format (asc|pgp) "asc" + keys (rsa|dsa|all) "all + "> +<!ELEMENT mixring (#PCDATA)> +<!ELEMENT type2list (#PCDATA)> +]> +}; + +my $now = `822-date`; +chomp $now; +printf qq{<pingers version="1" generated="%s">\n}, $now; +for my $pinger (sort keys %pingers) { + my $p = $pingers{$pinger}; + printf qq{\t<pinger name="%s">\n}, $pinger; + printf (qq{\t\t<baseurl>%s</baseurl>\n}, $p->{'base'}) and delete $p->{'base'} if defined ($p->{'base'}); + + printf (qq{\t\t<rlist version="1" format="txt">%s</rlist>\n}, $p->{'rlist'})and delete $p->{'rlist'} if defined ($p->{'rlist'}); + printf (qq{\t\t<rlist version="2" format="txt">%s</rlist>\n}, $p->{'rlist2'})and delete $p->{'rlist2'} if defined ($p->{'rlist2'}); + printf (qq{\t\t<rlist version="1" format="html">%s</rlist>\n}, $p->{'rlist_html'})and delete $p->{'rlist_html'} if defined ($p->{'rlist_html'}); + printf (qq{\t\t<rlist version="2" format="html">%s</rlist>\n}, $p->{'rlist2_html'})and delete $p->{'rlist2_html'} if defined ($p->{'rlist2_html'}); + + printf (qq{\t\t<mlist version="1" format="txt">%s</mlist>\n}, $p->{'mlist'})and delete $p->{'mlist'} if defined ($p->{'mlist'}); + printf (qq{\t\t<mlist version="2" format="txt">%s</mlist>\n}, $p->{'mlist2'})and delete $p->{'mlist2'} if defined ($p->{'mlist2'}); + printf (qq{\t\t<mlist version="1" format="html">%s</mlist>\n}, $p->{'mlist_html'})and delete $p->{'mlist_html'} if defined ($p->{'mlist_html'}); + printf (qq{\t\t<mlist version="2" format="html">%s</mlist>\n}, $p->{'mlist2_html'})and delete $p->{'mlist2_html'} if defined ($p->{'mlist2_html'}); + + printf (qq{\t\t<rchain format="txt">%s</rchain>\n}, $p->{'rchain'})and delete $p->{'rchain'} if defined ($p->{'rchain'}); + printf (qq{\t\t<rchain format="html">%s</rchain>\n}, $p->{'rchain_html'})and delete $p->{'rchain_html'} if defined ($p->{'rchain_html'}); + + printf (qq{\t\t<pgpring format="asc" keys="all">%s</pgpring>\n}, $p->{'pgpring'})and delete $p->{'pgpring'} if defined ($p->{'pgpring'}); + printf (qq{\t\t<pgpring format="asc" keys="rsa">%s</pgpring>\n}, $p->{'pgpring_rsa'})and delete $p->{'pgpring_rsa'} if defined ($p->{'pgpring_rsa'}); + + printf (qq{\t\t<mixring>%s</mixring>\n}, $p->{'mixring'})and delete $p->{'mixring'} if defined ($p->{'mixring'}); + printf (qq{\t\t<type2list>%s</type2list>\n}, $p->{'type2list'})and delete $p->{'type2list'} if defined ($p->{'type2list'}); + for my $k (sort keys %$p) { + warn("Unused key $k in $p\n"); + }; + printf qq{\t</pinger>\n}; +} +print qq{</pingers>\n}; |