qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] drive_add: file names with spaces


From: Dr. David Alan Gilbert
Subject: Re: [Qemu-devel] drive_add: file names with spaces
Date: Mon, 30 Oct 2017 17:03:36 +0000
User-agent: Mutt/1.9.1 (2017-09-22)

* Programmingkid (address@hidden) wrote:
> 
> > On Oct 30, 2017, at 10:32 AM, Dr. David Alan Gilbert <address@hidden> wrote:
> > 
> > * Programmingkid (address@hidden) wrote:
> >> 
> >>> On Oct 29, 2017, at 6:21 AM, Dr. David Alan Gilbert <address@hidden> 
> >>> wrote:
> >>> 
> >>> * Eric Blake (address@hidden) wrote:
> >>>> On 10/28/2017 06:44 AM, Programmingkid wrote:
> >>>>> I'm trying to use an image file that has spaces in its file name (and 
> >>>>> sometimes in the path) to be used as a USB flash drive. When I try 
> >>>>> adding the image file using the drive_add command I see this error: 
> >>>>> drive_add: extraneous characters at the end of the line
> >>>>> 
> >>>>> I have tried using single and double quotes around the file name but 
> >>>>> this does not help. Is there a way to use files that have spaces in 
> >>>>> it's name with drive_add?
> >>>> 
> >>>> Not in HMP, which lacks quoting.  (Unless you want to patch HMP to learn
> >>>> quoting)
> >>> 
> >>> I think it's already got that code at least in some places.
> >>> monitor_parse_arguments calls get_str, and get_str understands " wrapped
> >>> arguments.
> >>> 
> >>> drive_add 1 "file=foo bar"
> >>> 
> >>> gives me:
> >>> Could not open 'foo bar': No such file or directory
> >>> 
> >>> so I think that's doing the right thing.
> >>> 
> >>> Dave
> >>> 
> >>>> But using spaces in filenames works fine in QMP.
> >>>> 
> >>>> -- 
> >>>> Eric Blake, Principal Software Engineer
> >>>> Red Hat, Inc.           +1-919-301-3266
> >>>> Virtualization:  qemu.org | libvirt.org
> >>>> 
> >>> 
> >>> 
> >>> --
> >>> Dr. David Alan Gilbert / address@hidden / Manchester, UK
> >> 
> >> Thank you so much for this info. It solved my problem :)
> > 
> > Now, the real challenge is how to deal with a filename with a comma in;
> >   drive_add 1 "file=foo,bar"
> >   Could not open 'foo': No such file or directory
> 
> I think the logical thing to do is not to depend on characters like spaces 
> and commas to indicate a change in field. This would mean a change to how the 
> user could specify arguments to a command. My first thought is to use a 
> json-like syntax like this:
> 
> CMD: drive_add
> File: <full path of file>
> ID: mydrive
> 
> but this would still have the problem with newline characters in the file 
> name. Spaces, commas, single and double quotes would be usable. Newline 
> characters in file names are rare enough that we might consider ignoring this 
> case altogether. 

Well then you may as well almost use JSON.

> Another option is using a tag based system that would be able to handle every 
> character. Something like this:
> 
> drive_add 0 <file> /users/user/some path </file> <id> mydrive </id>
> 
> The only way this system would fail if the text "</file>" was in the file 
> name. 
> 
> Any solutions you wish to share?

There aren't many simple solutions; almost everything requires
a way to escape whatever character/tag you choose because that
could validly be in a filename.

If there's a way to escape the , so you could do something like
drive_add 1 "file=foo\,bar"

(I'm not sure if that's \, or \\, or whatever) then that would
work; but I've not dug to find the code that splits the file= opts
to find if it already has an escape mechanism)

Dave

--
Dr. David Alan Gilbert / address@hidden / Manchester, UK



reply via email to

[Prev in Thread] Current Thread [Next in Thread]