OSDN Git Service

[UART][SHELL] Maybe work correct:HELP FREQ
[openi2cradio/OpenI2CRadio.git] / shell_strutl.c
index 7a47839..ac95f47 100644 (file)
@@ -307,14 +307,17 @@ unsigned char shell_strlen(char *s)
 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;
@@ -326,14 +329,9 @@ int shell_strcmp(char *from, char *to)
     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;
 }
@@ -346,8 +344,11 @@ long term_getuint(char *pool)
 
     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++;