[PATCH] git-am: fix detection of absolute paths for windows
- From
Pat Thoyts <patthoyts@users.sourceforge.net>
- Date
- Sep 30, 2010, 13:24 UTC
- Message-ID
- <87iq1ly81q.fsf@fox.patthoyts.tk>
- In-Reply-To
- <201010011946.12481.j6t@kdbg.org>
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 <j6t@kdbg.org> Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net> ---
Johannes Sixt <j6t@kdbg.org> writes:
Show 26 quoted lines
>On Donnerstag, 30. September 2010, Pat Thoyts wrote:
>> 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!
>
>> @@ -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]:*)
>
>> + return 0 ;;
>> + esac
>> + return 1
>> + }
>
>-- HannesI'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