Changeset 953


Ignore:
Timestamp:
Dec 4, 2009, 11:33:07 PM (12 years ago)
Author:
Sven Rech
Message:

I knew something was missing (KeyPattern fix)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrypPlugins/KeySearcher/KeyPattern.cs

    r952 r953  
    256256        public bool testWildcardKey(string wildcardKey)
    257257        {
    258             int kcount = 0;
    259             int pcount = 0;
    260             while (kcount < wildcardKey.Length && pcount < pattern.Length)
    261             {
    262                 if (pattern[pcount] != '[')
    263                 {
    264                     if (pattern[pcount] != wildcardKey[kcount])
    265                         return false;
    266                     kcount++;
    267                     pcount++;
    268                 }
    269                 else
    270                 {                   
    271                     Wildcard wc1 = new Wildcard(pattern.Substring(pcount, pattern.IndexOf(']', pcount) + 1 - pcount));
    272                     while (pattern[pcount++] != ']') ;
    273                     Wildcard wc2 = null;
    274                     if (wildcardKey[kcount] == '[')
    275                     {
    276                         wc2 = new Wildcard(wildcardKey.Substring(kcount, wildcardKey.IndexOf(']', kcount) + 1 - kcount));
    277                         while (wildcardKey[++kcount] != ']') ;
    278                     }
    279                     else if (wildcardKey[kcount] != '*')
    280                         wc2 = new Wildcard("" + wildcardKey[kcount]);
    281 
    282                     if (!wc1.contains(wc2) && !(wildcardKey[kcount] == '*'))
    283                         return false;
    284                     kcount++;
    285                 }
    286             }
    287             if (pcount != pattern.Length || kcount != wildcardKey.Length)
     258            try
     259            {
     260                int kcount = 0;
     261                int pcount = 0;
     262                while (kcount < wildcardKey.Length && pcount < pattern.Length)
     263                {
     264                    if (pattern[pcount] != '[')
     265                    {
     266                        if (pattern[pcount] != wildcardKey[kcount])
     267                            return false;
     268                        kcount++;
     269                        pcount++;
     270                    }
     271                    else
     272                    {
     273                        Wildcard wc1 = new Wildcard(pattern.Substring(pcount, pattern.IndexOf(']', pcount) + 1 - pcount));
     274                        while (pattern[pcount++] != ']') ;
     275                        Wildcard wc2 = null;
     276                        if (wildcardKey[kcount] == '[')
     277                        {
     278                            wc2 = new Wildcard(wildcardKey.Substring(kcount, wildcardKey.IndexOf(']', kcount) + 1 - kcount));
     279                            while (wildcardKey[++kcount] != ']') ;
     280                        }
     281                        else if (wildcardKey[kcount] != '*')
     282                            wc2 = new Wildcard("" + wildcardKey[kcount]);
     283
     284                        if (!wc1.contains(wc2) && !(wildcardKey[kcount] == '*'))
     285                            return false;
     286                        kcount++;
     287                    }
     288                }
     289                if (pcount != pattern.Length || kcount != wildcardKey.Length)
     290                    return false;
     291                return true;
     292            }
     293            catch (Exception)
     294            {
    288295                return false;
    289             return true;
     296            }
    290297        }
    291298
     
    295302            int pcount = 0;
    296303            wildcardList = new ArrayList();
    297             for (int i = 0; i < wildcardKey.Length; i++)
     304            int i = 0;
     305            while (i < wildcardKey.Length)           
    298306            {
    299307                if (pattern[pcount] == '[')
     
    305313                        counter *= wc.size();
    306314                    }
     315                    else if (wildcardKey[i] == '[')
     316                    {
     317                        Wildcard wc = new Wildcard(wildcardKey.Substring(i, wildcardKey.IndexOf(']', i) + 1 - i));
     318                        wildcardList.Add(wc);
     319                        counter *= wc.size();
     320                        while (wildcardKey[++i] != ']') ;
     321                    }
    307322                    else
    308323                    {
     
    313328                }
    314329                pcount++;
     330                i++;
    315331            }
    316332            return counter;
Note: See TracChangeset for help on using the changeset viewer.