]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
Use a better dirname emulation.
authorJim Meyering <meyering@redhat.com>
Sun, 10 Feb 2008 12:52:47 +0000 (13:52 +0100)
committerJim Meyering <meyering@redhat.com>
Sun, 10 Feb 2008 12:52:47 +0000 (13:52 +0100)
* build-aux/check.mk (_dirname): Define.
(am__check_pre): Use it.

build-aux/check.mk

index f35007bb08f8ac59ae84839407a0c85962343d16..be255c4ca4b8e8fb573fd0b4d47064bf2111d921 100644 (file)
@@ -90,9 +90,12 @@ tput sgr0 >/dev/null 2>&1 &&                 \
 SH_E_WORKAROUND = case $$- in *e*) set +e;; esac
 
 # Emulate dirname with sed.
-# This approximation fails when the input is a single-component
-# absolute directory name like /foo, but that never happens here.
-approx_dirname_filter = sed 's,^[^/]*$$,.,;s,//*[^/]*$$,,'
+_d_no_slash       = s,^[^/]*$$,.,
+_d_strip_trailing = s,\([^/]\)//*$$,\1,
+_d_abs_trivial    = s,^//*[^/]*$$,/,
+_d_rm_basename    = s,\([^/]\)//*[^/]*$$,\1,
+_dirname = \
+  sed '$(_d_no_slash);$(_d_strip_trailing);$(_d_abs_trivial);$(_d_rm_basename)'
 
 # To be inserted before the command running the test.  Creates the
 # directory for the log if needed.  Stores in $dir the directory
@@ -101,7 +104,7 @@ am__check_pre =                                     \
 $(SH_E_WORKAROUND);                            \
 tst=`echo "$$src" | sed 's|^.*/||'`;           \
 rm -f $@-t;                                    \
-$(mkdir_p) "$$(echo '$@'|$(approx_dirname_filter))" || exit; \
+$(mkdir_p) "$$(echo '$@'|$(_dirname))" || exit;        \
 if test -f "./$$src"; then dir=./;             \
 elif test -f "$$src"; then dir=;               \
 else dir="$(srcdir)/"; fi;                     \