# push @newlines, "<!DOCTYPE config SYSTEM \"".$confpath."inspircd.dtd\">";
push @newlines, "<config>";
- foreach $i (@lines) {
+ foreach $i (@lines)
+ {
# remove trailing newlines
chomp($i);
- # clean up
- $i =~ s/[^=]+=\s(.*)/\1/;
-
# convert tabs to spaces
$i =~ s/\t/ /g;
# remove trailing #s
$i =~ s/(.*)#$/\1/;
+ # remove trailing comments
+ my $line = "";
+ my $quote = 0;
+ for (my $j = 0; $j < length($i); $j++)
+ {
+ if (substr($i,$j, 1) eq '"') { $quote = ($quote) ? 0 : 1; } elsif (substr($i,$j, 1) eq "#" && !$quote) { last; }
+ $line .= substr($i,$j, 1);
+ }
+ $i = $line;
+
# remove trailing spaces
$i =~ s/ *$//;
+ # setup incf for include check and clean it up, since this breaks parsing use local var
+ my $incf = $i;
+ $incf =~ s/[^=]+=\s(.*)/\1/;
+
# include file?
- if (($i =~ s/\<include file=\"(.+?)\"\>//i) && ($i !~ /^#/))
+ if (($incf =~ s/\<include file=\"(.+?)\"\>//i) && ($incf !~ /^#/))
{
# yes, process it
validateconf($1);