size_t n;
struct virLXCMeminfo meminfo;
g_auto(virBuffer) buffer = VIR_BUFFER_INITIALIZER;
+ const char *new_meminfo = NULL;
if (virLXCCgroupGetMeminfo(&meminfo) < 0) {
virErrorSetErrnoFromLastError();
return -errno;
}
- if (fseek(fp, offset, SEEK_SET) < 0) {
- virReportSystemError(errno, "%s", _("fseek failed"));
- return -errno;
- }
-
res = -1;
while (getline(&line, &n, fp) > 0) {
char *ptr = strchr(line, ':');
}
}
- res = strlen(virBufferCurrentContent(&buffer));
+
+ new_meminfo = virBufferCurrentContent(&buffer);
+ res = virBufferUse(&buffer);
+
+ if (offset > res)
+ return 0;
+
+ res -= offset;
+
if (res > size)
res = size;
- memcpy(buf, virBufferCurrentContent(&buffer), res);
+ memcpy(buf, new_meminfo + offset, res);
return res;
}