On 30.12.2012 10:25, Osier Yang wrote: > On 2012年12月29日 17:09, Michal Privoznik wrote: >> Since 586502189edf9fd0f89a83de96717a2ea826fdb0 qemu commit, the log >> lines reporting chardev's path has changed from: >> >> $ ./x86_64-softmmu/qemu-system-x86_64 -serial pty -serial pty -monitor >> pty >> char device redirected to /dev/pts/5 >> char device redirected to /dev/pts/6 >> char device redirected to /dev/pts/7 >> >> to: >> >> $ ./x86_64-softmmu/qemu-system-x86_64 -serial pty -serial pty -monitor >> pty >> char device compat_monitor0 redirected to /dev/pts/5 >> char device serial0 redirected to /dev/pts/6 >> char device serial1 redirected to /dev/pts/7 >> >> However, with current code we are not prepared for such change, which >> results in us being unable to start any domain. >> --- >> src/qemu/qemu_process.c | 33 +++++++++++++++++++++++++++++---- >> 1 file changed, 29 insertions(+), 4 deletions(-) >> >> diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c >> index eac6553..29bd082 100644 >> --- a/src/qemu/qemu_process.c >> +++ b/src/qemu/qemu_process.c >> @@ -1431,22 +1431,43 @@ cleanup: >> * >> * char device redirected to /dev/pts/3 >> * >> + * However, since 1.4 the line we are looking for has changed to: >> + * >> + * char device<alias> redirected to /some/path >> + * >> * Returns -1 for error, 0 success, 1 continue reading >> */ >> static int >> qemuProcessExtractTTYPath(const char *haystack, >> size_t *offset, >> + const char *alias, >> char **path) >> { >> - static const char needle[] = "char device redirected to"; >> - char *tmp, *dev; >> + static const char *needle[] = {"char device", "redirected to"}; >> + const char *tmp, *dev; >> >> VIR_FREE(*path); >> /* First look for our magic string */ >> - if (!(tmp = strstr(haystack + *offset, needle))) { >> + if (!(tmp = strstr(haystack + *offset, needle[0]))) >> return 1; >> + >> + tmp += strlen(needle[0]); >> + virSkipSpaces(&tmp); >> + >> + if (STRPREFIX(tmp, "char")) { > > I don't see why it's the new style with "char" here with regard > to the new output string like "char device serial1 redirected > to /dev/pts/7". Should it be below instead? > > if (!STRPREFIX(tmp, "redirected")) > or > if (STRPREFIX(tmp, alias)) > I should have documented that. If you take look at qemuBuildChrChardevStr() you can see, that all char devices IDs are constructed as "id=char%s", where %s is substituted device alias. Hence qemu sees 'charalias0' instead of bare 'alias0'. Therefore we should check for 'char' prefix. Michal -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list