From 3fd62c76c261e10658a1ba365710ee26b6fb34fe Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 14 Mar 2009 16:31:57 +0000 Subject: (convert_Path_to_windows32): Fix last change. Fixes Savannah bug #25412. --- ChangeLog | 3 +++ w32/pathstuff.c | 12 +++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 66934ff..cbdb12c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2009-03-14 Eli Zaretskii + * w32/pathstuff.c (convert_Path_to_windows32): Fix last change. + Fixes Savannah bug #25412. + * w32/subproc/sub_proc.c : Update Copyright years. Add prototype for xmalloc. (find_file): Accept 3 arguments PATH_VAR, FULL_FNAME, and FULL_LEN diff --git a/w32/pathstuff.c b/w32/pathstuff.c index 6f712d1..bb790f0 100644 --- a/w32/pathstuff.c +++ b/w32/pathstuff.c @@ -1,6 +1,6 @@ /* Path conversion for Windows pathnames. Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, -2007 Free Software Foundation, Inc. +2007, 2009 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -49,6 +49,9 @@ convert_Path_to_windows32(char *Path, char to_delim) char *p; /* points to element of old Path */ /* is this a multi-element Path ? */ + /* FIXME: Perhaps use ":;\"" in strpbrk to convert all quotes to + delimiters as well, as a way to handle quoted directories in + PATH? */ for (p = Path, etok = strpbrk(p, ":;"); etok; etok = strpbrk(p, ":;")) @@ -74,8 +77,11 @@ convert_Path_to_windows32(char *Path, char to_delim) for (p++; *p && *p != '"'; p++) /* skip quoted part */ ; etok = strpbrk(p, ":;"); /* find next delimiter */ - *etok = to_delim; - p = ++etok; + if (etok) { + *etok = to_delim; + p = ++etok; + } else + p += strlen(p); } else { /* found another one, no drive letter */ *etok = to_delim; -- cgit v1.2.3