home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / share / perl5 / Debconf / Format / 822.pm
Encoding:
Perl POD Document  |  2006-07-24  |  2.1 KB  |  110 lines

  1. #!/usr/bin/perl -w
  2. # This file was preprocessed, do not edit!
  3.  
  4.  
  5. package Debconf::Format::822;
  6. use strict;
  7. use base 'Debconf::Format';
  8.  
  9.  
  10. sub beginfile {}
  11. sub endfile {}
  12.  
  13. sub read {
  14.     my $this=shift;
  15.     my $fh=shift;
  16.     
  17.     local $/="\n";
  18.     
  19.     my $name;
  20.     my %ret=(
  21.         owners => {},
  22.         fields => {},
  23.         variables => {},
  24.         flags => {},
  25.     );
  26.  
  27.     my $invars=0;
  28.     my $line;
  29.     while ($line = <$fh>) {
  30.         chomp $line;
  31.         last if $line eq ''; # blank line is our record delimiter
  32.  
  33.         if ($invars) {
  34.             if ($line =~ /^\s/) {
  35.                 $line =~ s/^\s+//;
  36.                 my ($var, $value)=split(/\s*=\s?/, $line, 2);
  37.                 $value=~s/\\n/\n/g;
  38.                 $ret{variables}->{$var}=$value;
  39.                 next;
  40.             }
  41.             else {
  42.                 $invars=0;
  43.             }
  44.         }
  45.  
  46.         my ($key, $value)=split(/:\s?/, $line, 2);
  47.         $key=lc($key);
  48.         if ($key eq 'owners') {
  49.             foreach my $owner (split(/,\s+/, $value)) {
  50.                 $ret{owners}->{$owner}=1;
  51.             }
  52.         }
  53.         elsif ($key eq 'flags') {
  54.             foreach my $flag (split(/,\s+/, $value)) {
  55.                 $ret{flags}->{$flag}='true';
  56.             }
  57.         }
  58.         elsif ($key eq 'variables') {
  59.             $invars=1;    
  60.         }
  61.         elsif ($key eq 'name') {
  62.             $name=$value;
  63.         }
  64.         elsif (length $key) {
  65.             $value=~s/\\n/\n/g;
  66.             $ret{fields}->{$key}=$value;
  67.         }
  68.     }
  69.  
  70.     return unless defined $name;
  71.     return $name, \%ret;
  72. }
  73.  
  74. sub write {
  75.     my $this=shift;
  76.     my $fh=shift;
  77.     my %data=%{shift()};
  78.     my $name=shift;
  79.  
  80.     print $fh "Name: $name\n" or return undef;
  81.     foreach my $field (sort keys %{$data{fields}}) {
  82.         my $val=$data{fields}->{$field};
  83.         $val=~s/\n/\\n/g;
  84.         print $fh ucfirst($field).": $val\n" or return undef;
  85.     }
  86.     if (keys %{$data{owners}}) {
  87.         print $fh "Owners: ".join(", ", sort keys(%{$data{owners}}))."\n"
  88.             or return undef;
  89.     }
  90.     if (grep { $data{flags}->{$_} eq 'true' } keys %{$data{flags}}) {
  91.         print $fh "Flags: ".join(", ",
  92.             grep { $data{flags}->{$_} eq 'true' }
  93.                 sort keys(%{$data{flags}}))."\n"
  94.             or return undef;
  95.     }
  96.     if (keys %{$data{variables}}) {
  97.         print $fh "Variables:\n" or return undef;
  98.         foreach my $var (sort keys %{$data{variables}}) {
  99.             my $val=$data{variables}->{$var};
  100.             $val=~s/\n/\\n/g;
  101.             print $fh " $var = $val\n" or return undef;
  102.         }
  103.     }
  104.     print $fh "\n" or return undef; # end of record delimiter
  105.     return 1;
  106. }
  107.  
  108.  
  109. 1
  110.