if $reinvoke; then
filename="$1";
+ if cmp -- "$filename" <(printf "%s\n" "$new"); then exit 0; fi
cmp -- "$filename" <(printf "%s\n" "$old")
printf "%s\n" "$new" >"$filename".new
mv -f -- "$filename".new "$filename"
exit 0
fi
-find -path '*/CVS/Root' -exec cvs-adjustroot --reinvoke "$old" "$new" '{}' ';'
+# GNU find provides + exec variants which set exit status and pass
+# multiple arguments, or \; variants which pass one argument but do
+# not set exit status. So use a separate -exec false + to arrange for
+# nonzero exit status when appropriate.
+
+find -path '*/CVS/Root' \
+ \( -exec "$0" --reinvoke "$old" "$new" '{}' ';' \
+ -o -exec false '{}' + \
+ \)