From: Daniel Lezcano Date: Wed, 19 Aug 2009 20:14:17 +0000 (+0200) Subject: Fix lxc-cgroup-get X-Git-Tag: lxc_0_6_4~96 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=70f7755e98bfd3d084cbb9ace3c9e7c122c41f0b;p=thirdparty%2Flxc.git Fix lxc-cgroup-get Make lxc_cgroup_get returns the number of bytes read and use this value to "printf" it. Signed-off-by: Daniel Lezcano --- diff --git a/src/lxc/cgroup.c b/src/lxc/cgroup.c index d055eaac5..3711eee65 100644 --- a/src/lxc/cgroup.c +++ b/src/lxc/cgroup.c @@ -198,13 +198,10 @@ int lxc_cgroup_get(const char *name, const char *subsystem, return -1; } - if (read(fd, value, len) < 0) { + ret = read(fd, value, len); + if (ret < 0) ERROR("read %s : %s", path, strerror(errno)); - goto out; - } - - ret = 0; -out: + close(fd); return ret; } diff --git a/src/lxc/lxc.h b/src/lxc/lxc.h index db5a4dcd3..f7ae86519 100644 --- a/src/lxc/lxc.h +++ b/src/lxc/lxc.h @@ -164,7 +164,7 @@ extern int lxc_cgroup_set(const char *name, const char *subsystem, const char *v * @subsystem : the subsystem * @value : the value to be set * @len : the len of the value variable - * Returns 0 on success, < 0 otherwise + * Returns the number of bytes read, < 0 on error */ extern int lxc_cgroup_get(const char *name, const char *subsystem, char *value, size_t len); diff --git a/src/lxc/lxc_cgroup.c b/src/lxc/lxc_cgroup.c index 5dfd6ac05..ae1c96488 100644 --- a/src/lxc/lxc_cgroup.c +++ b/src/lxc/lxc_cgroup.c @@ -83,14 +83,17 @@ int main(int argc, char *argv[]) } } else { const unsigned long len = 4096; + int ret; char buffer[len]; - if (lxc_cgroup_get(my_args.name, subsystem, buffer, len)) { + + ret = lxc_cgroup_get(my_args.name, subsystem, buffer, len); + if (ret < 0) { ERROR("failed to retrieve value of '%s' for '%s'", - subsystem, my_args.name); + subsystem, my_args.name); return -1; } - printf("%s", buffer); + printf("%*s", ret, buffer); } return 0;