]> git.proxmox.com Git - mirror_qemu.git/blobdiff - block.c
Revert "support colon in filenames"
[mirror_qemu.git] / block.c
diff --git a/block.c b/block.c
index 3fe9317023d443c5221ccafe9c58855912a162af..aca5a6d282fb0d5a0f3e6d14fc22f83067e40735 100644 (file)
--- a/block.c
+++ b/block.c
@@ -225,7 +225,7 @@ static BlockDriver *find_protocol(const char *filename)
 {
     BlockDriver *drv1;
     char protocol[128];
-    int len = strnlen(filename, 127)+1;
+    int len;
     const char *p;
 
 #ifdef _WIN32
@@ -233,9 +233,14 @@ static BlockDriver *find_protocol(const char *filename)
         is_windows_drive_prefix(filename))
         return bdrv_find_format("raw");
 #endif
-    p = fill_token(protocol, len, filename, ':');
-    if (*p != ':')
+    p = strchr(filename, ':');
+    if (!p)
         return bdrv_find_format("raw");
+    len = p - filename;
+    if (len > sizeof(protocol) - 1)
+        len = sizeof(protocol) - 1;
+    memcpy(protocol, filename, len);
+    protocol[len] = '\0';
     for(drv1 = first_drv; drv1 != NULL; drv1 = drv1->next) {
         if (drv1->protocol_name &&
             !strcmp(drv1->protocol_name, protocol))
@@ -409,9 +414,9 @@ int bdrv_open2(BlockDriverState *bs, const char *filename, int flags,
         open_flags = BDRV_O_RDWR | (flags & BDRV_O_CACHE_MASK);
     else
         open_flags = flags & ~(BDRV_O_FILE | BDRV_O_SNAPSHOT);
-    ret = bdrv_open3(bs, filename, open_flags, drv);
+    ret = drv->bdrv_open(bs, filename, open_flags);
     if ((ret == -EACCES || ret == -EPERM) && !(flags & BDRV_O_FILE)) {
-        ret = bdrv_open3(bs, filename, open_flags & ~BDRV_O_RDWR, drv);
+        ret = drv->bdrv_open(bs, filename, open_flags & ~BDRV_O_RDWR);
         bs->read_only = 1;
     }
     if (ret < 0) {
@@ -456,18 +461,6 @@ int bdrv_open2(BlockDriverState *bs, const char *filename, int flags,
     return 0;
 }
 
-int bdrv_open3(BlockDriverState *bs, const char *filename, int flags, BlockDriver *drv)
-{
-    char myfile[PATH_MAX];
-    const char *f;
-
-    if (!strstart(filename, "file:", &f)) {
-        fill_token(myfile, PATH_MAX, filename, '\0');
-        return drv->bdrv_open(bs,myfile,flags);
-    }
-    return drv->bdrv_open(bs,f,flags);
-}
-
 void bdrv_close(BlockDriverState *bs)
 {
     if (bs->drv) {