* path.cc (conv_path_list): Remove enclosing quotes and trailing
backslashes from Win32 environment path lists.
This commit is contained in:
parent
0e126cb141
commit
cecc445d5c
@ -1,3 +1,8 @@
|
||||
2011-02-02 Corinna Vinschen <corinna@vinschen.de>
|
||||
|
||||
* path.cc (conv_path_list): Remove enclosing quotes and trailing
|
||||
backslashes from Win32 environment path lists.
|
||||
|
||||
2011-02-01 Christian Franke <franke@computer.org>
|
||||
|
||||
* fhandler.cc (fhandler_base::fsync): Ignore ERROR_INVALID_FUNCTION
|
||||
|
@ -1351,17 +1351,35 @@ conv_path_list (const char *src, char *dst, size_t size, int to_posix)
|
||||
bool saw_empty = false;
|
||||
do
|
||||
{
|
||||
char *s = strccpy (srcbuf, &src, src_delim);
|
||||
size_t len = s - srcbuf;
|
||||
char *srcpath = srcbuf;
|
||||
char *s = strccpy (srcpath, &src, src_delim);
|
||||
size_t len = s - srcpath;
|
||||
if (len >= NT_MAX_PATH)
|
||||
{
|
||||
err = ENAMETOOLONG;
|
||||
break;
|
||||
}
|
||||
/* Paths in Win32 path lists in the environment (%Path%), are often
|
||||
enclosed in quotes (usually paths with spaces). Trailing backslashes
|
||||
are common, too. Remove them. */
|
||||
if (to_posix == ENV_CVT && len)
|
||||
{
|
||||
if (*srcpath == '"')
|
||||
{
|
||||
++srcpath;
|
||||
*--s = '\0';
|
||||
len -= 2;
|
||||
}
|
||||
while (len && s[-1] == '\\')
|
||||
{
|
||||
*--s = '\0';
|
||||
--len;
|
||||
}
|
||||
}
|
||||
if (len)
|
||||
{
|
||||
++d;
|
||||
err = cygwin_conv_path (conv_fn, srcbuf, d, size - (d - dst));
|
||||
err = cygwin_conv_path (conv_fn, srcpath, d, size - (d - dst));
|
||||
}
|
||||
else if (!to_posix)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user