FreeCalypso > hg > freecalypso-tools
changeset 27:24cb10d508d7
fc-fsio help command implemented
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sun, 23 Oct 2016 01:33:21 +0000 |
parents | b301b75de0e0 |
children | 380d2e1f4eb7 |
files | rvinterf/etmsync/Makefile rvinterf/etmsync/fscmdtab.c rvinterf/etmsync/fsiomain.c rvinterf/etmsync/help.c |
diffstat | 4 files changed, 77 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/rvinterf/etmsync/Makefile Sun Oct 23 01:20:55 2016 +0000 +++ b/rvinterf/etmsync/Makefile Sun Oct 23 01:33:21 2016 +0000 @@ -9,8 +9,8 @@ FSIO_OBJS= cl_des.o connect.o dispatch.o fdcmd.o fileio.o fsbasics.o \ fscmdtab.o fserr.o fsiomain.o fsmisc.o fspath.o fsread.o \ - fsupload.o fswrite.o interf.o launchrvif.o memcmd.o memops.o \ - pirimei.o pirmagnetite.o rfcap.o stddirs.o symlink.o + fsupload.o fswrite.o help.o interf.o launchrvif.o memcmd.o \ + memops.o pirimei.o pirmagnetite.o rfcap.o stddirs.o symlink.o OLDDUMP_OBJS= connect.o interf.o launchrvif.o memops.o olddump.o simplemain.o
--- a/rvinterf/etmsync/fscmdtab.c Sun Oct 23 01:20:55 2016 +0000 +++ b/rvinterf/etmsync/fscmdtab.c Sun Oct 23 01:33:21 2016 +0000 @@ -15,6 +15,7 @@ extern int cmd_format(); extern int cmd_fwrite(); extern int cmd_hd(); +extern int cmd_help(); extern int cmd_ll(); extern int cmd_ls(); extern int cmd_memdump(); @@ -48,6 +49,7 @@ {"format", 1, 1, cmd_format}, {"fwrite", 3, 3, cmd_fwrite}, {"hd", 1, 1, cmd_hd}, + {"help", 0, 1, cmd_help}, {"ll", 1, 1, cmd_ll}, {"ls", 1, 2, cmd_ls}, {"memdump", 2, 2, cmd_memdump},
--- a/rvinterf/etmsync/fsiomain.c Sun Oct 23 01:20:55 2016 +0000 +++ b/rvinterf/etmsync/fsiomain.c Sun Oct 23 01:33:21 2016 +0000 @@ -7,6 +7,8 @@ #include <unistd.h> #include "exitcodes.h" +char help_file_pathname[] = "/usr/local/share/freecalypso/fsio.help"; + extern char *socket_pathname; extern char *rvinterf_ttyport, *rvinterf_Bopt, *rvinterf_lopt, *rvinterf_wopt;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/rvinterf/etmsync/help.c Sun Oct 23 01:33:21 2016 +0000 @@ -0,0 +1,71 @@ +/* + * This module implements the fc-fsio help facility. + */ + +#include <stdio.h> +#include <ctype.h> +#include <string.h> +#include <strings.h> +#include <stdlib.h> +#include "exitcodes.h" + +extern char help_file_pathname[]; + +show_help_topic(topic) + char *topic; +{ + FILE *f; + char linebuf[256]; + char *cp, *np; + int flag; + + f = fopen(help_file_pathname, "r"); + if (!f) { + perror(help_file_pathname); + return(ERROR_UNIX); + } + for (;;) { + if (!fgets(linebuf, sizeof linebuf, f)) { + fprintf(stderr, "Help topic \"%s\" not found\n", topic); + fclose(f); + return(ERROR_USAGE); + } + if (linebuf[0] != '=' || linebuf[1] != '=' || linebuf[2] != '=') + continue; + for (cp = linebuf + 3; isspace(*cp); cp++) + ; + for (np = cp; *cp && !isspace(*cp); cp++) + ; + if (*cp) + *cp++ = '\0'; + if (!strcmp(np, topic)) + break; + } + for (flag = 0; fgets(linebuf, sizeof linebuf, f); ) { + if (linebuf[0] == '=' && linebuf[1] == '=' && + linebuf[2] == '=') { + if (flag) + break; + else + continue; + } + fputs(linebuf, stdout); + flag = 1; + } + fclose(f); + return(0); +} + +cmd_help(argc, argv) + char **argv; +{ + switch (argc) { + case 1: + return show_help_topic("main"); + case 2: + return show_help_topic(argv[1]); + default: + fprintf(stderr, "internal error in cmd_help(): bad argc\n"); + abort(); + } +}