Subversion Repositories Kolibri OS

Rev

Rev 7282 | Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. bool GetNextParam()
  2. {
  3.         byte  quotes = NULL;
  4.         int   i;
  5.        
  6.         if (!tagparam) return false;
  7.  
  8.         if (debug_mode) {
  9.                 debug("tagparam: "); debugln(#tagparam);
  10.         }
  11.        
  12.         i = strlen(#tagparam) - 1;
  13.  
  14.         if (tagparam[i] == '/') i--;
  15.  
  16.         while (i>0) && (__isWhite(tagparam[i])) i--;
  17.  
  18.         if (tagparam[i] == '"') || (tagparam[i] == '\'')
  19.         {
  20.                 //find VAL end
  21.                 quotes = tagparam[i];
  22.                 tagparam[i] = '\0'; i--;
  23.  
  24.                 //find VAL start and copy
  25.                 i = strrchr(#tagparam, quotes);
  26.                 strlcpy(#val, #tagparam + i, sizeof(val));
  27.                 tagparam[i] = '\0'; i--;
  28.  
  29.                 //find ATTR end
  30.                 while (i > 0) && (tagparam[i] != '=') i--;
  31.                 tagparam[i+1] = '\0';
  32.         }
  33.         else
  34.         {
  35.                 //find VAL end
  36.                 //already have
  37.  
  38.                 //find VAL start and copy
  39.                 while (i > 0) && (tagparam[i] != '=') i--;
  40.                 i++;
  41.                 strlcpy(#val, #tagparam + i, sizeof(val));
  42.                 tagparam[i] = '\0';
  43.  
  44.                 //find ATTR end
  45.                 //already have
  46.         }
  47.  
  48.         //find ATTR start and copy
  49.         while (i>0) && (!__isWhite(tagparam[i])) i--;
  50.         strlcpy(#attr, #tagparam + i + 1, sizeof(attr));
  51.         tagparam[i] = '\0';
  52.  
  53.         strlwr(#attr);
  54.  
  55.         if (debug_mode) {
  56.                 if (quotes) {
  57.                         debug("quote: "); debugch(quotes); debugln(" ");
  58.                 }
  59.                 else {
  60.                         debugln("unquoted text");
  61.                 }
  62.                 sprintf(#param, "val: %s\nattr: %s\n\n", #val, #attr);
  63.                 debug(#param);         
  64.         }
  65.  
  66.         return true;
  67. }
  68.  
  69.  
  70.