Ejemplo n.º 1
0
int
help(void *opt, int argc, char **argv)
{
    if(argc == 0) {
	sl_help(commands, 1, argv - 1 /* XXX */);
    } else {
	SL_cmd *c = sl_match (commands, argv[0], 0);
 	if(c == NULL) {
	    fprintf (stderr, "No such command: %s. "
		     "Try \"help\" for a list of commands\n",
		     argv[0]);
	} else {
	    if(c->func) {
		char *fake[] = { NULL, "--help", NULL };
		fake[0] = argv[0];
		(*c->func)(2, fake);
		fprintf(stderr, "\n");
	    }
	    if(c->help && *c->help)
		fprintf (stderr, "%s\n", c->help);
	    if((++c)->name && c->func == NULL) {
		int f = 0;
		fprintf (stderr, "Synonyms:");
		while (c->name && c->func == NULL) {
		    fprintf (stderr, "%s%s", f ? ", " : " ", (c++)->name);
		    f = 1;
		}
		fprintf (stderr, "\n");
	    }
	}
    }
    return 0;
}
Ejemplo n.º 2
0
void
sl_slc_help (SL_cmd *cmds, int argc, char **argv)
{
    if(argc == 0) {
        sl_help(cmds, 1, argv - 1 /* XXX */);
    } else {
        SL_cmd *c = sl_match (cmds, argv[0], 0);
        if(c == NULL) {
            fprintf (stderr, "No such command: %s. "
                     "Try \"help\" for a list of commands\n",
                     argv[0]);
        } else {
            if(c->func) {
                static char help[] = "--help";
                char *fake[3];
                fake[0] = argv[0];
                fake[1] = help;
                fake[2] = NULL;
                (*c->func)(2, fake);
                fprintf(stderr, "\n");
            }
            if(c->help && *c->help)
                fprintf (stderr, "%s\n", c->help);
            if((++c)->name && c->func == NULL) {
                int f = 0;
                fprintf (stderr, "Synonyms:");
                while (c->name && c->func == NULL) {
                    fprintf (stderr, "%s%s", f ? ", " : " ", (c++)->name);
                    f = 1;
                }
                fprintf (stderr, "\n");
            }
        }
    }
}
Ejemplo n.º 3
0
int
sl_command(SL_cmd *cmds, int argc, char **argv)
{
    SL_cmd *c;
    c = sl_match (cmds, argv[0], 0);
    if (c == NULL)
        return -1;
    return (*c->func)(argc, argv);
}
Ejemplo n.º 4
0
void
sl_help (SL_cmd *cmds, int argc, char **argv)
{
    SL_cmd *c, *prev_c;

    if (getenv("SLMANDOC")) {
        mandoc_template(cmds, NULL);
        return;
    }

    if (argc == 1) {
        prev_c = NULL;
        for (c = cmds; c->name; ++c) {
            if (c->func) {
                if(prev_c)
                    printf ("\n\t%s%s", prev_c->usage ? prev_c->usage : "",
                            prev_c->usage ? "\n" : "");
                prev_c = c;
                printf ("%s", c->name);
            } else
                printf (", %s", c->name);
        }
        if(prev_c)
            printf ("\n\t%s%s", prev_c->usage ? prev_c->usage : "",
                    prev_c->usage ? "\n" : "");
    } else {
        c = sl_match (cmds, argv[1], 0);
        if (c == NULL)
            printf ("No such command: %s. "
                    "Try \"help\" for a list of all commands\n",
                    argv[1]);
        else {
            printf ("%s\t%s\n", c->name, c->usage);
            if(c->help && *c->help)
                printf ("%s\n", c->help);
            if((++c)->name && c->func == NULL) {
                printf ("Synonyms:");
                while (c->name && c->func == NULL)
                    printf ("\t%s", (c++)->name);
                printf ("\n");
            }
        }
    }
}