# Convert an ordinary DOS-style pathname into POSIX format:
# 1. Set it into correct mixed case since POSIX is case-
# sensitive.
# 2. If there's an explicit drive letter, be sure the name
# is a fullpath since there's no way to refer to the
# current directory on anything but the current drive
# under POSIX rules.
# 3. Change any from \'s to /'s.
# 4. Convert any drive specification from the usual c: format
# to the POSIX //C/ format.
# This routine is particularly useful for creating C shell script
# "wrappers" around POSIX applications such as those on the Microsoft
# NT Resource Kit CD to convert filename arguments to POSIX format
# before the applications are invoked.
# Note: This procedure does not work on UNC (network) names because
# there is no way to convert a UNC name.
# Copyright (c) 1994-2012 by Hamilton Laboratories. All rights reserved.
proc posxpath( file )
if (file != "") then
if (file =~ "?:*") then
if (file == substr(file, 3, 1) != "/") @ file = fullpath(file)
set file = $file:m:gSx\x/x
@ file = "//$upper(substr(file, 1, 1))/$substr(file, 4)"
else
set file = $file:m:gSx\x/x
end
else
@ file = "."
end
return $file
end
posxpath $argv
|