]> rtime.felk.cvut.cz Git - sysless.git/blobdiff - libs4c/cmdproc/cmd_proc.c
Add more comments to the command processor
[sysless.git] / libs4c / cmdproc / cmd_proc.c
index 86cfbe2e0b8b5ae5668ddfba78fb156ea1b05162..fe667b733d1c0578029c7137ed9d82af4a8e8ead 100644 (file)
@@ -18,7 +18,7 @@
    - other license provided by project originators
  *******************************************************************/
 
-#include <inttypes.h>
+#include <stdint.h>
 #include <ctype.h>
 #include <string.h>
 #include <stdlib.h>
@@ -35,6 +35,11 @@ char *skip_white(char *p)
 }
 
 /**
+ * Process a command line
+ *
+ * @param cmd_io I/O stack
+ * @param des_arr Pointer to the command descriptors.
+ * @param line Command line to process.
  *
  * @return Zero if no command was given in line, -CMDERR_BADCMD if
  * command is not known or has no function assigned to it. If a
@@ -90,26 +95,27 @@ int proc_cmd_line(cmd_io_t *cmd_io, cmd_des_t const **des_arr, char *line)
     var=NULL;
     while(*r){
       while((*p==*r)&&i){i--;r++;p++;};
-      if((i==0)&&!*r) break;    /* We've found the command */
-      if((*r=='?')&&i){
+      if((i==0)&&!*r) break;    /* We've found the command (full match) */
+      if((*r=='?')&&i){                /* '?' stands for an arbitrary character */
         if(!var) var=p;
        p++; r++; i--;
        continue;
       }
-      if((*r=='#')&&i&&isdigit((uint8_t)*p)){
+      if((*r=='#')&&i&&isdigit((uint8_t)*p)){ /* '#' stands for a digit */
        if(!var) var=p;
        p++; r++; i--;
        continue;
       }
-      if(*r=='*'){
+      if(*r=='*'){             /* '*' stands for any number of any characters */
        if(!var) var=p;
        i=0;
        break;
       }
-      i=1;
+      i=1;                     /* Signal no match */
       break;      
     }
     if(i!=0) continue; /* Try next command */
+    /* Setup parameters */
     if(des->mode&CDESM_OPCHR){
       if(!param[2])continue;
       if(!*param[2])continue;