diff --git a/src/initctl.c b/src/initctl.c index 85a91edd..4ffb052a 100644 --- a/src/initctl.c +++ b/src/initctl.c @@ -740,9 +740,14 @@ static int usage(int rc) " ls | list List all .conf in " FINIT_RCSD "\n" " create Create .conf in %s\n" " delete Delete .conf in %s\n" + " show Show .conf in %s\n" " edit Edit .conf in %s\n" " touch Change .conf in %s\n", - avail, avail, avail, avail); + avail, avail, avail, avail, avail); + else + fprintf(stderr, + " show Show %s\n", FINIT_CONF); + if (has_ena) fprintf(stderr, " enable Enable .conf in %s\n", avail); @@ -805,6 +810,7 @@ int main(int argc, char *argv[]) { "enable", serv_enable }, { "disable", serv_disable }, { "touch", serv_touch }, + { "show", serv_show }, { "edit", serv_edit }, { "create", serv_creat }, { "delete", serv_delete }, diff --git a/src/serv.c b/src/serv.c index 728ebdd1..3d1da454 100644 --- a/src/serv.c +++ b/src/serv.c @@ -138,6 +138,11 @@ static char *conf(char *path, size_t len, char *name, int creat) { char corr[40]; + if (!name || !name[0]) { + strlcpy(path, FINIT_CONF, len); + return path; + } + if (!strstr(name, ".conf")) { snprintf(corr, sizeof(corr), "%s.conf", name); name = corr; @@ -250,6 +255,20 @@ int serv_touch(char *arg) return 0; } +int serv_show(char *arg) +{ + char path[256]; + char *fn; + + fn = conf(path, sizeof(path), arg, creat); + if (!fexist(fn)) { + warnx("Cannot find %s", arg); + return 1; + } + + return systemf("cat %s", fn); +} + /* * Try to open an editor for the given file, if creat is given we * create a new file based on /lib/finit/sample.conf diff --git a/src/serv.h b/src/serv.h index a93b0ffe..6bb02169 100644 --- a/src/serv.h +++ b/src/serv.h @@ -28,6 +28,7 @@ int serv_list (char *arg); int serv_enable (char *arg); int serv_disable (char *arg); int serv_touch (char *arg); +int serv_show (char *arg); int serv_edit (char *arg); int serv_creat (char *arg); int serv_delete (char *arg);