cristy | 3ed852e | 2009-09-05 21:47:34 +0000 | [diff] [blame] | 1 | #!/bin/sh |
Cristy | 7ce65e7 | 2015-12-12 18:03:16 -0500 | [diff] [blame] | 2 | # Copyright (C) 1999-2016 ImageMagick Studio LLC |
cristy | 3ed852e | 2009-09-05 21:47:34 +0000 | [diff] [blame] | 3 | # Copyright (C) 2003 - 2008 GraphicsMagick Group |
| 4 | # |
| 5 | # This program is covered by multiple licenses, which are described in |
| 6 | # LICENSE. You should have received a copy of LICENSE with this |
Cristy | 6459959 | 2016-11-04 22:32:09 -0400 | [diff] [blame] | 7 | # package; otherwise see https://www.imagemagick.org/script/license.php. |
cristy | 3ed852e | 2009-09-05 21:47:34 +0000 | [diff] [blame] | 8 | # |
| 9 | # Convert the specified POSIX path to a Windows path under MinGW and Cygwin |
| 10 | # The optional second parameter specifies the level of backslash escaping |
| 11 | # to apply for each Windows backslash position in order to support varying |
| 12 | # levels of variable substitutions in scripts. |
| 13 | # |
| 14 | # Note that Cygwin includes the 'cygpath' utility, which already provides |
| 15 | # path translation capability. |
| 16 | # |
| 17 | # Written by Bob Friesenhahn, June 2002 |
| 18 | # |
| 19 | arg="$1" |
| 20 | escapes=0 |
| 21 | if test -n "$2" |
| 22 | then |
| 23 | escapes="$2" |
| 24 | fi |
| 25 | if test $escapes -gt 3 |
| 26 | then |
| 27 | echo "$0: escape level must in range 0 - 3" |
| 28 | exit 1 |
| 29 | fi |
| 30 | result='' |
| 31 | length=0 |
| 32 | max_length=0 |
| 33 | mount | sed -e 's:\\:/:g' | ( |
| 34 | IFS="\n" |
| 35 | while read mount_entry |
| 36 | do |
| 37 | win_mount_path=`echo "$mount_entry" | sed -e 's: .*::g'` |
| 38 | unix_mount_path=`echo "$mount_entry" | sed -e 's:.* on ::;s: type .*::'` |
Cristy | 4cff747 | 2016-11-08 06:30:29 -0500 | [diff] [blame] | 39 | temp=`echo "$arg" | sed -e "s!^$unix_mount_path!$win_mount_path/!"` |
cristy | 3ed852e | 2009-09-05 21:47:34 +0000 | [diff] [blame] | 40 | if test "$temp" != "$arg" |
| 41 | then |
| 42 | candidate="$temp" |
| 43 | length=${#unix_mount_path} |
| 44 | if test $length -gt $max_length |
| 45 | then |
| 46 | result=$candidate |
| 47 | max_length=$length |
| 48 | fi |
| 49 | fi |
| 50 | done |
| 51 | if test -z "$result" |
| 52 | then |
| 53 | echo "$0: path \"$arg\" is not mounted" |
| 54 | exit 1 |
| 55 | fi |
| 56 | case $escapes in |
| 57 | 0) |
| 58 | echo "$result" | sed -e 's:/:\\:g' |
| 59 | ;; |
| 60 | 1) |
| 61 | echo "$result" | sed -e 's:/:\\\\:g' |
| 62 | ;; |
| 63 | 2) |
| 64 | echo "$result" | sed -e 's:/:\\\\\\\\:g' |
| 65 | ;; |
| 66 | 3) |
| 67 | echo "$result" | sed -e 's:/:\\\\\\\\\\\\\\\\:g' |
| 68 | ;; |
| 69 | esac |
| 70 | exit 0; |
| 71 | ) |