forked from ungleich-public/cdist
[type/__uci] Unquote UCI reported values
Without unquoting values printed in single quotes by UCI would always lead to the state explorer reporting "different".
This commit is contained in:
parent
b99ca3cbdf
commit
8728817af6
1 changed files with 15 additions and 2 deletions
|
@ -51,21 +51,34 @@ fi
|
||||||
# strip off trailing newline
|
# strip off trailing newline
|
||||||
printf '%s' "${values_is}" \
|
printf '%s' "${values_is}" \
|
||||||
| awk '
|
| awk '
|
||||||
|
function unquote(s) {
|
||||||
|
# simplified dequoting of single quoted strings
|
||||||
|
if (s ~ /^'\''.*'\''$/) {
|
||||||
|
s = substr(s, 2, length(s) - 2)
|
||||||
|
sub(/'"'\\\\''"'/, "'\''", s)
|
||||||
|
}
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
|
||||||
BEGIN {
|
BEGIN {
|
||||||
state = "present" # assume all is fine
|
state = "present" # assume all is fine
|
||||||
}
|
}
|
||||||
NR == FNR {
|
NR == FNR {
|
||||||
# memoize "should" state
|
# memoize "should" state
|
||||||
should[FNR] = $0
|
should[FNR] = $0
|
||||||
|
should_count++
|
||||||
|
|
||||||
# go to next line (important!)
|
# go to next line (important!)
|
||||||
next
|
next
|
||||||
}
|
}
|
||||||
|
|
||||||
# compare "is" state
|
# compare "is" state
|
||||||
|
|
||||||
|
{ $0 = unquote($0) }
|
||||||
|
|
||||||
$0 == should[FNR] { next }
|
$0 == should[FNR] { next }
|
||||||
|
|
||||||
FNR > length(should) {
|
FNR > should_count {
|
||||||
# there are more "is" records than "should" -> definitely different
|
# there are more "is" records than "should" -> definitely different
|
||||||
state = "different"
|
state = "different"
|
||||||
exit
|
exit
|
||||||
|
@ -87,7 +100,7 @@ FNR > length(should) {
|
||||||
}
|
}
|
||||||
|
|
||||||
END {
|
END {
|
||||||
if (FNR < length(should)) {
|
if (FNR < should_count) {
|
||||||
# "is" was shorter than "should" -> different
|
# "is" was shorter than "should" -> different
|
||||||
state = "different"
|
state = "different"
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue