Add an is_absolute_path function to abstract out platform differences
in checking for an absolute or relative path.
Specifically fixes t4150-am on Windows.
[PT: updated following suggestion from j6t to support \* and //*]
Signed-off-by: Johannes Sixt <redacted>
Signed-off-by: Pat Thoyts <redacted>
---
Johannes Sixt [off-list ref] writes:
On Donnerstag, 30. September 2010, Pat Thoyts wrote:
quoted
Add an is_absolute_path function to abstract out platform differences
in checking for an absolute or relative path.
Specifically fixes t4150-am on Windows.
Thanks for tackling this!
quoted
@@ -209,5 +209,20 @@ case $(uname -s) in
find () {
/usr/bin/find "$@"
}
+ is_absolute_path () {
+ case "$1" in
+ /* | ?:* | \\\\*)
Absolute paths can also start with a backslash, and UNC paths can start with
double-slash. Therefore, this should be:
[/\\]* | [A-Za-z]:*)
quoted
+ return 0 ;;
+ esac
+ return 1
+ }
-- Hannes
I've modified the patch and added your signoff - hopefully that is ok?
git-am.sh | 12 ++++++------
git-sh-setup.sh | 15 +++++++++++++++
2 files changed, 21 insertions(+), 6 deletions(-)
diff --git a/git-am.sh b/git-am.sh
index e7f008c..9317b38 100755
--- a/git-am.sh
+++ b/git-am.sh
@@ -444,12 +444,12 @@ else
set x
first=
}
- case "$arg" in
- /*)
- set "$@" "$arg" ;;
- *)
- set "$@" "$prefix$arg" ;;
- esac
+ if is_absolute_path "$arg"
+ then
+ set "$@" "$arg"
+ else
+ set "$@" "$prefix$arg"
+ fi
done
shift
fi
diff --git a/git-sh-setup.sh b/git-sh-setup.sh
index 6131670..58d30c9 100644
--- a/git-sh-setup.sh
+++ b/git-sh-setup.sh
@@ -209,5 +209,20 @@ case $(uname -s) in
find () {
/usr/bin/find "$@"
}
+ is_absolute_path () {
+ case "$1" in
+ [/\\]* | [A-Za-z]:*)
+ return 0 ;;
+ esac
+ return 1
+ }
;;
+*)
+ is_absolute_path () {
+ case "$1" in
+ /*)
+ return 0 ;;
+ esac
+ return 1
+ }
esac--
1.7.3