From cf7d897f9335fdf477735465e5dc683b9d60c771 Mon Sep 17 00:00:00 2001 From: Matthias Bolte Date: Fri, 27 May 2011 17:13:58 +0200 Subject: [PATCH] openvz: Restore original EOF handling in openvzGetProcessInfo This function is also affected by getline conversion. But this didn't result in a regression in general, because the difference would only affect the behavior of the function when the line in /proc/vz/vestat for the given vpsid wasn't found. Under normal conditions this should not happen. --- src/openvz/openvz_driver.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/openvz/openvz_driver.c b/src/openvz/openvz_driver.c index ae951a28dc..e24b5d8f96 100644 --- a/src/openvz/openvz_driver.c +++ b/src/openvz/openvz_driver.c @@ -1507,6 +1507,7 @@ static int openvzGetProcessInfo(unsigned long long *cpuTime, int vpsid) unsigned long long usertime, systime, nicetime; int readvps = vpsid + 1; /* ensure readvps is initially different */ ssize_t ret; + int err = 0; /* read statistic from /proc/vz/vestat. sample: @@ -1522,8 +1523,10 @@ Version: 2.2 /*search line with VEID=vpsid*/ while (1) { ret = getline(&line, &line_size, fp); - if (ret <= 0) + if (ret < 0) { + err = !feof(fp); break; + } if (sscanf (line, "%d %llu %llu %llu", &readvps, &usertime, &nicetime, &systime) == 4 @@ -1538,7 +1541,7 @@ Version: 2.2 VIR_FREE(line); VIR_FORCE_FCLOSE(fp); - if (ret < 0) + if (err) return -1; if (readvps != vpsid) /*not found*/ -- 2.47.2