$VERSION = 1.00;
@ISA = qw(Exporter);
- @EXPORT = qw( %Globals );
+ @EXPORT = qw(%Globals %Strong %Severity );
%EXPORT_TAGS = ( ); # eg: TAG => [ qw!name1 name2! ],
# your exported package globals go here,
# as well as any optionally exported functions
- @EXPORT_OK = qw(%Globals %Severity &ParseConfigFile);
+ @EXPORT_OK = qw(%Globals %Severity %Strong &ParseConfigFile &ParseXMLConfigFile);
}
use vars @EXPORT_OK;
# initialize package globals, first exported ones
%Severity = ();
+%Strong = ();
+$Severity{ 'Text' } = ();
%Globals = ( "debug" => 0,
"verbose" => 0,
"quiet" => 0,
"spool-dir" => "/var/lib/debbugs/spool/incoming",
"www-dir" => "/var/lib/debbugs/www",
"doc-dir" => "/var/lib/debbugs/www/txt",
- "maintainer-file" => "/etc/debbugs/Maintainers" );
+ ##### files
+ "maintainer-file" => "/etc/debbugs/Maintainers",
+ "pseudo-description" => "/etc/debbugs/pseudo-packages.description");
+my %ConfigMap = (
+ "Email Domain" => "email-domain",
+ "List Domain" => "list-domain",
+ "Web Domain" => "web-domain",
+ "CGI Domain" => "cgi-domain",
+ "Short Name" => "project-short",
+ "Long Name" => "project-long",
+ "Owner Name" => "owner-name",
+ "Owner Email" => "owner-email",
+ "Owner Webpage" => "owner-webpage",
+ "Spool Dir" => "spool-dir",
+ "Work Dir" => "work-dir",
+ "Web Dir" => "www-dir",
+ "Doc Dir" => "doc-dir",
+ "Maintainer File" => "maintainer-file",
+ "Pseudo Description File" => "pseudo-description",
+ "Submit List" => "submit-list",
+ "Maint List" => "maint-list",
+ "Quiet List" => "quiet-list",
+ "Forwarded List" => "forwarded-list",
+ "Done List" => "done-list",
+ "Request List" => "request-list",
+ "Submitter List" => "submitter-list",
+ "Control List" => "control-list",
+ "Summary List" => "summary-list",
+ "Mirror List" => "mirror-list",
+ "Mailer" => "mailer",
+ "Singular Term" => "singluar",
+ "Plural Term" => "plural",
+ "Expire Age" => "expire-age",
+ "Save Expired Bugs" => "save-expired",
+ "Mirrors" => "mirrors",
+ "Default Severity" => "default-severity",
+ "Normal Severity" => "normal-severity",
+ );
sub strip
{ my $string = $_[0];
chop $string while $string =~ /\s$/;
next unless length $_;
next if /^#/;
- if ( /^Email Domain\s*[:=]\s*([^#]*)/i )
- { $Globals{ 'email-domain' } = strip( $1 );
- $GTags{ 'EMAIL_DOMAIN' } = $Globals{ 'email-domain' };
- print "\tEmail Domain = $Globals{ 'email-domain' }\n" if $Globals{ 'debug' };
- }
- elsif ( /^List Domain\s*[:=]\s*([^#]*)/i )
- { $Globals{ 'list-domain' } = strip( $1 );
- $GTags{ 'LIST_DOMAIN' } = $Globals{ 'list-domain' };
- print "\tList Domain = $Globals{ 'list-domain' }\n" if $Globals{ 'debug' };
- }
- elsif ( /^Web Domain\s*[:=]\s*([^#]*)/i )
- { $Globals{ 'web-domain' } = strip( $1 );
- $GTags{ 'WEB_DOMAIN' } = $Globals{ 'web-domain' };
- print "\tWeb Domain = $Globals{ 'web-domain' }\n" if $Globals{ 'debug' };
- }
- elsif ( /^CGI Domain\s*[:=]\s*([^#]*)/i )
- { $Globals{ 'cgi-domain' } = strip( $1 );
- $GTags{ 'CGI_DOMAIN' } = $Globals{ 'cgi-domain' };
- print "\tCGI Domain = $Globals{ 'cgi-domain' }\n" if $Globals{ 'debug' };
- }
- elsif ( /^Short Name\s*[:=]\s*([^#]*)/i )
- { $Globals{ 'project-short' } = strip( $1 );
- $GTags{ 'SHORT_NAME' } = $Globals{ 'project-short' };
- print "\tShort Name = $Globals{ 'project-short' }\n" if $Globals{ 'debug' };
- }
- elsif ( /^Long Name\s*[:=]\s*([^#]*)/i )
- { $Globals{ 'project-long' } = strip( $1 );
- $GTags{ 'LONG_NAME' } = $Globals{ 'project-long' };
- print "\tLong Name = $Globals{ 'project-long' }\n" if $Globals{ 'debug' };
- }
- elsif ( /^Owner Name\s*[:=]\s*([^#]*)/i )
- { $Globals{ 'owner-name' } = strip( $1 );
- $GTags{ 'OWNER_NAME' } = $Globals{ 'owner-name' };
- print "\tOwner Name = $Globals{ 'owner-name' }\n" if $Globals{ 'debug' };
- }
- elsif ( /^Owner Email\s*[:=]\s*([^#]*)/i )
- { $Globals{ 'owner-email' } = strip( $1 );
- $GTags{ 'OWNER_EMAIL' } = $Globals{ 'owner-email' };
- print "\tOWNER Email = $Globals{ 'owner-email' }\n" if $Globals{ 'debug' };
- }
- elsif ( /^Spool Dir\s*[:=]\s*([^#]*)/i )
- { $Globals{ 'spool-dir' } = strip( $1 );
- print "\tSpool Dir = $Globals{ 'spool-dir' }\n" if $Globals{ 'debug' };
- }
- elsif ( /^Work Dir\s*[:=]\s*([^#]*)/i )
- { $Globals{ 'work-dir' } = strip( $1 );
- print "\tWork Dir = $Globals{ 'work-dir' }\n" if $Globals{ 'debug' };
- }
- elsif ( /^Web Dir\s*[:=]\s*([^#]*)/i )
- { $Globals{ 'www-dir' } = strip( $1 );
- print "\tWeb Dir = $Globals{ 'www-dir' }\n" if $Globals{ 'debug' };
- }
- elsif ( /^Doc Dir\s*[:=]\s*([^#]*)/i )
- { $Globals{ 'doc-dir' } = strip( $1 );
- print "\tDoc Dir = $Globals{ 'doc-dir' }\n" if $Globals{ 'debug' };
- }
- elsif ( /^Maintainer File\s*[:=]\s*([^#]*)/i )
- { $Globals{ 'maintainer-file' } = strip( $1 );
- print "\tMaintainer File = $Globals{ 'maintainer-file' }\n" if $Globals{ 'debug' };
- }
- elsif ( /^Submit List\s*[:=]\s*([^#]*)/i )
- { $Globals{ 'submit-list' } = strip( $1 );
- $GTags{ 'SUBMIT_LIST' } = $Globals{ 'submit-list' };
- print "\tSubmit List = $Globals{ 'submit-list' }\n" if $Globals{ 'debug' };
- }
- elsif ( /^Maint List\s*[:=]\s*([^#]*)/i )
- { $Globals{ 'maint-list' } = strip( $1 );
- $GTags{ 'MAINT_LIST' } = $Globals{ 'maint-list' };
- print "\tMaint List = $Globals{ 'maint-list' }\n" if $Globals{ 'debug' };
- }
- elsif ( /^Quiet List\s*[:=]\s*([^#]*)/i )
- { $Globals{ 'quiet-list' } = strip( $1 );
- $GTags{ 'QUIET_LIST' } = $Globals{ 'quiet-list' };
- print "\tQuiet List = $Globals{ 'quiet-list' }\n" if $Globals{ 'debug' };
- }
- elsif ( /^Forwarded List\s*[:=]\s*([^#]*)/i )
- { $Globals{ 'forwarded-list' } = strip( $1 );
- $GTags{ 'FORWARDED_LIST' } = $Globals{ 'forwarded-list' };
- print "\tForwarded List = $Globals{ 'forwarded-list' }\n" if $Globals{ 'debug' };
- }
- elsif ( /^Done List\s*[:=]\s*([^#]*)/i )
- { $Globals{ 'done-list' } = strip( $1 );
- $GTags{ 'DONE_LIST' } = $Globals{ 'done-list' };
- print "\tDone List = $Globals{ 'done-list' }\n" if $Globals{ 'debug' };
- }
- elsif ( /^Request List\s*[:=]\s*([^#]*)/i )
- { $Globals{ 'request-list' } = strip( $1 );
- $GTags{ 'REQUEST_LIST' } = $Globals{ 'request-list' };
- print "\tRequest List = $Globals{ 'request-list' }\n" if $Globals{ 'debug' };
- }
- elsif ( /^Submitter List\s*[:=]\s*([^#]*)/i )
- { $Globals{ 'submitter-list' } = strip( $1 );
- $GTags{ 'SUBMITTER_LIST' } = $Globals{ 'submitter-list' };
- print "\tSubmitter List = $Globals{ 'submitter-list' }\n" if $Globals{ 'debug' };
- }
- elsif ( /^Control List\s*[:=]\s*([^#]*)/i )
- { $Globals{ 'control-list' } = strip( $1 );
- $GTags{ 'CONTROL_LIST' } = $Globals{ 'control-list' };
- print "\tControl List = $Globals{ 'control-list' }\n" if $Globals{ 'debug' };
- }
- elsif ( /^Summary List\s*[:=]\s*([^#]*)/i )
- { $Globals{ 'summary-list' } = strip( $1 );
- $GTags{ 'SUMMARY_LIST' } = $Globals{ 'summary-list' };
- print "\tSUMMARY_LIST = $Globals{ 'summary-list' }\n" if $Globals{ 'debug' };
- }
- elsif ( /^Mirror List\s*[:=]\s*([^#]*)/i )
- { $Globals{ 'mirror-list' } = strip( $1 );
- $GTags{ 'MIRROR_LIST' } = $Globals{ 'mirror-list' };
- print "\tMirror List = $Globals{ 'mirror-list' }\n" if $Globals{ 'debug' };
- }
- elsif ( /^Mailer\s*[:=]\s*([^#]*)/i )
- { $Globals{ 'mailer' } = strip( $1 );
- print "\tMailer = $Globals{ 'mailer' }\n" if $Globals{ 'debug' };
- }
- elsif ( /^Singular Term\s*[:=]\s*([^#]*)/i )
- { $Globals{ 'singular' } = strip( $1 );
- print "\tSingular Term = $Globals{ 'singular' }\n" if $Globals{ 'debug' };
- }
- elsif ( /^Plural Term\s*[:=]\s*([^#]*)/i )
- { $Globals{ 'plural' } = strip( $1 );
- print "\tPlural Term = $Globals{ 'plural-term' }\n" if $Globals{ 'debug' };
- }
- elsif ( /^Expire Age\s*[:=]\s*([^#]*)/i )
- { $Globals{ 'expire-age' } = strip( $1 );
- print "\tExpire Age = $Globals{ 'expire-age' }\n" if $Globals{ 'debug' };
- }
- elsif ( /^Save Expired Bugs\s*[:=]\s*([^#]*)/i )
- { $Globals{ 'save-expired' } = strip( $1 );
- print "\tSave Expire = $Globals{ 'save-expire' }\n" if $Globals{ 'debug' };
- }
- elsif ( /^Mirrors\s*[:=]\s*([^#]*)/i )
- { $Globals{ 'mirrors' } = strip( $1 );
- $GTags{ 'MIRRORS' } = $Globals{ 'mirrors' };
- print "\tMirrors = $Globals{ 'mirrors' }\n" if $Globals{ 'debug' };
- }
- elsif ( /^Default Severity\s*[:=]\s*([^#]*)/i )
- { $Globals{ 'default-severity' } = strip( $1 );
- print "\tDefault Severity = $Globals{ 'default-severity' }\n" if $Globals{ 'debug' };
- }
- elsif ( /^Normal Severity\s*[:=]\s*([^#]*)/i )
- { $Globals{ 'normal-severity' } = strip( $1 );
- print "\tNormal Severity = $Globals{ 'normal-severity' }\n" if $Globals{ 'debug' };
- }
- elsif ( /^Severity\s+#*(\d+)\s*[:=]\s*([^#]*)/i )
- { $Severity{ $1 } = $2;
- print "D2: (config) Severity $1=$Severity{$1}\n" if $Globals{ 'debug' } > 1;
- }
+ if ( /^([^:=]*)\s*[:=]\s*([^#]*)/i ) {
+ my $key = strip( $1 );
+ my $value = strip( $2 );
+ $value = "" if(!defined($value));
+ if ( $key =~ /Severity\s+#*(\d+)\s*(.*)/ ) {
+ my $options = $2;
+ my $severity = $1;
+ if( $options =~ /\btext\b/ ) {
+ $Severity{ 'Text' }{ $severity } = $value;
+ print "D2: (config) Severity $severity text = $value\n" if $Globals{ 'debug' } > 1;
+ } else {
+ $Severity{ $1 } = $value;
+ print "D2: (config) Severity $severity = $value" if $Globals{ 'debug' } > 1;
+ if( $options =~ /\bdefault\b/ ) {
+ $Globals{ "default-severity" } = $severity;
+ print ", default" if $Globals{ 'debug' } > 1;
+ }
+ if( $options =~ /\bstrong\b/ ) {
+ $Strong{ $severity } = 1;
+ print ", strong" if $Globals{ 'debug' } > 1;
+ }
+ print "\n" if $Globals{ 'debug' } > 1;
+ }
+ next;
+ } else {
+ my $map = $ConfigMap{$key};
+ if(defined($map)) {
+ $Globals{ $map } = $value;
+ print "$key = '$value'\n" if $Globals{ 'debug' } > 1;
+ next;
+ } else {
+ print "$key\n";
+ }
+ }
+ }
+ print "Unknown line in config!($_)\n";
+ next;
}
return @config;
}