| #!/bin/sh | 
 |  | 
 | do_filename() { | 
 | 	desc=$1 | 
 | 	postimage=$2 | 
 |  | 
 | 	rm -fr file-creation && | 
 | 	git init file-creation && | 
 | 	( | 
 | 		cd file-creation && | 
 | 		git commit --allow-empty -m init && | 
 | 		echo postimage >"$postimage" && | 
 | 		git add -N "$postimage" && | 
 | 		git diff HEAD >"../git-$desc.diff" | 
 | 	) && | 
 |  | 
 | 	rm -fr trad-modification && | 
 | 	mkdir trad-modification && | 
 | 	( | 
 | 		cd trad-modification && | 
 | 		echo preimage >"$postimage.orig" && | 
 | 		echo postimage >"$postimage" && | 
 | 		! diff -u "$postimage.orig" "$postimage" >"../diff-$desc.diff" | 
 | 	) && | 
 |  | 
 | 	rm -fr trad-creation && | 
 | 	mkdir trad-creation && | 
 | 	( | 
 | 		cd trad-creation && | 
 | 		mkdir a b && | 
 | 		echo postimage >"b/$postimage" && | 
 | 		! diff -pruN a b >"../add-$desc.diff" | 
 | 	) | 
 | } | 
 |  | 
 | do_filename plain postimage.txt && | 
 | do_filename 'with spaces' 'post image.txt' && | 
 | do_filename 'with tab' 'post	image.txt' && | 
 | do_filename 'with backslash' 'post\image.txt' && | 
 | do_filename 'with quote' '"postimage".txt' && | 
 | expand add-plain.diff >damaged.diff || | 
 | { | 
 | 	echo >&2 Failed. && | 
 | 	exit 1 | 
 | } |