OpenPKG CVS Repository http://cvs.openpkg.org/ ____________________________________________________________________________
Server: cvs.openpkg.org Name: Michael van Elst Root: /e/openpkg/cvs Email: [EMAIL PROTECTED] Module: openpkg-re Date: 13-Nov-2002 16:32:29 Branch: HEAD Handle: 2002111315322900 Modified files: openpkg-re openpkg-index Log: support %else Summary: Revision Changes Path 1.7 +20 -5 openpkg-re/openpkg-index ____________________________________________________________________________ Index: openpkg-re/openpkg-index ============================================================ $ cvs diff -u -r1.6 -r1.7 openpkg-index --- openpkg-re/openpkg-index 13 Nov 2002 09:24:29 -0000 1.6 +++ openpkg-re/openpkg-index 13 Nov 2002 15:32:29 -0000 1.7 @@ -186,14 +186,26 @@ # if ($term ne '') { push @term, "( $term )"; - $cond = join(' && ', @term).''; + $cond = join(' && ', grep { $_ ne '' } @term).''; + } else { + push @term, ''; + } + } elsif ($v =~ /^\#else\s*$/) { + # + # reverse last condition + # + if (@term) { + $term[-1] = ' ! '.$term[-1]; + $cond = join(' && ', grep { $_ ne '' } @term).''; + } else { + die "FATAL: else without if\n"; } } elsif ($v =~ /^\#endif\s*$/) { # # unwind last #if expression # pop @term; - $cond = join(' + ', @term).''; + $cond = join(' && ', grep { $_ ne '' } @term).''; } elsif ($v =~ /^\#(?:define)\s*(\S+)\s*(.*?)\s*$/) { @@ -246,7 +258,7 @@ $s =~ s/^\s*#.*?\n//mg; # map commands - $s =~ s/^%(ifdef|ifndef|if|define|endif|\{)/#$1/mg; + $s =~ s/^%(ifdef|ifndef|if|define|else|endif|\{)/#$1/mg; # split sections foreach (split(/^(?=%\w+\s*\n)/m, $s)) { @@ -456,8 +468,11 @@ $specpath = "$prefix/$d/$d.spec"; if (-f $specpath) { $s = `cat $specpath`; - $a = spec2data($s) - and xml_record(\*STDOUT, $a); + if ($a = spec2data($s)) { + xml_record(\*STDOUT, $a); + } else { + die "ERROR: cannot parse $specpath\n"; + } } } xml_foot(\*STDOUT); ______________________________________________________________________ The OpenPKG Project www.openpkg.org CVS Repository Commit List [EMAIL PROTECTED]