From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kevin Wolf Subject: Re: [PATCH] support colon in filenames Date: Fri, 26 Jun 2009 08:53:48 +0200 Message-ID: <4A44707C.9060903@kevin-wolf.de> References: <1245862739.6278.7.camel@localhost> <1245866233.6278.17.camel@localhost> <4A434009.5010009@redhat.com> <1245952322.6278.77.camel@localhost> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: 7bit Cc: kvm-devel , Anthony Liguori , qemu-devel@nongnu.org To: linuxram@us.ibm.com Return-path: Received: from mo-p00-ob.rzone.de ([81.169.146.160]:58977 "EHLO mo-p00-ob.rzone.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750853AbZFZGzD (ORCPT ); Fri, 26 Jun 2009 02:55:03 -0400 In-Reply-To: <1245952322.6278.77.camel@localhost> Sender: kvm-owner@vger.kernel.org List-ID: Ram Pai schrieb: > On Thu, 2009-06-25 at 11:14 +0200, Kevin Wolf wrote: >> Ram Pai schrieb: >>> Copying the qemu-devel mailing list too. >>> >>> On Wed, 2009-06-24 at 09:58 -0700, Ram Pai wrote: >>>> Problem: It is impossible to feed filenames with the character colon because >>>> qemu interprets such names as a protocol. For example a filename scsi:0, >>>> is interpreted as a protocol by name "scsi". >>>> >>>> This patch allows users to espace colon characters. For example the above filename >>>> can now be expressed as 'scsi\:0' >>>> >>>> Here are couple of examples: >>>> >>>> ndb:\::9999 is treated as a ndb protocol with a hostname ':' on port 9999 >>>> scsi\:0\:abc is a local file scsi:0:abc >>>> http\://myweb is a local file by name http://myweb >>>> nbd\::localhost:2558 is a protocol by name nbd: >> Is there any use in having a host named : or protocol nbd:? I don't >> think so. > > I do not see the utility either. However if one does find a novel use, > the syntax is expressive enough. > >> The other examples could be achieved much easier by assigning >> the file: protocol to raw, so we would have: >> file:scsi:0:abc >> file:http://myweb > > yes. This is something if implemented; would help. But then its another > mechanism for expression. It has to be a separate patch built on top of > this patch, because you will still need escaping characters like space, > comma, etc The problem with the handling of colon, comma and space is that there isn't one central place where they are used in some other way and could be escaped. As you know, colons are interpreted when extracting the protocol from the file name, so somewhere in block.c. Commas are interpreted when separating options, somewhere in vl.c. Spaces, I think, aren't a problem in qemu itself but must be properly escaped in the shell. I think you see why it's difficult to handle all cases uniformly. >> This solution wasn't accepted last time because it wouldn't solve the >> problems with other characters like commas (they need to be escaped as >> double comma on the command line) and that won't be solved by this patch >> either. > > This patch does handle commas and any other character as long as it is > escaped using backslashes. > > I just checked the man page and it says that commas in the filename can > be escaped by commas :( . Ok i will add that feature to my patch and > resend it. Try it, it works with no change on your side. Commas are handled elsewhere. It's just that you still need to say "file=foo,,bar" instead of "file=foo\,bar" because otherwise it would be split up into two options "file=foo\" and "bar". Kevin