On Sat, Aug 07, 2010 at 09:54:34PM +0200, Matthias Bolte wrote: > 2010/8/7 Matthias Bolte <matthias.bolte@xxxxxxxxxxxxxx>: > > For parsing try to match by datastore mount path first, if that > > fails fallback to /vmfs/volumes/<datastore>/<path> parsing. This > > also fixes problems with GSX on Windows. Because GSX on Windows > > doesn't use /vmfs/volumes/ style file names. > > > > For formatting use the datastore mount path too, instead of using > > /vmfs/volumes/<datastore>/<path> as fixed format. > > --- > > src/esx/esx_driver.c | 372 +++++++++++++++++++++++++++++++------------------ > > 1 files changed, 235 insertions(+), 137 deletions(-) > > > > > + > > + /* Strip trailing separators */ > > + length = strlen(hostMount->mountInfo->path); > > + > > + if (length > 0) { > > + tmp = hostMount->mountInfo->path + length - 1; > > + > > + while (*tmp == separator && tmp > hostMount->mountInfo->path) { > > + --tmp; > > } > > [skip removed code] > > > + length = tmp - hostMount->mountInfo->path; > > + } > > + > > + /* Format as <mount>[/<directory>]/<file> */ > > + virBufferAdd(&buffer, hostMount->mountInfo->path, length); > > + > > The trailing separators stripping it totally broken :( > > This incremental diff fixes that: > > > diff --git a/src/esx/esx_driver.c b/src/esx/esx_driver.c > index 322c588..4fb357b 100644 > --- a/src/esx/esx_driver.c > +++ b/src/esx/esx_driver.c > @@ -286,14 +286,8 @@ esxFormatVMXFileName(const char *datastorePath, > void *opaque) > /* Strip trailing separators */ > length = strlen(hostMount->mountInfo->path); > > - if (length > 0) { > - tmp = hostMount->mountInfo->path + length - 1; > - > - while (*tmp == separator && tmp > hostMount->mountInfo->path) { > - --tmp; > - } > - > - length = tmp - hostMount->mountInfo->path; > + while (length > 0 && hostMount->mountInfo->path[length - 1] == separator) { > + --length; > } > > /* Format as <mount>[/<directory>]/<file> */ > Okay, ACK :-) Daniel -- Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/ daniel@xxxxxxxxxxxx | Rpmfind RPM search engine http://rpmfind.net/ http://veillard.com/ | virtualization library http://libvirt.org/ -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list