Commit e4434e0f by Christian Brauner Committed by Stéphane Graber

lxc-ls: Restore old [filter] behaviour

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: 's avatarChristian Brauner <christian.brauner@mailbox.org> Acked-by: 's avatarSerge E. Hallyn <serge.hallyn@ubuntu.com>
parent 7f3c1cf2
...@@ -123,7 +123,7 @@ struct lxc_arguments { ...@@ -123,7 +123,7 @@ struct lxc_arguments {
/* lxc-ls */ /* lxc-ls */
char *ls_fancy_format; char *ls_fancy_format;
char *ls_groups; char *ls_groups;
char *ls_regex; char *ls_filter;
unsigned int ls_nesting; /* maximum allowed nesting level */ unsigned int ls_nesting; /* maximum allowed nesting level */
bool ls_active; bool ls_active;
bool ls_fancy; bool ls_fancy;
......
...@@ -49,6 +49,7 @@ lxc_log_define(lxc_ls, lxc); ...@@ -49,6 +49,7 @@ lxc_log_define(lxc_ls, lxc);
#define LS_ACTIVE 3 #define LS_ACTIVE 3
#define LS_RUNNING 4 #define LS_RUNNING 4
#define LS_NESTING 5 #define LS_NESTING 5
#define LS_FILTER 6
/* Store container info. */ /* Store container info. */
struct ls { struct ls {
...@@ -162,7 +163,7 @@ static const struct option my_longopts[] = { ...@@ -162,7 +163,7 @@ static const struct option my_longopts[] = {
{"stopped", no_argument, 0, LS_STOPPED}, {"stopped", no_argument, 0, LS_STOPPED},
{"nesting", optional_argument, 0, LS_NESTING}, {"nesting", optional_argument, 0, LS_NESTING},
{"groups", required_argument, 0, 'g'}, {"groups", required_argument, 0, 'g'},
{"regex", required_argument, 0, 'r'}, {"filter", required_argument, 0, LS_FILTER},
LXC_COMMON_OPTIONS LXC_COMMON_OPTIONS
}; };
...@@ -355,9 +356,10 @@ static int ls_get(struct ls **m, size_t *size, const struct lxc_arguments *args, ...@@ -355,9 +356,10 @@ static int ls_get(struct ls **m, size_t *size, const struct lxc_arguments *args,
char *name = containers[i]; char *name = containers[i];
/* Filter container names by regex the user gave us. */ /* Filter container names by regex the user gave us. */
if (args->ls_regex) { if (args->ls_filter || args->argc == 1) {
regex_t preg; 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 */ if (check == REG_ESPACE) /* we're out of memory */
goto out; goto out;
else if (check != 0) else if (check != 0)
...@@ -922,8 +924,8 @@ static int my_parser(struct lxc_arguments *args, int c, char *arg) ...@@ -922,8 +924,8 @@ static int my_parser(struct lxc_arguments *args, int c, char *arg)
case 'g': case 'g':
args->groups = arg; args->groups = arg;
break; break;
case 'r': case LS_FILTER:
args->ls_regex = arg; args->ls_filter = arg;
break; break;
case 'F': case 'F':
args->ls_fancy_format = arg; args->ls_fancy_format = arg;
...@@ -985,7 +987,7 @@ static int ls_remove_lock(const char *path, const char *name, ...@@ -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); 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; return -1;
lxc_rmdir_onedev(*lockpath, NULL); lxc_rmdir_onedev(*lockpath, NULL);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment