merge from gcc
This commit is contained in:
parent
79acc9b3cc
commit
950ad202a5
2 changed files with 34 additions and 0 deletions
|
@ -1,3 +1,7 @@
|
|||
2004-06-29 Danny Smith <dannysmith@users.sourceforge.net>
|
||||
|
||||
* lrealpath.c (lrealpath): Add _WIN32 support.
|
||||
|
||||
2004-06-28 Zack Weinberg <zack@codesourcery.com>
|
||||
|
||||
* cp-demangle.h: Declare cplus_demangle_operators,
|
||||
|
|
|
@ -64,6 +64,12 @@ extern char *canonicalize_file_name (const char *);
|
|||
# define REALPATH_LIMIT MAXPATHLEN
|
||||
# endif
|
||||
# endif
|
||||
#else
|
||||
/* cygwin has realpath, so it won't get here. */
|
||||
# if defined (_WIN32)
|
||||
# define WIN32_LEAN_AND_MEAN
|
||||
# include <windows.h> /* for GetFullPathName */
|
||||
# endif
|
||||
#endif
|
||||
|
||||
char *
|
||||
|
@ -123,6 +129,30 @@ lrealpath (filename)
|
|||
}
|
||||
#endif
|
||||
|
||||
/* The MS Windows method. If we don't have realpath, we assume we
|
||||
don't have symlinks and just canonicalize to a Windows absolute
|
||||
path. GetFullPath converts ../ and ./ in relative paths to
|
||||
absolute paths, filling in current drive if one is not given
|
||||
or using the current directory of a specified drive (eg, "E:foo").
|
||||
It also converts all forward slashes to back slashes. */
|
||||
#if defined (_WIN32)
|
||||
{
|
||||
char buf[MAX_PATH];
|
||||
char* basename;
|
||||
DWORD len = GetFullPathName (filename, MAX_PATH, buf, &basename);
|
||||
if (len == 0 || len > MAX_PATH - 1)
|
||||
return strdup (filename);
|
||||
else
|
||||
{
|
||||
/* The file system is case-preserving but case-insensitive,
|
||||
Canonicalize to lowercase, using the codepage associated
|
||||
with the process locale. */
|
||||
CharLowerBuff (buf, len);
|
||||
return strdup (buf);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/* This system is a lost cause, just duplicate the filename. */
|
||||
return strdup (filename);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue