unsigned char shell_gettok(char *dst, char *src)
{
unsigned char i;
+ char c;
i = 0;
- while(src[i] != '\0') {
- if(src[i] == ' ') break;
- if(src[i] == '\t') break;
- if(src[i] == '\n') break;
- dst[i] = src[i];
+ while(1) {
+ c = src[i];
+ if(c == '\0') break;
+ if(c == ' ') break;
+ if(c == '\t') break;
+ if(c == '\n') break;
+ dst[i] = c;
i++;
- if(i > 128) break;
+ if(i > 126) break;
}
dst[i] = '\0';
return i;
unsigned char i;
int p = 0;
- f = shell_strlen(from);
- t = shell_strlen(to);
- i = f;
- if(i > t) i = t;
- while(i != 0){
+ while(from[p] != '\0'){
if(from[p] != to[p]) return -1;
p++;
- i--;
}
return p;
}
do {
c = pool[p];
- if((c < '0') || (c > '9')) return -1;
if(c == '\0') break;
+ if(c == '\n') break;
+ if(c == '\t') break;
+ if(c == ' ') break;
+ if((c < '0') || (c > '9')) return -1;
i *= 10;
i = i + (c - '0');
p++;
#include "term_shell.h"
-unsigned char cmd_shellstr[255];
-static char shell_strbuf[255];
-static char xarg1[128];
-static char xarg2[128];
-static char xarg3[128];
+unsigned char cmd_shellstr[127];
+static char shell_strbuf[127];
+static char xarg1[66];
+static char xarg2[66];
+static char xarg3[66];
#define SHELL_CMD_NONE -1
#define SHELL_CMD_NOTFOUND -2
slen = shell_gettok(xarg1, p);
addr = 0;
- if(shell_strcmp(xarg1, "INT") == 0) { // Internal EEPROM
+ if(shell_strcmp(xarg1, "INT") > 0) { // Internal EEPROM
put_hexheader("INT_EEPROM");
len = sizeof(__radioset_t);
pv = &setup;
}
}
put_hexfooter();
- } else if(shell_strcmp(xarg1, "FTBL") == 0) { // External EEPROM, Freq TBL
+ } else if(shell_strcmp(xarg1, "FTBL") > 0) { // External EEPROM, Freq TBL
put_hexheader("EXT_FREQTBL");
put_hexfooter();
- } else if(shell_strcmp(xarg1, "BAND") == 0) { // band
+ } else if(shell_strcmp(xarg1, "BAND") > 0) { // band
put_hexheader("EXT_BANDTBL");
put_hexfooter();
}
unsigned char slen;
int f;
- slen = shell_gettok(p, xarg1);
+ slen = shell_gettok(xarg1, p);
if(slen != 0) {
for(i = 0; i < SHELL_TOPCMDS; i++){
f = shell_strcmp(xarg1, cmdstr[i]);
if(f > 0) {
- cmd_printhelp(f);
+ cmd_printhelp(i);
return;
}
}
unsigned char c;
int i;
unsigned int ii;
- char pool[128];
+ char pool[127];
//cmd_shellstr[0] = '\0';
if(timeout != 0) {
ClrWdt();
ii = shell_gettok(pool, cmd_shellstr);
-// if(ii >= 128) return SHELL_CMD_TOOLONG;
- if(ii >= 128) continue; // Discard
-
+// if(ii >= 126) return SHELL_CMD_TOOLONG;
+ if(ii >= 126) continue; // Discard
for(t = 0; t < SHELL_TOPCMDS; t++){
i = shell_strcmp((char *)cmdstr[t], pool);
if(i > 0) break;
}
+
if(cmd_shellstr[ii] == ' ') {
//if(i <= 0) return SHELL_CMD_NOTFOUND;
ii = shell_gettok(pool, &cmd_shellstr[ii + 1]);
}
-
+ if(ii >= 126) t = 127; // Error
switch(t){
case 0:
cmd_help(pool);