detect-virt: add new --list command for showing all currently known VM/container envs

This commit is contained in:
Lennart Poettering 2018-05-22 12:12:44 +02:00
parent 5c828e66b5
commit 398246292e
2 changed files with 14 additions and 0 deletions

View File

@ -230,6 +230,12 @@
technology identifier.</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--list</option></term>
<listitem><para>Output all currently known and detectable container and VM environments.</para></listitem>
</varlistentry>
<xi:include href="standard-options.xml" xpointer="help" />
<xi:include href="standard-options.xml" xpointer="version" />
</variablelist>

View File

@ -10,6 +10,7 @@
#include <stdbool.h>
#include <stdlib.h>
#include "string-table.h"
#include "util.h"
#include "virt.h"
@ -32,6 +33,7 @@ static void help(void) {
" -r --chroot Detect whether we are run in a chroot() environment\n"
" --private-users Only detect whether we are running in a user namespace\n"
" -q --quiet Don't output anything, just set return value\n"
" --list List all known and detectable types of virtualization\n"
, program_invocation_short_name);
}
@ -40,6 +42,7 @@ static int parse_argv(int argc, char *argv[]) {
enum {
ARG_VERSION = 0x100,
ARG_PRIVATE_USERS,
ARG_LIST,
};
static const struct option options[] = {
@ -50,6 +53,7 @@ static int parse_argv(int argc, char *argv[]) {
{ "chroot", no_argument, NULL, 'r' },
{ "private-users", no_argument, NULL, ARG_PRIVATE_USERS },
{ "quiet", no_argument, NULL, 'q' },
{ "list", no_argument, NULL, ARG_LIST },
{}
};
@ -89,6 +93,10 @@ static int parse_argv(int argc, char *argv[]) {
arg_mode = ONLY_CHROOT;
break;
case ARG_LIST:
DUMP_STRING_TABLE(virtualization, int, _VIRTUALIZATION_MAX);
return 0;
case '?':
return -EINVAL;