[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH] libxl/libxl_qmp.c: Fix code style in qmp_next()
Make select loop more readable. Signed-off-by: Zhang Chen <zhangchen.fnst@xxxxxxxxxxxxxx> --- tools/libxl/libxl_qmp.c | 123 ++++++++++++++++++++++++------------------------ 1 file changed, 61 insertions(+), 62 deletions(-) diff --git a/tools/libxl/libxl_qmp.c b/tools/libxl/libxl_qmp.c index ad22ad4..123a6bf 100644 --- a/tools/libxl/libxl_qmp.c +++ b/tools/libxl/libxl_qmp.c @@ -427,79 +427,78 @@ static int qmp_next(libxl__gc *gc, libxl__qmp_handler *qmp) size_t incomplete_size = 0; int rc = 0; - do { - fd_set rfds; - int ret = 0; - struct timeval timeout = { - .tv_sec = qmp->timeout, - .tv_usec = 0, - }; + fd_set rfds; + int ret = 0; + struct timeval timeout = { + .tv_sec = qmp->timeout, + .tv_usec = 0, + }; - FD_ZERO(&rfds); - FD_SET(qmp->qmp_fd, &rfds); + FD_ZERO(&rfds); + FD_SET(qmp->qmp_fd, &rfds); + do { ret = select(qmp->qmp_fd + 1, &rfds, NULL, NULL, &timeout); - if (ret == 0) { - LOGD(ERROR, qmp->domid, "timeout"); - return -1; - } else if (ret < 0) { - if (errno == EINTR) - continue; - LOGED(ERROR, qmp->domid, "Select error"); - return -1; - } + } while (ret == -1 && errno == EINTR); - rd = read(qmp->qmp_fd, qmp->buffer, QMP_RECEIVE_BUFFER_SIZE); - if (rd == 0) { - LOGD(ERROR, qmp->domid, "Unexpected end of socket"); - return -1; - } else if (rd < 0) { - LOGED(ERROR, qmp->domid, "Socket read error"); - return rd; - } - qmp->buffer[rd] = '\0'; - - DEBUG_REPORT_RECEIVED(qmp->domid, qmp->buffer, rd); - - do { - char *end = NULL; - if (incomplete) { - size_t current_pos = s - incomplete; - incomplete = libxl__realloc(gc, incomplete, - incomplete_size + rd + 1); - strncat(incomplete + incomplete_size, qmp->buffer, rd); - s = incomplete + current_pos; - incomplete_size += rd; - s_end = incomplete + incomplete_size; - } else { - incomplete = libxl__strndup(gc, qmp->buffer, rd); - incomplete_size = rd; - s = incomplete; - s_end = s + rd; - rd = 0; - } + if (ret == 0) { + LOGD(ERROR, qmp->domid, "timeout"); + return -1; + } else if (ret < 0) { + LOGED(ERROR, qmp->domid, "Select error"); + return -1; + } - end = strstr(s, "\r\n"); - if (end) { - libxl__json_object *o = NULL; + rd = read(qmp->qmp_fd, qmp->buffer, QMP_RECEIVE_BUFFER_SIZE); + if (rd == 0) { + LOGD(ERROR, qmp->domid, "Unexpected end of socket"); + return -1; + } else if (rd < 0) { + LOGED(ERROR, qmp->domid, "Socket read error"); + return rd; + } + qmp->buffer[rd] = '\0'; + + DEBUG_REPORT_RECEIVED(qmp->domid, qmp->buffer, rd); - *end = '\0'; + do { + char *end = NULL; + if (incomplete) { + size_t current_pos = s - incomplete; + incomplete = libxl__realloc(gc, incomplete, + incomplete_size + rd + 1); + strncat(incomplete + incomplete_size, qmp->buffer, rd); + s = incomplete + current_pos; + incomplete_size += rd; + s_end = incomplete + incomplete_size; + } else { + incomplete = libxl__strndup(gc, qmp->buffer, rd); + incomplete_size = rd; + s = incomplete; + s_end = s + rd; + rd = 0; + } - o = libxl__json_parse(gc, s); + end = strstr(s, "\r\n"); + if (end) { + libxl__json_object *o = NULL; - if (o) { - rc = qmp_handle_response(gc, qmp, o); - } else { - LOGD(ERROR, qmp->domid, "Parse error of : %s", s); - return -1; - } + *end = '\0'; - s = end + 2; + o = libxl__json_parse(gc, s); + + if (o) { + rc = qmp_handle_response(gc, qmp, o); } else { - break; + LOGD(ERROR, qmp->domid, "Parse error of : %s", s); + return -1; } - } while (s < s_end); - } while (s < s_end); + + s = end + 2; + } else { + break; + } + } while (s < s_end); return rc; } -- 2.7.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |