+# Some stuff for doing silly progress indicators
+if [ -t 1 ] ; then
+ progress_update ()
+ {
+ THIS="$1"
+ FIRST="$2"
+ LAST="$3"
+ arith_eval $LAST - $FIRST; RANGE=$arith_val
+ arith_eval $THIS - $FIRST; PROG=$arith_val
+ # this automatically rounds to nearest integer
+ arith_eval 100 \* $PROG / $RANGE; PERC=$arith_val
+ # note \r so next update will overwrite
+ printf '%3d%%\r' $PERC
+ }
+
+ progress_done ()
+ {
+ printf '100%%\n'
+ }
+else
+ # don't emit anything if stdout is not connected to a tty.
+ progress_update ()
+ {
+ :
+ }
+ progress_done ()
+ {
+ :
+ }
+fi
+
+check_for_hard_links () {
+ set +e
+
+ printf '' > "${MH_TEST_DIR}/$$-1"
+ if link "${MH_TEST_DIR}/$$-1" "${MH_TEST_DIR}/$$-2" 2>/dev/null; then
+ hard_links_supported=1
+ else
+ hard_links_supported=0
+ fi
+ rm -f "${MH_TEST_DIR}/$$-1" "${MH_TEST_DIR}/$$-2"
+
+ set -e
+}
+
+#### Filter that squeezes blank lines, partially emulating GNU cat -s,
+#### but sufficient for our purpose.
+#### From http://www-rohan.sdsu.edu/doc/sed.html, compiled by Eric Pement.
+squeeze_lines() {
+ sed '/^$/N;/\n$/D'
+}
+
+#### Filter that converts non-breakable space U+00A0 to an ASCII space.
+prepare_space() {
+ sed 's/'"`printf '\\302\\240'`"'/ /g'