From: nbd Date: Fri, 8 Apr 2011 18:55:16 +0000 (+0000) Subject: scripts/kconfig.pl: backport changes from trunk X-Git-Url: http://git.ozo.com/?p=openwrt-10.03%2F.git;a=commitdiff_plain;h=6f99ef9c5283aee5befde99d3cfb10de98978d6b scripts/kconfig.pl: backport changes from trunk git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@26535 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- diff --git a/scripts/kconfig.pl b/scripts/kconfig.pl index 7073e3b1a..811327353 100755 --- a/scripts/kconfig.pl +++ b/scripts/kconfig.pl @@ -80,13 +80,15 @@ sub config_add($$$) { return \%config; } -sub config_diff($$) { +sub config_diff($$$) { my $cfg1 = shift; my $cfg2 = shift; + my $new_only = shift; my %config; foreach my $config (keys %$cfg2) { if (!defined($cfg1->{$config}) or $cfg1->{$config} ne $cfg2->{$config}) { + next if $new_only and !defined($cfg1->{$config}) and $cfg2->{$config} eq '#undef'; $config{$config} = $cfg2->{$config}; } } @@ -146,7 +148,11 @@ sub parse_expr { } elsif ($arg eq '>') { my $arg1 = parse_expr($pos); my $arg2 = parse_expr($pos); - return config_diff($arg1, $arg2); + return config_diff($arg1, $arg2, 0); + } elsif ($arg eq '>+') { + my $arg1 = parse_expr($pos); + my $arg2 = parse_expr($pos); + return config_diff($arg1, $arg2, 1); } elsif ($arg eq '-') { my $arg1 = parse_expr($pos); my $arg2 = parse_expr($pos);