]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
openvz: Restore original EOF handling in openvzGetProcessInfo
authorMatthias Bolte <matthias.bolte@googlemail.com>
Fri, 27 May 2011 15:13:58 +0000 (17:13 +0200)
committerMatthias Bolte <matthias.bolte@googlemail.com>
Tue, 31 May 2011 18:26:05 +0000 (20:26 +0200)
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

index ae951a28dc8c3cd8d15722b6ca1cd6cc66a49d4b..e24b5d8f9652945ac8d1c59be49150b29519214e 100644 (file)
@@ -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*/