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>
|
2004-06-28 Zack Weinberg <zack@codesourcery.com>
|
||||||
|
|
||||||
* cp-demangle.h: Declare cplus_demangle_operators,
|
* cp-demangle.h: Declare cplus_demangle_operators,
|
||||||
|
|
|
@ -64,6 +64,12 @@ extern char *canonicalize_file_name (const char *);
|
||||||
# define REALPATH_LIMIT MAXPATHLEN
|
# define REALPATH_LIMIT MAXPATHLEN
|
||||||
# endif
|
# endif
|
||||||
# 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
|
#endif
|
||||||
|
|
||||||
char *
|
char *
|
||||||
|
@ -123,6 +129,30 @@ lrealpath (filename)
|
||||||
}
|
}
|
||||||
#endif
|
#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. */
|
/* This system is a lost cause, just duplicate the filename. */
|
||||||
return strdup (filename);
|
return strdup (filename);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue