home *** CD-ROM | disk | FTP | other *** search
- /* handle standard commands with names for tcl */
- #include <stdio.h>
- #include <tcl.h>
- #include "handler.h"
-
- cmdHandler(tab, interp, argc, argv)
- struct cmd_table *tab;
- Tcl_Interp *interp;
- int argc;
- char **argv;
- {
- struct subcmd *cmdv = tab->cmdv;
- int cmdc = tab->cmdc;
-
- char *action;
-
- char *err;
- char *name;
- char *args;
-
- err = "wrong # args in";
- action = tab->name;
- name = "command";
- args = "args...";
-
- if(argc < 2)
- goto error;
-
- argv++; --argc;
- action = *argv++; --argc;
-
- while(cmdc > 0) {
- if(strcmp(action, cmdv->name) == 0) {
- int result;
-
- name = cmdv->name;
- args = cmdv->args;
- if(argc < cmdv->min
- || (cmdv->max != -1 && argc > cmdv->max))
- goto error;
- result = (*cmdv->func)(interp, tab->data, argc, argv);
- return result;
- }
- cmdv++;
- cmdc--;
- }
- err = "unknown subcommand";
- error:
- sprintf(interp->result, "%.50s %.50s: should be \"%.50s %.50s %.50s\"",
- err, action, tab->name, name, args);
- return TCL_ERROR;
- }
-