VirtualBox

Changeset 13444 in vbox


Ignore:
Timestamp:
Oct 21, 2008 1:43:12 PM (16 years ago)
Author:
vboxsync
Message:

Main (Guest Properties): rewrites to globbing code

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/MachineImpl.cpp

    r13436 r13444  
    28402840static bool matchesSinglePatternEx(const char *pszPat, size_t cchPat, const char *pszName)
    28412841{
    2842     size_t iPat = 0;
    28432842    /* ASSUMES ASCII */
    28442843    for (;;)
    28452844    {
    2846         char chPat = pszPat[iPat];
     2845        char chPat = *pszPat;
    28472846        switch (chPat)
    28482847        {
     
    28542853            case '*':
    28552854            {
    2856                 while (   ((chPat = pszPat[++iPat]) == '*' || chPat == '?')
    2857                        && (iPat < cchPat)
     2855                while (   (--cchPat > 0)
     2856                       && ((chPat = *++pszPat) == '*' || chPat == '?')
    28582857                      )
    28592858                    /* nothing */;
     
    28642863                    if (    ch == chPat
    28652864                        &&  (   !chPat
    2866                              || matchesSinglePatternEx(pszPat + iPat + 1,
    2867                                                        cchPat - iPat - 1, pszName)
     2865                             || matchesSinglePatternEx(pszPat + 1,
     2866                                                       cchPat - 1, pszName)
    28682867                            )
    28692868                       )
     
    28862885        pszName++;
    28872886        pszPat++;
    2888         if (iPat == cchPat)
     2887        if (--cchPat == 0)
    28892888            return !*pszName;
     2889        Assert(cchPat > 0);
    28902890    }
    28912891    return true;
     
    29052905    size_t iOffs = 0;
    29062906    /* If the first pattern in the list is empty, treat it as "match all". */
    2907     bool matched = (cchPatterns > 0) && (0 == *paszPatterns) ? true : false;
     2907    bool matched = (cchPatterns > 0) && (0 == *paszPatterns);
    29082908    while ((iOffs < cchPatterns) && !matched)
    29092909    {
     
    29312931    const char *pcszCur = pcszPatterns;
    29322932    /* If list is empty, treat it as "match all". */
    2933     bool matched = (0 == *pcszPatterns) ? true : false;
     2933    bool matched = (0 == *pcszPatterns);
    29342934    bool done = false;
    29352935    while (!done && !matched)
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette