return r;
}
- if (on_tty())
- printf("%-32s %-9s %-16s\n", "MACHINE", "CONTAINER", "SERVICE");
+ printf("%-32s %-9s %-16s\n", "MACHINE", "CONTAINER", "SERVICE");
r = sd_bus_message_enter_container(reply, SD_BUS_TYPE_ARRAY, "(ssso)");
if (r < 0)
if (r < 0)
return bus_log_parse_error(r);
- if (on_tty())
- printf("\n%u machines listed.\n", k);
+ printf("\n%u machines listed.\n", k);
return 0;
}
}
static int show_info(const char *verb, sd_bus *bus, const char *path, bool *new_line) {
- MachineStatusInfo info = {};
+
static const struct bus_properties_map map[] = {
{ "Name", "s", NULL, offsetof(MachineStatusInfo, name) },
{ "Class", "s", NULL, offsetof(MachineStatusInfo, class) },
{ "Id", "ay", bus_map_id128, offsetof(MachineStatusInfo, id) },
{}
};
+
+ MachineStatusInfo info = {};
int r;
assert(path);
static int openpt_in_namespace(pid_t pid, int flags) {
_cleanup_close_ int nsfd = -1, rootfd = -1;
- _cleanup_free_ char *ns = NULL, *root = NULL;
_cleanup_close_pipe_ int sock[2] = { -1, -1 };
union {
struct cmsghdr cmsghdr;
};
struct cmsghdr *cmsg;
int master = -1, r;
+ char *ns, *root;
pid_t child;
siginfo_t si;
- r = asprintf(&ns, "/proc/%lu/ns/mnt", (unsigned long) pid);
- if (r < 0)
- return -ENOMEM;
+ ns = procfs_file_alloca(pid, "ns/mnt");
nsfd = open(ns, O_RDONLY|O_NOCTTY|O_CLOEXEC);
if (nsfd < 0)
return -errno;
- r = asprintf(&root, "/proc/%lu/root", (unsigned long) pid);
- if (r < 0)
- return -ENOMEM;
+ root = procfs_file_alloca(pid, "root");
rootfd = open(root, O_RDONLY|O_NOCTTY|O_CLOEXEC|O_DIRECTORY);
if (rootfd < 0)
return r;
}
+ container_bus = sd_bus_unref(container_bus);
+
assert_se(sigemptyset(&mask) == 0);
sigset_add_many(&mask, SIGWINCH, SIGTERM, SIGINT, -1);
assert_se(sigprocmask(SIG_BLOCK, &mask, NULL) == 0);
" -s --signal=SIGNAL Which signal to send\n\n"
"Commands:\n"
" list List running VMs and containers\n"
- " status [NAME...] Show VM/container status\n"
- " show [NAME...] Show properties of one or more VMs/containers\n"
- " terminate [NAME...] Terminate one or more VMs/containers\n"
- " kill [NAME...] Send signal to processes of a VM/container\n"
- " login [NAME] Get a login prompt on a container\n",
+ " status NAME... Show VM/container status\n"
+ " show NAME... Show properties of one or more VMs/containers\n"
+ " terminate NAME... Terminate one or more VMs/containers\n"
+ " kill NAME... Send signal to processes of a VM/container\n"
+ " login NAME Get a login prompt on a container\n",
program_invocation_short_name);
return 0;