#!/bin/bash # Usage: configcheck.sh .config .config-template # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, you can access it online at # http://www.gnu.org/licenses/gpl-2.0.html. # # Copyright (C) IBM Corporation, 2011 # # Authors: Paul E. McKenney global T := "/tmp/abat-chk-config.sh.$Pid" trap 'rm -rf $T' 0 mkdir $T cat $1 > $T/.config cat $2 | sed -e 's/\(.*\)=n/# \1 is not set/' -e 's/^#CHECK#//' | awk ' BEGIN { print "if grep -q \"" $0 "\" < '"$T/.config"'"; print "then"; print "\t:"; print "else"; if ($1 == "#") { print "\tif grep -q \"" $2 "\" < '"$T/.config"'"; print "\tthen"; print "\t\tif test \"$firsttime\" = \"\"" print "\t\tthen" print "\t\t\tfirsttime=1" print "\t\tfi" print "\t\techo \":" $2 ": improperly set\""; print "\telse"; print "\t\t:"; print "\tfi"; } else { print "\tif test \"$firsttime\" = \"\"" print "\tthen" print "\t\tfirsttime=1" print "\tfi" print "\techo \":" $0 ": improperly set\""; } print "fi"; }' | sh (CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:T) op: Equal rhs: {(/tmp/abat-chk-config.sh.) ($ VSub_Dollar "$$")} spids: [61] ) ] spids: [61] ) (C {(trap)} {(SQ <"rm -rf $T">)} {(0)}) (C {(mkdir)} {($ VSub_Name "$T")}) (SimpleCommand words: [{(cat)} {($ VSub_Number "$1")}] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{($ VSub_Name "$T") (/.config)} spids:[82])] ) (Pipeline children: [ (C {(cat)} {($ VSub_Number "$2")}) (C {(sed)} {(-e)} {(SQ <"s/\\(.*\\)=n/# \\1 is not set/">)} {(-e)} {(SQ <"s/^#CHECK#//">)}) (C {(awk)} {(SQ <"\n"> <"BEGIN\t{\n"> <"\t\tprint \"if grep -q \\\"\" $0 \"\\\" < ">) (DQ ($ VSub_Name "$T") (/.config)) (SQ <"\";\n"> <"\t\tprint \"then\";\n"> <"\t\tprint \"\\t:\";\n"> <"\t\tprint \"else\";\n"> <"\t\tif ($1 == \"#\") {\n"> <"\t\t\tprint \"\\tif grep -q \\\"\" $2 \"\\\" < "> ) (DQ ($ VSub_Name "$T") (/.config)) (SQ <"\";\n"> <"\t\t\tprint \"\\tthen\";\n"> <"\t\t\tprint \"\\t\\tif test \\\"$firsttime\\\" = \\\"\\\"\"\n"> <"\t\t\tprint \"\\t\\tthen\"\n"> <"\t\t\tprint \"\\t\\t\\tfirsttime=1\"\n"> <"\t\t\tprint \"\\t\\tfi\"\n"> <"\t\t\tprint \"\\t\\techo \\\":\" $2 \": improperly set\\\"\";\n"> <"\t\t\tprint \"\\telse\";\n"> <"\t\t\tprint \"\\t\\t:\";\n"> <"\t\t\tprint \"\\tfi\";\n"> <"\t\t} else {\n"> <"\t\t\tprint \"\\tif test \\\"$firsttime\\\" = \\\"\\\"\"\n"> <"\t\t\tprint \"\\tthen\"\n"> <"\t\t\tprint \"\\t\\tfirsttime=1\"\n"> <"\t\t\tprint \"\\tfi\"\n"> <"\t\t\tprint \"\\techo \\\":\" $0 \": improperly set\\\"\";\n"> <"\t\t}\n"> <"\t\tprint \"fi\";\n"> <"\t}"> ) } ) (C {(sh)}) ] negated: False ) ] )