FreeCalypso > hg > freecalypso-tools
view loadtools/ltdispatch.c @ 1012:11391cb6bdc0
patch from fixeria: doc change from SE K2x0 to K2xx
Since their discovery in late 2022, Sony Ericsson K200 and K220 phones
were collectively referred to as SE K2x0 in FreeCalypso documentation.
However, now that SE K205 has been discovered as yet another member
of the same family (same PCBA in different case), it makes more sense
to refer to the whole family as SE K2xx.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Mon, 23 Sep 2024 12:23:20 +0000 |
parents | 8a89a42baa70 |
children |
line wrap: on
line source
/* * This module implements the command dispatch for fc-loadtool */ #include <ctype.h> #include <stdio.h> #include <string.h> #include <strings.h> #include <stdlib.h> extern int cmd_baud(); extern int cmd_crc32(); extern int cmd_dieid(); extern int cmd_dump2bin(); extern int cmd_dump2srec(); extern int cmd_exec(); extern int cmd_exit(); extern int cmd_flash(); extern int cmd_help(); extern int cmd_tfc139_audio_dump(); extern int cmd_timeout_cal(); extern int loadtool_cmd_passthru(); static struct cmdtab { char *cmd; int minargs; int maxargs; int (*func)(); } cmdtab[] = { {"abbr", 2, 2, loadtool_cmd_passthru}, {"abbw", 3, 3, loadtool_cmd_passthru}, {"baud", 0, 1, cmd_baud}, {"crc32", 2, 2, cmd_crc32}, {"dieid", 0, 1, cmd_dieid}, {"dump", 2, 2, loadtool_cmd_passthru}, {"dump2bin", 3, 3, cmd_dump2bin}, {"dump2srec", 3, 3, cmd_dump2srec}, {"exec", 1, 1, cmd_exec}, {"exit", 0, 1, cmd_exit}, {"flash", 1, 5, cmd_flash}, {"flash2", 1, 5, cmd_flash}, {"help", 0, 2, cmd_help}, {"quit", 0, 1, cmd_exit}, {"r8", 1, 1, loadtool_cmd_passthru}, {"r16", 1, 1, loadtool_cmd_passthru}, {"r32", 1, 1, loadtool_cmd_passthru}, {"tfc139-audio-dump", 0, 1, cmd_tfc139_audio_dump}, {"timeout-cal", 1, 1, cmd_timeout_cal}, {"w8", 2, 2, loadtool_cmd_passthru}, {"w16", 2, 2, loadtool_cmd_passthru}, {"w32", 2, 2, loadtool_cmd_passthru}, {0, 0, 0, 0} }; loadtool_dispatch_cmd(cmd, is_script) char *cmd; { char *argv[10]; char *cp, **ap; struct cmdtab *tp; for (cp = cmd; isspace(*cp); cp++) ; if (!*cp || *cp == '#') return(0); if (is_script) printf("Script command: %s\n", cp); argv[0] = cp; while (*cp && !isspace(*cp)) cp++; if (*cp) *cp++ = '\0'; for (tp = cmdtab; tp->cmd; tp++) if (!strcmp(tp->cmd, argv[0])) break; if (!tp->func) { fprintf(stderr, "error: no such command\n"); return(-1); } for (ap = argv + 1; ; ) { while (isspace(*cp)) cp++; if (!*cp || *cp == '#') break; if (ap - argv - 1 >= tp->maxargs) { fprintf(stderr, "error: too many arguments\n"); return(-1); } *ap++ = cp; while (*cp && !isspace(*cp)) cp++; if (*cp) *cp++ = '\0'; } if (ap - argv - 1 < tp->minargs) { fprintf(stderr, "error: too few arguments\n"); return(-1); } *ap = 0; return tp->func(ap - argv, argv); }