diff options
author | Ram Pai <linuxram@us.ibm.com> | 2009-06-26 17:41:50 -0700 |
---|---|---|
committer | Anthony Liguori <aliguori@us.ibm.com> | 2009-06-29 13:50:05 -0500 |
commit | 707c0dbc97cddfe8d2441b8259c6c526d99f2dd8 (patch) | |
tree | b577fac92b2f94e300f1ce73804febecb615fdc8 /cutils.c | |
parent | ab4e5602a88402fdf7109e5093cace35a7471699 (diff) | |
download | qemu-707c0dbc97cddfe8d2441b8259c6c526d99f2dd8.zip qemu-707c0dbc97cddfe8d2441b8259c6c526d99f2dd8.tar.gz qemu-707c0dbc97cddfe8d2441b8259c6c526d99f2dd8.tar.bz2 |
support colon in filenames
Problem: It is impossible to feed filenames with the character colon because
qemu interprets such names as a protocol. For example filename scsi:0, is
interpreted as a protocol by name "scsi".
This patch allows user to espace colon characters. For example the above
filename can now be expressed either as 'scsi\:0' or as file:scsi:0
anything following the "file:" tag is interpreted verbatin. However if "file:"
tag is omitted then any colon characters in the string must be escaped using
backslash.
Here are couple of examples:
scsi\:0\:abc is a local file scsi:0:abc
http\://myweb is a local file by name http://myweb
file:scsi:0:abc is a local file scsi:0:abc
file:http://myweb is a local file by name http://myweb
Signed-off-by: Ram Pai <linuxram@us.ibm.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Diffstat (limited to 'cutils.c')
-rw-r--r-- | cutils.c | 26 |
1 files changed, 26 insertions, 0 deletions
@@ -24,6 +24,32 @@ #include "qemu-common.h" #include "host-utils.h" +/* + * fill first 'len' characters of 'buff' with pruned + * contents of 'str' delimited by the character 'c'. + * Escape character '\' is pruned off. + * Return pointer to the delimiting character. + */ +const char *fill_token(char *buf, const int len, const char *str, const char c) +{ + const char *p=str; + char *q=buf; + + while (p < str+len-1) { + if (*p == c) + break; + if (*p == '\\') { + p++; + if (*p == '\0') + break; + } + *q++ = *p++; + } + *q='\0'; + return p; +} + + void pstrcpy(char *buf, int buf_size, const char *str) { int c; |