Subversion Repositories Kolibri OS

Rev

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

  1. bool GetNextParam() {
  2.         if (!old_tag_parser_mode)
  3.                 return GetNextParam_NEW();
  4.         else
  5.                 return GetNextParam_OLD();
  6. }
  7.  
  8. bool GetNextParam_NEW()
  9. {
  10.         byte  quotes = NULL;
  11.         int   i;
  12.        
  13.         if (!tagparam) return false;
  14.  
  15.         if (debug_mode) {
  16.                 debug("tagparam: "); debugln(#tagparam);
  17.         }
  18.        
  19.         i = strlen(#tagparam) - 1;
  20.  
  21.         if (tagparam[i] == '/') i--;
  22.  
  23.         while (i>0) && (__isWhite(tagparam[i])) i--;
  24.  
  25.         if (tagparam[i] == '"') || (tagparam[i] == '\'')
  26.         {
  27.                 //find VAL end
  28.                 quotes = tagparam[i];
  29.                 tagparam[i] = '\0'; i--;
  30.  
  31.                 //find VAL start and copy
  32.                 i = strrchr(#tagparam, quotes);
  33.                 strlcpy(#val, #tagparam + i, sizeof(val));
  34.                 tagparam[i] = '\0'; i--;
  35.  
  36.                 //find ATTR end
  37.                 while (i > 0) && (tagparam[i] != '=') i--;
  38.                 tagparam[i+1] = '\0';
  39.         }
  40.         else
  41.         {
  42.                 //find VAL end
  43.                 //already have
  44.  
  45.                 //find VAL start and copy
  46.                 while (i > 0) && (tagparam[i] != '=') i--;
  47.                 i++;
  48.                 strlcpy(#val, #tagparam + i, sizeof(val));
  49.                 tagparam[i] = '\0';
  50.  
  51.                 //find ATTR end
  52.                 //already have
  53.         }
  54.  
  55.         //find ATTR start and copy
  56.         while (i>0) && (!__isWhite(tagparam[i])) i--;
  57.         strlcpy(#attr, #tagparam + i + 1, sizeof(attr));
  58.         tagparam[i] = '\0';
  59.  
  60.         strlwr(#attr);
  61.  
  62.         if (debug_mode) {
  63.                 if (quotes) {
  64.                         debug("quote: "); debugch(quotes); debugln(" ");
  65.                 }
  66.                 else {
  67.                         debugln("unquoted text");
  68.                 }
  69.                 sprintf(#param, "val: %s\nattr: %s\n\n", #val, #attr);
  70.                 debug(#param);         
  71.         }
  72.  
  73.         return true;
  74. }
  75.  
  76.  
  77.  
  78. unsigned int GetNextParam_OLD()
  79. {
  80.         byte    kavichki=0;
  81.         int             i = strlen(#tagparam) - 1;
  82.        
  83.         if (!tagparam) return 0;
  84.        
  85.         WHILE((i > 0) && ((tagparam[i] == '"') || (tagparam[i] == ' ') || (tagparam[i] == '\'') || (tagparam[i] == '/')))
  86.         {
  87.                 IF (tagparam[i] == '"') || (tagparam[i] == '\'') kavichki=tagparam[i];
  88.                 tagparam[i] = 0x00;
  89.                 i--;
  90.         }
  91.  
  92.         if (kavichki)
  93.         {
  94.                 i = strrchr(#tagparam, kavichki);
  95.                 strlcpy(#val, #tagparam + i, sizeof(val));
  96.         }
  97.         else
  98.         {
  99.                 WHILE((i > 0) && (tagparam[i] <>'=')) i--; //i=strrchr(#tagparam, '=')+1;
  100.                 i++;
  101.                 strlcpy(#val, #tagparam + i, sizeof(val));
  102.  
  103.                 WHILE (val[0] == ' ') strcpy(#val, #val+1);
  104.                 ESBYTE[strchr(#val, ' ')] = NULL;
  105.         }
  106.         tagparam[i] = 0x00;
  107.  
  108.         FOR ( ; ((tagparam[i] <>' ') && (i > 0); i--)
  109.         {
  110.                 IF (tagparam[i] == '=') //dirty fix (kludge)
  111.                         tagparam[i + 1] = 0x00;
  112.         }
  113.         strlcpy(#attr, #tagparam + i + 1, sizeof(attr));
  114.         tagparam[i] = 0x00;
  115.         strlwr(#attr);
  116.         return 1;
  117. }