]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
lxc-ls: Restore old [filter] behaviour
authorChristian Brauner <christianvanbrauner@gmail.com>
Wed, 20 Jan 2016 00:54:45 +0000 (01:54 +0100)
committerStéphane Graber <stgraber@ubuntu.com>
Thu, 28 Jan 2016 11:22:21 +0000 (12:22 +0100)
In the Python implementation users could pass a regex without a parameter flag
as additional argument on the command line. The C implementation gained the
flag -r/--regex for this. To not irritate users we restore the old behaviour
and additionally rename -r/--regex to --filter to allow eplicitly passing the
regex.

Signed-off-by: Christian Brauner <christian.brauner@mailbox.org>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
src/lxc/arguments.h
src/lxc/lxc_ls.c

index a3d2932360c77918f51c5c7500813d434c332c81..46fecbfc3803cafee428a33a9d2a84335d39090d 100644 (file)
@@ -123,7 +123,7 @@ struct lxc_arguments {
        /* lxc-ls */
        char *ls_fancy_format;
        char *ls_groups;
-       char *ls_regex;
+       char *ls_filter;
        unsigned int ls_nesting; /* maximum allowed nesting level */
        bool ls_active;
        bool ls_fancy;
index bfe37cb4ff59bb27ce660c31c5f223733e775a89..35e6322f0638a2f71b37443dd3c67290d47e0b08 100644 (file)
@@ -49,6 +49,7 @@ lxc_log_define(lxc_ls, lxc);
 #define LS_ACTIVE 3
 #define LS_RUNNING 4
 #define LS_NESTING 5
+#define LS_FILTER 6
 
 /* Store container info. */
 struct ls {
@@ -162,7 +163,7 @@ static const struct option my_longopts[] = {
        {"stopped", no_argument, 0, LS_STOPPED},
        {"nesting", optional_argument, 0, LS_NESTING},
        {"groups", required_argument, 0, 'g'},
-       {"regex", required_argument, 0, 'r'},
+       {"filter", required_argument, 0, LS_FILTER},
        LXC_COMMON_OPTIONS
 };
 
@@ -355,9 +356,10 @@ static int ls_get(struct ls **m, size_t *size, const struct lxc_arguments *args,
                char *name = containers[i];
 
                /* Filter container names by regex the user gave us. */
-               if (args->ls_regex) {
+               if (args->ls_filter || args->argc == 1) {
                        regex_t preg;
-                       check = regcomp(&preg, args->ls_regex, REG_NOSUB | REG_EXTENDED);
+                       tmp = args->ls_filter ? args->ls_filter : args->argv[0];
+                       check = regcomp(&preg, tmp, REG_NOSUB | REG_EXTENDED);
                        if (check == REG_ESPACE) /* we're out of memory */
                                goto out;
                        else if (check != 0)
@@ -922,8 +924,8 @@ static int my_parser(struct lxc_arguments *args, int c, char *arg)
        case 'g':
                args->groups = arg;
                break;
-       case 'r':
-               args->ls_regex = arg;
+       case LS_FILTER:
+               args->ls_filter = arg;
                break;
        case 'F':
                args->ls_fancy_format = arg;
@@ -985,7 +987,7 @@ static int ls_remove_lock(const char *path, const char *name,
        }
 
        int check = snprintf(*lockpath, *len_lockpath, "%s/lxc/lock/%s/%s", RUNTIME_PATH, path, name);
-       if (check < 0 || check >= *len_lockpath)
+       if (check < 0 || (size_t)check >= *len_lockpath)
                return -1;
 
        lxc_rmdir_onedev(*lockpath, NULL);