Compare Pattern

看code的時候發現很妙的為什麼會有0x20出現在比較的地方

原來是因為ASCII Code 大小寫 會差32
所以如果要大小寫通通都可以接受的話,就是這樣判斷:)

//\6 代表後面跟的是六個字母 \5五個字母

unsigned char dns_pattern[] =  "\6Belkin\5range";

static int pattern_cmp(unsigned char *ptr, int len, unsigned char *pattern)
{
   int i, j=0;
   int pattern_len = strlen(pattern);

   for(i=0; i < len; i++)
   {
      if(dns_hijack_enabled > 3)
         printk("i=%d, j=%d, %x %x\n", i, j, ptr[i] | 0x20, pattern[j] | 0x20);
      if((ptr[i] | 0x20) == (pattern[j] | 0x20))
         j++;
      else     j=0;
      if(j == (pattern_len))
         return 0;
   }

return -1;
}

458 Views


2 thoughts on “Compare Pattern”

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *