Skip to content
Snippets Groups Projects
Commit 959640da authored by Guido Günther's avatar Guido Günther
Browse files

New patch 0011-Fix-parsing-of-info-chardev-line-endings.patch

Fix parsing of 'info chardev' line endings
Thanks: Matthew Booth

Closes: #567818
parent 83902d96
No related branches found
No related tags found
No related merge requests found
From: Matthew Booth <mbooth@redhat.com>
Date: Wed, 6 Jan 2010 17:09:04 +0100
Subject: [PATCH] Fix parsing of 'info chardev' line endings
This change makes the 'info chardev' parser ignore any trailing
whitespace on a line. This fixes a specific problem handling a '\r\n'
line ending.
* src/qemu/qemu_monitor_text.c: Ignore trailing whitespace in
'info chardev' output.
---
src/qemu/qemu_monitor_text.c | 26 +++++++++++++++++---------
1 files changed, 17 insertions(+), 9 deletions(-)
diff --git a/src/qemu/qemu_monitor_text.c b/src/qemu/qemu_monitor_text.c
index ab361c6..5b9ced2 100644
--- a/src/qemu/qemu_monitor_text.c
+++ b/src/qemu/qemu_monitor_text.c
@@ -1705,15 +1705,26 @@ int qemuMonitorTextGetPtyPaths(qemuMonitorPtr mon,
goto cleanup;
}
- char *pos = reply; /* The current start of searching */
- char *end = pos + strlen(reply); /* The end of the reply string */
+ char *pos; /* The current start of searching */
+ char *next = reply; /* The start of the next line */
char *eol; /* The character which ends the current line */
+ char *end = reply + strlen(reply); /* The end of the reply string */
+
+ while (next) {
+ pos = next;
- while (pos < end) {
/* Split the output into lines */
eol = memchr(pos, '\n', end - pos);
- if (eol == NULL)
+ if (eol == NULL) {
eol = end;
+ next = NULL;
+ } else {
+ next = eol + 1;
+ }
+
+ /* Ignore all whitespace immediately before eol */
+ while (eol > pos && c_isspace(*(eol-1)))
+ eol -= 1;
/* Look for 'filename=pty:' */
#define NEEDLE "filename=pty:"
@@ -1721,13 +1732,13 @@ int qemuMonitorTextGetPtyPaths(qemuMonitorPtr mon,
/* If it's not there we can ignore this line */
if (!needle)
- goto next;
+ continue;
/* id is everthing from the beginning of the line to the ':'
* find ':' and turn it into a terminator */
char *colon = memchr(pos, ':', needle - pos);
if (colon == NULL)
- goto next;
+ continue;
*colon = '\0';
char *id = pos;
@@ -1747,9 +1758,6 @@ int qemuMonitorTextGetPtyPaths(qemuMonitorPtr mon,
goto cleanup;
}
#undef NEEDLE
-
- next:
- pos = eol + 1;
}
ret = 0;
--
......@@ -8,3 +8,4 @@
0008-qemu-Use-log-output-for-pty-assignment-if-info-chard.patch
0009-Fix-QEMU-driver-custom-domain-status-XML-extensions.patch
0010-Don-t-free-an-uninitalized-pointer-in-update_driver_.patch
0011-Fix-parsing-of-info-chardev-line-endings.patch
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment