Earnie Boyd wrote:
Quoting Eli Zaretskii <[EMAIL PROTECTED]>:
Date: Wed, 31 May 2006 20:05:55 +0200
From: Andreas =?iso-8859-1?Q?B=FCning?= <[EMAIL PROTECTED]>
CC: grischka <[EMAIL PROTECTED]>, [email protected]
> Andreas, is there a _getdcwd function on OS/2?
There is an _abspath(char *out, const char *in, int size) function doing
exactly what make's abspath() is supposed to do.
What does _abspath do with "d:foo"? That was the case we were
discussing.
IMO, make should not consider d:foo as a valid path even though the OS
does. But in reference to your question, I don't find _abspath or
abspath documented and msdn.microsoft.com. Looking in my reference
material I found _fullpath which is documented here
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore98/HTML/_crt__fullpath.2c_._wfullpath.asp
watch out for the line wrapping.
_fullpath is a wrapper around GetFullPathName: it possibly allocates
the buffer and maps errors to errno. Since _fullpath is not in OS/2
either, I'd use GetFullPathName directly.
I have some notes/questions about abspath in general and in win32:
- abspath does not follow symlinks, thus it does the wrong thing
whith, e.g., ./symlink/../not_in_cwd. However, that way it can be
applied to the names of not yet existing files.
- Windows does not have the equivalent of realpath.
- GetFullPathName does not look at the disk but knows the current
directory in each drive, much like make's abspath implementation.
- There is a GetLongPathName function that nicely recovers the
real filename capitalization. It fails like realpath for missing
components, but does not remove "." nor ".." and does not resolve
NTFS' junctions (symbolic links). Furthermore, GetLongPathName
is missing from older include files and may require NewAPIs.h
- There is also a GetShortPathName that retrieves the 8.3 form
of existing files. Even if it requires that directories exist,
its usage does make sense, because it is quite common that full
paths contain spaces in Windows.
One possibility to cope with the above would use a new function
to determine the last directory component that already exists
and is either out of starting_directory or on a different drive.
Next we apply realpath (on Unix) or GetShortPathName (on Windows)
to the first part of the path and then add further components in
the same way abspath currently does it. Would that break existing
use of abspath?
_______________________________________________
Make-w32 mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/make-w32