|  | #!/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 | 
|  | } |