| #! /bin/bash | 
 |  | 
 | # This script uses the bash <(...) extension. | 
 | # If you want to change this to work with a generic /bin/sh, make sure | 
 | # you fix that. | 
 |  | 
 |  | 
 | DTC=dtc | 
 |  | 
 | source_and_sort () { | 
 |     DT="$1" | 
 |     if [ -d "$DT" ]; then | 
 | 	IFORMAT=fs | 
 |     elif [ -f "$DT" ]; then | 
 | 	case "$DT" in | 
 | 	    *.dts) | 
 | 		IFORMAT=dts | 
 | 		;; | 
 | 	    *.dtb) | 
 | 		IFORMAT=dtb | 
 | 		;; | 
 | 	esac | 
 |     fi | 
 |  | 
 |     if [ -z "$IFORMAT" ]; then | 
 | 	echo "Unrecognized format for $DT" >&2 | 
 | 	exit 2 | 
 |     fi | 
 |  | 
 |     $DTC -I $IFORMAT -O dts -qq -f -s -o - "$DT" | 
 | } | 
 |  | 
 | if [ $# != 2 ]; then | 
 |     echo "Usage: dtdiff <device tree> <device tree>" >&2 | 
 |     exit 1 | 
 | fi | 
 |  | 
 | diff -u <(source_and_sort "$1") <(source_and_sort "$2") |