|
Andreas Gruenbacher |
df04b9 |
#! /usr/bin/perl -w
|
|
Andreas Gruenbacher |
df04b9 |
|
|
Michal Marek |
0a417c |
#############################################################################
|
|
Michal Marek |
0a417c |
# Copyright (c) 2007 Novell, Inc.
|
|
Michal Marek |
0a417c |
# All Rights Reserved.
|
|
Michal Marek |
0a417c |
#
|
|
Michal Marek |
0a417c |
# This program is free software; you can redistribute it and/or
|
|
Michal Marek |
0a417c |
# modify it under the terms of version 2 of the GNU General Public License as
|
|
Michal Marek |
0a417c |
# published by the Free Software Foundation.
|
|
Michal Marek |
0a417c |
#
|
|
Michal Marek |
0a417c |
# This program is distributed in the hope that it will be useful,
|
|
Michal Marek |
0a417c |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Michal Marek |
0a417c |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
Michal Marek |
0a417c |
# GNU General Public License for more details.
|
|
Michal Marek |
0a417c |
#
|
|
Michal Marek |
0a417c |
# You should have received a copy of the GNU General Public License
|
|
Michal Marek |
0a417c |
# along with this program; if not, contact Novell, Inc.
|
|
Michal Marek |
0a417c |
#
|
|
Michal Marek |
0a417c |
# To contact Novell about this file by physical or electronic mail,
|
|
Michal Marek |
0a417c |
# you may find current contact information at www.novell.com
|
|
Michal Marek |
0a417c |
#############################################################################
|
|
Michal Marek |
0a417c |
|
|
Andreas Gruenbacher |
df04b9 |
if (@ARGV < 2) {
|
|
Andreas Gruenbacher |
df04b9 |
print STDERR "Usage: $0 <config1> <config2> [<config3>]\n";
|
|
Andreas Gruenbacher |
df04b9 |
print STDERR "Diff kernel config files config1 and config2, or " .
|
|
Andreas Gruenbacher |
df04b9 |
"apply those differences to config3\n";
|
|
Andreas Gruenbacher |
df04b9 |
exit 1;
|
|
Andreas Gruenbacher |
df04b9 |
}
|
|
Andreas Gruenbacher |
df04b9 |
|
|
Andreas Gruenbacher |
df04b9 |
open CONFIG1, $ARGV[0]
|
|
Andreas Gruenbacher |
df04b9 |
or die $ARGV[0] . ": $!\n";
|
|
Andreas Gruenbacher |
df04b9 |
while (<CONFIG1>) {
|
|
Michal Marek |
235504 |
next unless /^(CONFIG_\w+)/a || /^# (CONFIG_\w+) is not set/a;
|
|
Andreas Gruenbacher |
df04b9 |
$config1{$1} = $_;
|
|
Andreas Gruenbacher |
df04b9 |
}
|
|
Andreas Gruenbacher |
df04b9 |
|
|
Andreas Gruenbacher |
df04b9 |
open CONFIG2, $ARGV[1]
|
|
Andreas Gruenbacher |
df04b9 |
or die $ARGV[1] . ": $!\n";
|
|
Andreas Gruenbacher |
df04b9 |
while (<CONFIG2>) {
|
|
Michal Marek |
235504 |
next unless /^(CONFIG_\w+)/a || /^# (CONFIG_\w+) is not set/a;
|
|
Andreas Gruenbacher |
df04b9 |
$config2{$1} = $_;
|
|
Andreas Gruenbacher |
df04b9 |
}
|
|
Andreas Gruenbacher |
df04b9 |
|
|
Andreas Gruenbacher |
df04b9 |
while (($key, $value) = each %config2) {
|
|
Andreas Gruenbacher |
df04b9 |
if (!exists $config1{$key} || $config1{$key} ne $value) {
|
|
Andreas Gruenbacher |
df04b9 |
$diff{$key} = $value;
|
|
Andreas Gruenbacher |
df04b9 |
}
|
|
Andreas Gruenbacher |
df04b9 |
}
|
|
Andreas Gruenbacher |
df04b9 |
|
|
Andreas Gruenbacher |
df04b9 |
if (@ARGV >= 3) {
|
|
Andreas Gruenbacher |
df04b9 |
open OLD, $ARGV[2]
|
|
Andreas Gruenbacher |
df04b9 |
or die $ARGV[2] . ": $!\n";
|
|
Andreas Gruenbacher |
df04b9 |
while (<OLD>) {
|
|
Michal Marek |
235504 |
if (/^(CONFIG_\w+)/a || /^# (CONFIG_\w+) is not set/a) {
|
|
Andreas Gruenbacher |
df04b9 |
if (exists $diff{$1}) {
|
|
Andreas Gruenbacher |
df04b9 |
print $diff{$1};
|
|
Andreas Gruenbacher |
df04b9 |
$diff_used{$1} = 1;
|
|
Andreas Gruenbacher |
df04b9 |
next;
|
|
Andreas Gruenbacher |
df04b9 |
}
|
|
Andreas Gruenbacher |
df04b9 |
}
|
|
Andreas Gruenbacher |
df04b9 |
print;
|
|
Andreas Gruenbacher |
df04b9 |
}
|
|
Andreas Gruenbacher |
df04b9 |
}
|
|
Andreas Gruenbacher |
df04b9 |
|
|
Michal Marek |
bdd5e8 |
foreach my $key (sort(keys(%diff))) {
|
|
Andreas Gruenbacher |
df04b9 |
next if exists $diff_used{$key};
|
|
Michal Marek |
bdd5e8 |
print $diff{$key};
|
|
Andreas Gruenbacher |
df04b9 |
}
|