home *** CD-ROM | disk | FTP | other *** search
- #!/usr/bin/perl -w
- # This file was preprocessed, do not edit!
-
-
- package Debconf::Format::822;
- use strict;
- use base 'Debconf::Format';
-
-
- sub beginfile {}
- sub endfile {}
-
- sub read {
- my $this=shift;
- my $fh=shift;
-
- local $/="\n";
-
- my $name;
- my %ret=(
- owners => {},
- fields => {},
- variables => {},
- flags => {},
- );
-
- my $invars=0;
- my $line;
- while ($line = <$fh>) {
- chomp $line;
- last if $line eq ''; # blank line is our record delimiter
-
- if ($invars) {
- if ($line =~ /^\s/) {
- $line =~ s/^\s+//;
- my ($var, $value)=split(/\s*=\s?/, $line, 2);
- $value=~s/\\n/\n/g;
- $ret{variables}->{$var}=$value;
- next;
- }
- else {
- $invars=0;
- }
- }
-
- my ($key, $value)=split(/:\s?/, $line, 2);
- $key=lc($key);
- if ($key eq 'owners') {
- foreach my $owner (split(/,\s+/, $value)) {
- $ret{owners}->{$owner}=1;
- }
- }
- elsif ($key eq 'flags') {
- foreach my $flag (split(/,\s+/, $value)) {
- $ret{flags}->{$flag}='true';
- }
- }
- elsif ($key eq 'variables') {
- $invars=1;
- }
- elsif ($key eq 'name') {
- $name=$value;
- }
- elsif (length $key) {
- $value=~s/\\n/\n/g;
- $ret{fields}->{$key}=$value;
- }
- }
-
- return unless defined $name;
- return $name, \%ret;
- }
-
- sub write {
- my $this=shift;
- my $fh=shift;
- my %data=%{shift()};
- my $name=shift;
-
- print $fh "Name: $name\n" or return undef;
- foreach my $field (sort keys %{$data{fields}}) {
- my $val=$data{fields}->{$field};
- $val=~s/\n/\\n/g;
- print $fh ucfirst($field).": $val\n" or return undef;
- }
- if (keys %{$data{owners}}) {
- print $fh "Owners: ".join(", ", sort keys(%{$data{owners}}))."\n"
- or return undef;
- }
- if (grep { $data{flags}->{$_} eq 'true' } keys %{$data{flags}}) {
- print $fh "Flags: ".join(", ",
- grep { $data{flags}->{$_} eq 'true' }
- sort keys(%{$data{flags}}))."\n"
- or return undef;
- }
- if (keys %{$data{variables}}) {
- print $fh "Variables:\n" or return undef;
- foreach my $var (sort keys %{$data{variables}}) {
- my $val=$data{variables}->{$var};
- $val=~s/\n/\\n/g;
- print $fh " $var = $val\n" or return undef;
- }
- }
- print $fh "\n" or return undef; # end of record delimiter
- return 1;
- }
-
-
- 1
-