On Tue, Dec 8, 2009 at 7:03 PM, Jan Safranek <[email protected]> wrote:
> When a group parameter has empty value (like uninitialized cpuset.cpus),
> libcgroup does not return this parameter value - it returns
> ECGROUPVALUENOTEXIST instead.
>
> I think reading whole parameter file instead of just '%s' is the right thing
> to do - it helps also with multiline values, like cpuacct.stat.
>

I am not so sure that I agree with this. I will go through with it
again in the morning with a clear mind :-) and then send in comments.

> Signed-off-by: Jan Safranek <[email protected]>
> ---
>
>  src/api.c |   10 +++++++---
>  1 files changed, 7 insertions(+), 3 deletions(-)
>
> diff --git a/src/api.c b/src/api.c
> index cfcf507..00bce0a 100644
> --- a/src/api.c
> +++ b/src/api.c
> @@ -1775,7 +1775,7 @@ static int cg_rd_ctrl_file(char *subsys, char *cgroup, 
> char *file, char **value)
>        if (!ctrl_file)
>                return ECGROUPVALUENOTEXIST;
>
> -       *value = malloc(CG_VALUE_MAX);
> +       *value = calloc(CG_VALUE_MAX, 1);
>        if (!*value) {
>                last_errno = errno;
>                return ECGOTHER;
> @@ -1785,10 +1785,14 @@ static int cg_rd_ctrl_file(char *subsys, char 
> *cgroup, char *file, char **value)
>         * using %as crashes when we try to read from files like
>         * memory.stat
>         */
> -       ret = fscanf(ctrl_file, "%s", *value);
> -       if (ret == 0 || ret == EOF) {
> +       ret = fread(*value, 1, CG_VALUE_MAX-1, ctrl_file);
> +       if (ret < 0) {
>                free(*value);
>                *value = NULL;
> +       } else {
> +               /* remove trailing \n */
> +               if (ret > 0 && (*value)[ret-1] == '\n')
> +                       (*value)[ret-1] = '\0';
>        }
>
>        fclose(ctrl_file);
>
>



-- 

Joan Crawford  - "I, Joan Crawford, I believe in the dollar.
Everything I earn, I spend." -
http://www.brainyquote.com/quotes/authors/j/joan_crawford.html

------------------------------------------------------------------------------
Return on Information:
Google Enterprise Search pays you back
Get the facts.
http://p.sf.net/sfu/google-dev2dev
_______________________________________________
Libcg-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libcg-devel

Reply via email to