aboutsummaryrefslogtreecommitdiff
path: root/servicecmd/list.c
diff options
context:
space:
mode:
authorDavid Oberhollenzer <david.oberhollenzer@tele2.at>2018-02-25 14:33:19 +0100
committerDavid Oberhollenzer <david.oberhollenzer@tele2.at>2018-03-24 17:04:20 +0100
commit9a88f7da453eadc72d8f333700dbd80777feecd1 (patch)
tree8a096e37123ece1d20bcb4d0ae8e064bdd39747a /servicecmd/list.c
Initial commit
Signed-off-by: David Oberhollenzer <david.oberhollenzer@tele2.at>
Diffstat (limited to 'servicecmd/list.c')
-rw-r--r--servicecmd/list.c71
1 files changed, 71 insertions, 0 deletions
diff --git a/servicecmd/list.c b/servicecmd/list.c
new file mode 100644
index 0000000..2286197
--- /dev/null
+++ b/servicecmd/list.c
@@ -0,0 +1,71 @@
+#include "servicecmd.h"
+#include "service.h"
+#include "config.h"
+
+static int cmd_list(int argc, char **argv)
+{
+ int i, ret = EXIT_SUCCESS;
+ service_list_t list;
+ service_t *svc;
+
+ (void)argc; (void)argv;
+
+ if (srvscan(SVCDIR, &list)) {
+ fprintf(stderr, "Error while reading services from %s\n",
+ SVCDIR);
+ ret = EXIT_FAILURE;
+ }
+
+ for (i = 0; i < TGT_MAX; ++i) {
+ if (list.targets[i] == NULL)
+ continue;
+
+ fputs("******** target: ", stdout);
+
+ switch (i) {
+ case TGT_BOOT:
+ fputs("boot", stdout);
+ break;
+ case TGT_SHUTDOWN:
+ fputs("shutdown", stdout);
+ break;
+ case TGT_REBOOT:
+ fputs("reboot", stdout);
+ break;
+ case TGT_CAD:
+ fputs("ctrl-alt-delete", stdout);
+ break;
+ }
+
+ fputs(" ********\n", stdout);
+
+ for (svc = list.targets[i]; svc != NULL; svc = svc->next) {
+ fprintf(stdout, "Name: %s\n", svc->name);
+ fprintf(stdout, "Descrption: %s\n", svc->desc);
+
+ fputs("Type: ", stdout);
+ switch (svc->type) {
+ case SVC_ONCE: fputs("once\n", stdout); break;
+ case SVC_WAIT: fputs("wait\n", stdout); break;
+ case SVC_RESPAWN: fputs("respawn\n", stdout); break;
+ }
+
+ fputc('\n', stdout);
+ }
+
+ fputc('\n', stdout);
+ }
+
+ del_srv_list(&list);
+ return ret;
+}
+
+static command_t list = {
+ .cmd = "list",
+ .usage = "",
+ .s_desc = "print a list of currently enabled services",
+ .l_desc = "Print a list of currently enabled services.",
+ .run_cmd = cmd_list,
+};
+
+REGISTER_COMMAND(list)