* Dhaval Giani <[email protected]> [2008-12-29 11:53:31]: > ok, I figured out my mistake. Is this one any better? > > > --- > api.c | 29 +++++++++++++---------------- > 1 file changed, 13 insertions(+), 16 deletions(-) > > Index: trunk/api.c > =================================================================== > --- trunk.orig/api.c 2008-12-22 14:18:26.000000000 +0530 > +++ trunk/api.c 2008-12-29 11:52:22.000000000 +0530 > @@ -1371,38 +1371,37 @@ open_err: > * will assume that the callers have taken care of everything. > * Including the locking. > */ > -static char *cg_rd_ctrl_file(char *subsys, char *cgroup, char *file) > +static int cg_rd_ctrl_file(char *subsys, char *cgroup, char *file, char > **value) > { > - char *value; > char path[FILENAME_MAX]; > FILE *ctrl_file; > int ret; > > if (!cg_build_path_locked(cgroup, path, subsys)) > - return NULL; > + return ECGFAIL; > > strcat(path, file); > ctrl_file = fopen(path, "r"); > if (!ctrl_file) > - return NULL; > + return ECGROUPVALUENOTEXIST; > > - value = malloc(CG_VALUE_MAX); > - if (!value) > - return NULL; > + *value = malloc(CG_VALUE_MAX); > + if (!*value) > + return ECGOTHER; > > /* > * using %as crashes when we try to read from files like > * memory.stat > */ > - ret = fscanf(ctrl_file, "%s", value); > + ret = fscanf(ctrl_file, "%s", *value); > if (ret == 0 || ret == EOF) { > - free(value); > - value = NULL; > + free(*value); > + *value = NULL; > } > > fclose(ctrl_file); > > - return value; > + return 0; > } > > /* > @@ -1461,12 +1460,10 @@ static int cgroup_fill_cgc(struct dirent > } > > if (strcmp(ctrl_name, cg_mount_table[index].name) == 0) { > - ctrl_value = cg_rd_ctrl_file(cg_mount_table[index].name, > - cgroup->name, ctrl_dir->d_name); > - if (!ctrl_value) { > - error = ECGFAIL; > + error = cg_rd_ctrl_file(cg_mount_table[index].name, > + cgroup->name, ctrl_dir->d_name, &ctrl_value); > + if (error || !ctrl_value) > goto fill_error; > - } > > if (cgroup_add_value_string(cgc, ctrl_dir->d_name, > ctrl_value)) {
Yes, it seems syntactically and semantically correct :) Acked-by: Balbir Singh <[email protected]> -- Balbir ------------------------------------------------------------------------------ _______________________________________________ Libcg-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/libcg-devel
