]> git.ipfire.org Git - thirdparty/libcgroup.git/commitdiff
lscgroup: don't trim "/"
authorIvana Hutarova Varekova <varekova@redhat.com>
Fri, 22 Jun 2012 19:13:56 +0000 (21:13 +0200)
committerIvana Hutarova Varekova <varekova@redhat.com>
Fri, 22 Jun 2012 19:13:56 +0000 (21:13 +0200)
The present version of lscgroup trimmed "/" signs from the end of output
path.
    The functionality was necessary because of cg_build_path function add
useless "/" characters to the patch. This is fixed by the previous api
patch.
    Moreover other unix commands (du, grep) leave the format of path as it
was added in input (with all typed "/" characters). Thus lscgroup should
not remove "/" which were added in command line.

    Example
    old version:
    $ lscgroup memory://abc///
    memory:/abc///
    memory:/abc///gh
    memory:/abc///def
    $ lscgroup
    cpuset:/
    cpuset:/3

    new version:
    $ lscgroup memory://abc///
    memory://abc///
    memory://abc///gh
    memory://abc///def
    $ lscgroup
    cpuset:/
    cpuset:/3

Signed-off-by: Ivana Hutarova Varekova <varekova@redhat.com>
Acked-by: Dhaval Giani <dhaval.giani@gmail.com>
src/tools/lscgroup.c

index c16f193bc2d60b1dc45d0238964b5710d5bf4eab..3b74aadb480400ea6742e3299a5e33f95ef02eec 100644 (file)
@@ -87,20 +87,25 @@ static int display_controller_data(char *input_path, char *controller, char *nam
        int ret;
        void *handle;
        struct cgroup_file_info info;
+       char cgroup_dir_path[FILENAME_MAX];
        char input_dir_path[FILENAME_MAX];
        int lvl;
        int len;
 
-       strncpy(input_dir_path, input_path, FILENAME_MAX);
-       /* remove problematic  '/' characters from input path */
-       trim_filepath(input_dir_path);
-
-       ret = cgroup_walk_tree_begin(controller, input_dir_path, 0,
+       ret = cgroup_walk_tree_begin(controller, input_path, 0,
                &handle, &info, &lvl);
        if (ret != 0)
                return ret;
 
-       len  = strlen(info.full_path) - strlen(input_dir_path) - 1;
+       strncpy(cgroup_dir_path, info.full_path, FILENAME_MAX);
+       /* remove problematic  '/' characters from cgroup directory path*/
+       trim_filepath(cgroup_dir_path);
+
+       strncpy(input_dir_path, input_path, FILENAME_MAX);
+
+       /* remove problematic  '/' characters from input directory path*/
+       trim_filepath(input_dir_path);
+       len  = strlen(cgroup_dir_path) - strlen(input_dir_path);
        print_info(&info, name, len);
        while ((ret = cgroup_walk_tree_next(0, &handle, &info, lvl)) == 0)
                print_info(&info, name, len);