Hello autoconfers. There is any reason why the AS_BASENAME and AS_DIRNAME macros don't have associated as_fn_* shells functions, like e.g. AS_MKDIR_P or AS_UNSET do? If there is no such reason, you might find the attached patch useful.
Regards, Stefano
From e285d55b0d5338b268d41bd7600a832af5733f73 Mon Sep 17 00:00:00 2001 From: Stefano Lattarini <[email protected]> Date: Thu, 29 Jul 2010 12:03:11 +0200 Subject: [PATCH] Reimplement AS_BASENAME and AS_DIRNAME with shell functions. * lib/m4sugar/m4sh.m4 (_AS_BASENAME_PREPARE): Define new shell function `as_fn_basename'. (AS_BASENAME): Use it. (_AS_DIRNAME_PREPARE): Define new shell function `as_fn_dirname'. (AS_DIRNAME): Use it. --- ChangeLog | 9 +++++++++ lib/m4sugar/m4sh.m4 | 23 +++++++++++++++-------- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 46ddfe2..f1d06ff 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2010-07-29 Stefano Lattarini <[email protected]> + + Reimplement AS_BASENAME and AS_DIRNAME with shell functions. + * lib/m4sugar/m4sh.m4 (_AS_BASENAME_PREPARE): Define new shell + function `as_fn_basename'. + (AS_BASENAME): Use it. + (_AS_DIRNAME_PREPARE): Define new shell function `as_fn_dirname'. + (AS_DIRNAME): Use it. + 2010-07-21 Eric Blake <[email protected]> Release Version 2.67. diff --git a/lib/m4sugar/m4sh.m4 b/lib/m4sugar/m4sh.m4 index 3cc868c..1466cac 100644 --- a/lib/m4sugar/m4sh.m4 +++ b/lib/m4sugar/m4sh.m4 @@ -898,10 +898,7 @@ m4_defun([_AS_BASENAME_SED], m4_defun_init([AS_BASENAME], [AS_REQUIRE([_$0_PREPARE])], -[$as_basename -- $1 || -_AS_BASENAME_EXPR([$1]) 2>/dev/null || -_AS_BASENAME_SED([$1])]) - +[as_fn_basename $1]) # _AS_BASENAME_PREPARE # -------------------- @@ -915,6 +912,12 @@ m4_defun([_AS_BASENAME_PREPARE], else as_basename=false fi +AS_REQUIRE_SHELL_FN([as_fn_basename], + [AS_FUNCTION_DESCRIBE([as_fn_basename FILE-NAME], [FILE-NAME], + [Simulate the command 'basename FILE-NAME'.])], +[ $as_basename -- "$[1]" || + _AS_BASENAME_EXPR(["$[1]"]) 2>/dev/null || + _AS_BASENAME_SED(["$[1]"])]) ])# _AS_BASENAME_PREPARE @@ -929,6 +932,7 @@ fi # a silly length limit that causes expr to fail if the matched # substring is longer than 120 bytes. So fall back on echo|sed if # expr fails. + m4_defun_init([_AS_DIRNAME_EXPR], [AS_REQUIRE([_AS_EXPR_PREPARE])], [$as_expr X[]$1 : 'X\(.*[[^/]]\)//*[[^/][^/]]*/*$' \| \ @@ -958,10 +962,7 @@ m4_defun([_AS_DIRNAME_SED], m4_defun_init([AS_DIRNAME], [AS_REQUIRE([_$0_PREPARE])], -[$as_dirname -- $1 || -_AS_DIRNAME_EXPR([$1]) 2>/dev/null || -_AS_DIRNAME_SED([$1])]) - +[as_fn_dirname $1]) # _AS_DIRNAME_PREPARE # ------------------- @@ -972,6 +973,12 @@ m4_defun([_AS_DIRNAME_PREPARE], else as_dirname=false fi +AS_REQUIRE_SHELL_FN([as_fn_dirname], + [AS_FUNCTION_DESCRIBE([as_fn_dirname FILE-NAME], [FILE-NAME], + [Simulate the command 'dirname FILE-NAME'.])], +[ $as_dirname -- "$[1]" || + _AS_DIRNAME_EXPR(["$[1]"]) 2>/dev/null || + _AS_DIRNAME_SED(["$[1]"])]) ])# _AS_DIRNAME_PREPARE -- 1.7.1
