autoconf-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] use shell function for AS_BASENAME, AS_DIRNAME, AS_MKDIR_P


From: Paolo Bonzini
Subject: [PATCH] use shell function for AS_BASENAME, AS_DIRNAME, AS_MKDIR_P
Date: Thu, 09 Oct 2008 10:04:22 -0400

Here is what remains.

2008-10-08  Paolo Bonzini  <address@hidden>

        * lib/m4sugar/m4sh.m4 (AS_BASENAME): Just dispatch to $as_basename.
        (_AS_BASENAME_PREPARE): Test availability of basename and expr.
        Define shell functions.

        (AS_DIRNAME): Just dispatch to $as_dirname.
        (_AS_DIRNAME_PREPARE): Test availability of basename and expr.
        Define shell functions.

        (_AS_MKDIR_P): New, from AS_MKDIR_P.  Adjust meaning of as_mkdir_p
        to be `false' or a full `mkdir -p' command.
        (AS_MKDIR_P): Just dispatch to as_func_mkdir_p.
        (_AS_MKDIR_P_PREPARE): Set as_mkdir_p according to the above change.
        Define shell functions.
---
 ChangeLog           |   16 ++++++++++
 lib/m4sugar/m4sh.m4 |   80 +++++++++++++++++++++++++++++++++++++--------------
 2 files changed, 74 insertions(+), 22 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index e4176e8..56bb40d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,21 @@
 2008-10-09  Paolo Bonzini  <address@hidden>
 
+       * m4sugar/m4sh.m4 (AS_BASENAME): Just dispatch to $as_basename.
+       (_AS_BASENAME_PREPARE): Test availability of basename and expr.
+       Define shell functions.
+
+       (AS_DIRNAME): Just dispatch to $as_dirname.
+       (_AS_DIRNAME_PREPARE): Test availability of basename and expr.
+       Define shell functions.
+
+       (_AS_MKDIR_P): New, from AS_MKDIR_P.  Adjust meaning of as_mkdir_p
+       to be `false' or a full `mkdir -p' command.
+       (AS_MKDIR_P): Just dispatch to as_func_mkdir_p.
+       (_AS_MKDIR_P_PREPARE): Set as_mkdir_p according to the above change.
+       Define shell functions.
+
+2008-10-09  Paolo Bonzini  <address@hidden>
+
        * m4sugar/m4sh.m4 (AS_SHELL_SANITIZE): Delay setting as_me
        until the M4SH-INIT diversion using _AS_ME_PREPARE.
        (_AS_PREPARE): Invoke _AS_EXPR_PREPARE before _AS_BASENAME_PREPARE
diff --git a/lib/m4sugar/m4sh.m4 b/lib/m4sugar/m4sh.m4
index b64a6cf..d0f925e 100644
--- a/lib/m4sugar/m4sh.m4
+++ b/lib/m4sugar/m4sh.m4
@@ -256,7 +256,27 @@ fi
 # there are so many _AS_PREPARE_* below, and that's also why it is
 # important not to forget some: config.status needs them.
 m4_defun([_AS_PREPARE],
-[_AS_EXPR_PREPARE
+[as_func_basename_expr() {
+  _AS_BASENAME_EXPR([$[]2])
+}
+
+as_func_basename_sed() {
+  _AS_BASENAME_SED([$[]2])
+}
+
+as_func_dirname_expr() {
+  _AS_DIRNAME_EXPR([$[]2])
+}
+
+as_func_dirname_sed() {
+  _AS_DIRNAME_SED([$[]2])
+}
+
+as_func_mkdir_p() {
+  _AS_MKDIR_P([$[]1])
+}
+
+_AS_EXPR_PREPARE
 _AS_BASENAME_PREPARE
 _AS_DIRNAME_PREPARE
 _AS_ME_PREPARE
@@ -739,9 +759,7 @@ m4_defun([_AS_BASENAME_SED],
 
 m4_defun([AS_BASENAME],
 [AS_REQUIRE([_$0_PREPARE])dnl
-$as_basename -- $1 ||
-_AS_BASENAME_EXPR([$1]) 2>/dev/null ||
-_AS_BASENAME_SED([$1])])
+$as_basename -- $1])
 
 
 # _AS_BASENAME_PREPARE
@@ -752,10 +770,16 @@ _AS_BASENAME_SED([$1])])
 # (AS_REQUIRE is nowhere near being as sophisticated as AC_REQUIRE).
 m4_defun([_AS_BASENAME_PREPARE],
 [AS_REQUIRE([_AS_EXPR_PREPARE])dnl
+AS_REQUIRE_SHELL_FN([as_func_basename_expr],
+                    [_AS_BASENAME_EXPR([$[]2]) 2>/dev/null])
+AS_REQUIRE_SHELL_FN([as_func_basename_sed],
+                   [_AS_BASENAME_SED([$[]2])])
 if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
   as_basename=basename
+elif (as_func_basename_expr -- /) >/dev/null 2>&1; then
+  as_basename=as_func_basename_expr
 else
-  as_basename=false
+  as_basename=as_func_basename_sed
 fi
 ])# _AS_BASENAME_PREPARE
 
