Browse Source

merge from gcc

jimb-rda-nptl-branch
DJ Delorie 22 years ago
parent
commit
950ad202a5
  1. 4
      libiberty/ChangeLog
  2. 30
      libiberty/lrealpath.c

4
libiberty/ChangeLog

@ -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,

30
libiberty/lrealpath.c

@ -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…
Cancel
Save