mirror of
https://git.proxmox.com/git/mirror_lxc
synced 2025-07-27 12:37:35 +00:00
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: Christian Brauner <christian.brauner@mailbox.org> Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
This commit is contained in:
parent
7f3c1cf27f
commit
e4434e0fc9
@ -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);
|
|||||||
#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[] = {
|
|||||||
{"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,
|
|||||||
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)
|
|||||||
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,
|
|||||||
}
|
}
|
||||||
|
|
||||||
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);
|
||||||
|
Loading…
Reference in New Issue
Block a user