@@ -772,8 +796,7 @@ fi
 # substring is longer than 120 bytes.  So fall back on echo|sed if
 # expr fails.
 m4_defun([_AS_DIRNAME_EXPR],
-[AS_REQUIRE([_AS_EXPR_PREPARE])dnl
-$as_expr X[]$1 : 'X\(.*[[^/]]\)//*[[^/][^/]]*/*$' \| \
+[$as_expr X[]$1 : 'X\(.*[[^/]]\)//*[[^/][^/]]*/*$' \| \
         X[]$1 : 'X\(//\)[[^/]]' \| \
         X[]$1 : 'X\(//\)$' \| \
         X[]$1 : 'X\(/\)' \| .])
@@ -800,19 +823,23 @@ m4_defun([_AS_DIRNAME_SED],
 
 m4_defun([AS_DIRNAME],
 [AS_REQUIRE([_$0_PREPARE])dnl
-$as_dirname -- $1 ||
-_AS_DIRNAME_EXPR([$1]) 2>/dev/null ||
-_AS_DIRNAME_SED([$1])])
+$as_dirname -- $1])
 
 
 # _AS_DIRNAME_PREPARE
 # --------------------
 m4_defun([_AS_DIRNAME_PREPARE],
 [AS_REQUIRE([_AS_EXPR_PREPARE])dnl
+AS_REQUIRE_SHELL_FN([as_func_dirname_expr],
+                    [_AS_DIRNAME_EXPR([$[]2]) 2>/dev/null])
+AS_REQUIRE_SHELL_FN([as_func_dirname_sed],
+                   [_AS_DIRNAME_SED([$[]2])])
 if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
   as_dirname=dirname
+elif (as_func_dirname_expr -- /) >/dev/null 2>&1; then
+  as_dirname=as_func_dirname_expr
 else
-  as_dirname=false
+  as_dirname=as_func_dirname_sed
 fi
 ])# _AS_DIRNAME_PREPARE
 
@@ -1030,16 +1057,15 @@ $as_ln_s $1 $2
 ])
 
 
-# AS_MKDIR_P(DIR)
-# ---------------
-# Emulate `mkdir -p' with plain `mkdir'.
-m4_define([AS_MKDIR_P],
-[AS_REQUIRE([_$0_PREPARE])dnl
-{ as_dir=$1
+# _AS_MKDIR_P(DIR)
+# ----------------
+# Emulate `mkdir -p` with plain `mkdir'.
+m4_define([_AS_MKDIR_P],
+[as_dir=$1
   case $as_dir in #(
   -*) as_dir=./$as_dir;;
   esac
-  test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
+  test -d "$as_dir" || eval $as_mkdir_p || {
     as_dirs=
     while :; do
       case $as_dir in #(
@@ -1051,15 +1077,25 @@ m4_define([AS_MKDIR_P],
       test -d "$as_dir" && break
     done
     test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || AS_ERROR([cannot create directory $as_dir]); }dnl
-])# AS_MKDIR_P
+  } || test -d "$as_dir" || AS_ERROR([cannot create directory $as_dir])
+])
+
+# AS_MKDIR_P(DIR)
+# ---------------
+# Emulate `mkdir -p' with plain `mkdir' if needed.
+m4_define([AS_MKDIR_P],
+[AS_REQUIRE([_$0_PREPARE])dnl
+as_dir=$1; as_func_mkdir_p "$as_dir"])# AS_MKDIR_P
 
 
 # _AS_MKDIR_P_PREPARE
 # -------------------
 m4_defun([_AS_MKDIR_P_PREPARE],
-[if mkdir -p . 2>/dev/null; then
-  as_mkdir_p=:
+[AS_REQUIRE_SHELL_FN([as_func_mkdir_p], [
+  _AS_MKDIR_P([$[]1])
+])
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
 else
   test -d ./-p && rmdir ./-p
   as_mkdir_p=false
-- 
1.5.5





reply via email to

[Prev in Thread] Current Thread [Next in Thread]