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
 | 
			
		||||
printf '%s' "${values_is}" \
 | 
			
		||||
| awk '
 | 
			
		||||
function unquote(s) {
 | 
			
		||||
	# simplified dequoting of single quoted strings
 | 
			
		||||
	if (s ~ /^'\''.*'\''$/) {
 | 
			
		||||
		s = substr(s, 2, length(s) - 2)
 | 
			
		||||
		sub(/'"'\\\\''"'/, "'\''", s)
 | 
			
		||||
	}
 | 
			
		||||
	return s
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
BEGIN {
 | 
			
		||||
	state = "present"  # assume all is fine
 | 
			
		||||
}
 | 
			
		||||
NR == FNR {
 | 
			
		||||
	# memoize "should" state
 | 
			
		||||
	should[FNR] = $0
 | 
			
		||||
	should_count++
 | 
			
		||||
 | 
			
		||||
	# go to next line (important!)
 | 
			
		||||
	next
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# compare "is" state
 | 
			
		||||
 | 
			
		||||
{ $0 = unquote($0) }
 | 
			
		||||
 | 
			
		||||
$0 == should[FNR] { next }
 | 
			
		||||
 | 
			
		||||
FNR > length(should) {
 | 
			
		||||
FNR > should_count {
 | 
			
		||||
	# there are more "is" records than "should" -> definitely different
 | 
			
		||||
	state = "different"
 | 
			
		||||
	exit
 | 
			
		||||
| 
						 | 
				
			
			@ -87,7 +100,7 @@ FNR > length(should) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
END {
 | 
			
		||||
	if (FNR < length(should)) {
 | 
			
		||||
	if (FNR < should_count) {
 | 
			
		||||
		# "is" was shorter than "should" -> different
 | 
			
		||||
		state = "different"
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue