On 05/09/2011 10:39 AM, Ivana Hutarova Varekova wrote:
> Most of the tools use <controllers>:<path> together with -g option
>     (cgcreate, cgget and cgclassify), this patch adds this option to
> cgdelete.
> 
> 
> Signed-off-by: Ivana Hutarova Varekova <[email protected]>
Acked-By: Jan Safranek <[email protected]>

> ---
> 
>  doc/man/cgdelete.1 |    7 +++++--
>  1 files changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/doc/man/cgdelete.1 b/doc/man/cgdelete.1
> index f1e17a7..a6adf1f 100644
> --- a/doc/man/cgdelete.1
> +++ b/doc/man/cgdelete.1
> @@ -7,16 +7,19 @@
>  cgdelete \- remove control group(s)
>  
>  .SH SYNOPSIS
> -\fBcgdelete\fR [\fB-h\fR] [\fB-r\fR] [<\fIcontrollers\fR>:\fI<path\fR>] ...
> +\fBcgdelete\fR [\fB-h\fR] [\fB-r\fR] [[\fB-g\fR]
> +<\fIcontrollers\fR>:\fI<path\fR>] ...
>  
>  .SH DESCRIPTION
>  The \fBcgdelete\fR
>  program removes all specified control groups.
>  
>  .TP
> -.B <controllers>:<path>
> +.B [-g] <controllers>:<path>
>  Defines control group to delete. There can be multiple control
>  groups specified.
> +.B -g
> +is optional.
>  
>  .TP
>  .B -h, --help
> diff --git a/src/tools/cgdelete.c b/src/tools/cgdelete.c
> index ba8e75f..c7b4721 100644
> --- a/src/tools/cgdelete.c
> +++ b/src/tools/cgdelete.c
> @@ -29,6 +29,7 @@ static struct option const long_options[] =
>  {
>       {"recursive", no_argument, NULL, 'r'},
>       {"help", no_argument, NULL, 'h'},
> +     {"group", required_argument, NULL, 'g'},
>       {NULL, 0, NULL, 0}
>  };
>  
> @@ -39,7 +40,8 @@ static void usage(int status, const char *program_name)
>                       " try %s --help' for more information.\n",
>                       program_name);
>       else {
> -             printf("Usage: %s [-h ] [-r ]  [<controllers>:<path>] ...\n",
> +             printf("Usage: %s [-h ] [-r ] "
> +                     "\[[-g] <controllers>:<path>] ...\n",
>                       program_name);
>       }
>  }
> @@ -52,26 +54,46 @@ int main(int argc, char *argv[])
>       int c;
>       int flags = 0;
>       int final_ret = 0;
> -     int capacity = 0;
>  
>       struct cgroup_group_spec **cgroup_list = NULL;
>       struct cgroup *cgroup;
>       struct cgroup_controller *cgc;
>  
> -     if (argc < 2) {
> -             usage(1, argv[0]);
> -             return -1;
> +     /* initialize libcg */
> +     ret = cgroup_init();
> +     if (ret) {
> +             fprintf(stderr, "%s: "
> +                     "libcgroup initialization failed: %s\n",
> +                     argv[0], cgroup_strerror(ret));
> +             goto err;
> +     }
> +
> +     cgroup_list = calloc(argc, sizeof(struct cgroup_group_spec *));
> +     if (cgroup_list == NULL) {
> +             fprintf(stderr, "%s: out of memory\n", argv[0]);
> +             ret = -1;
> +             goto err;
>       }
>  
>       /*
>        * Parse arguments
>        */
> -     while ((c = getopt_long(argc, argv, "rh",
> +     while ((c = getopt_long(argc, argv, "rhg:",
>               long_options, NULL)) > 0) {
>               switch (c) {
>               case 'r':
>                       flags |= CGFLAG_DELETE_RECURSIVE;
>                       break;
> +             case 'g':
> +                     ret = parse_cgroup_spec(cgroup_list, optarg, argc);
> +                     if (ret != 0) {
> +                             fprintf(stderr,
> +                                     "%s: error parsing cgroup '%s'\n",
> +                                     argv[0], optarg);
> +                             ret = -1;
> +                             goto err;
> +                     }
> +                     break;
>               case 'h':
>                       usage(0, argv[0]);
>                       ret = 0;
> @@ -83,32 +105,9 @@ int main(int argc, char *argv[])
>               }
>       }
>  
> -     if (optind >= argc) {
> -             usage(1, argv[0]);
> -             ret = -1;
> -             goto err;
> -     }
> -
> -     /* initialize libcg */
> -     ret = cgroup_init();
> -     if (ret) {
> -             fprintf(stderr, "%s: "
> -                     "libcgroup initialization failed: %s\n",
> -                     argv[0], cgroup_strerror(ret));
> -             goto err;
> -     }
> -
> -     capacity = argc - optind;
> -     cgroup_list = calloc(capacity, sizeof(struct cgroup_group_spec *));
> -     if (cgroup_list == NULL) {
> -             fprintf(stderr, "%s: out of memory\n", argv[0]);
> -             ret = -1;
> -             goto err;
> -     }
> -
>       /* parse groups on command line */
>       for (i = optind; i < argc; i++) {
> -             ret = parse_cgroup_spec(cgroup_list, argv[i], capacity);
> +             ret = parse_cgroup_spec(cgroup_list, argv[i], argc);
>               if (ret != 0) {
>                       fprintf(stderr, "%s: error parsing cgroup '%s'\n",
>                                       argv[0], argv[i]);
> @@ -117,8 +116,8 @@ int main(int argc, char *argv[])
>               }
>       }
>  
> -     /* for each cgroup to delete */
> -     for (i = 0; i < capacity; i++) {
> +     /* for each cgroup to be deleted */
> +     for (i = 0; i < argc; i++) {
>               if (!cgroup_list[i])
>                       break;
>  
> @@ -164,7 +163,7 @@ int main(int argc, char *argv[])
>       ret = final_ret;
>  err:
>       if (cgroup_list) {
> -             for (i = 0; i < capacity; i++) {
> +             for (i = 0; i < argc; i++) {
>                       if (cgroup_list[i])
>                               cgroup_free_group_spec(cgroup_list[i]);
>               }
> 
> 
> ------------------------------------------------------------------------------
> WhatsUp Gold - Download Free Network Management Software
> The most intuitive, comprehensive, and cost-effective network 
> management toolset available today.  Delivers lowest initial 
> acquisition cost and overall TCO of any competing solution.
> http://p.sf.net/sfu/whatsupgold-sd
> _______________________________________________
> Libcg-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/libcg-devel


------------------------------------------------------------------------------
WhatsUp Gold - Download Free Network Management Software
The most intuitive, comprehensive, and cost-effective network 
management toolset available today.  Delivers lowest initial 
acquisition cost and overall TCO of any competing solution.
http://p.sf.net/sfu/whatsupgold-sd
_______________________________________________
Libcg-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libcg-devel

Reply via email to