--- qemu-0.9.0.20070921/block.c.orig 2007-09-23 17:04:21.000000000 +0200 +++ qemu-0.9.0.20070921/block.c 2007-09-23 17:18:39.000000000 +0200 @@ -349,7 +349,19 @@ bdrv_delete(bs1); get_tmp_filename(tmp_filename, sizeof(tmp_filename)); - realpath(filename, backing_filename); + if (realpath(filename, backing_filename) == NULL) { + if (strstart(filename, "fat:", NULL)) { + int i = strrchr(filename, ':') - filename; + + if ((filename[i-2] == ':') && isalpha(filename[i-1])) + i -= 1; /* workaround for DOS drive names */ + else + i += 1; + + strncpy(backing_filename, filename, i); + realpath(filename + i, backing_filename + i); + } + } if (bdrv_create(&bdrv_qcow2, tmp_filename, total_size, backing_filename, 0) < 0) { return -1;