[Top][All Lists]
[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
- [PATCH] use shell function for AS_BASENAME, AS_DIRNAME, AS_MKDIR_P,
Paolo Bonzini <=