VirtualBox

Changeset 50615 in vbox for trunk/src/VBox/Runtime


Ignore:
Timestamp:
Feb 26, 2014 6:29:01 PM (11 years ago)
Author:
vboxsync
Message:

RTDbgSymCache.cpp: Added -o option for overwriting existing cache entries. Some fixes.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/tools/RTDbgSymCache.cpp

    r49118 r50615  
    7373{
    7474    bool        fRecursive;
     75    bool        fOverwriteOnConflict;
    7576    const char *pszFilter;
    7677    const char *pszCache;
     
    172173{
    173174    if (!pszCommand || !strcmp(pszCommand, "add"))
    174         RTPrintf("Usage: %s add [-rn] <cache-root-dir> <file1> [fileN..]\n", pszArg0);
     175        RTPrintf("Usage: %s add [-Rno] <cache-root-dir> <file1> [fileN..]\n", pszArg0);
    175176    return RTEXITCODE_SUCCESS;
    176177}
     
    372373        else
    373374            RTMsgInfo("Error comparing '%s' with '%s': %Rrc", pszSrcPath, szDstPath, rc);
    374         return rc;
     375        if (!pCfg->fOverwriteOnConflict)
     376            return rc;
    375377    }
    376378
     
    746748        static char const * const s_apszSubBundleDirs[] =
    747749        {
    748             "Contents/Plugins",
     750            "Contents/Plugins/",
    749751            /** @todo Frameworks ++ */
    750752        };
     
    752754        {
    753755            pszPath[cchPath + cchName] = '\0';
    754             int rc2 = RTPathAppend(pszPath, RTPATH_MAX, s_apszSubBundleDirs[i]);
     756            int rc2 = RTPathAppend(pszPath, RTPATH_MAX - 1, s_apszSubBundleDirs[i]);
    755757            if (RT_SUCCESS(rc2))
    756                 rc2 = rtDbgSymCacheAddDirWorker(pszPath, strlen(pszPath), pDirEntry, pCfg);
     758            {
     759                if (RTDirExists(pszPath))
     760                {
     761                    size_t cchPath2 = strlen(pszPath);
     762                    if (!RTPATH_IS_SLASH(pszPath[cchPath2 - 1]))
     763                    {
     764                        pszPath[cchPath2++] = RTPATH_SLASH;
     765                        pszPath[cchPath2]   = '\0';
     766                    }
     767                    rc2 = rtDbgSymCacheAddDirWorker(pszPath, cchPath2, pDirEntry, pCfg);
     768                }
     769            }
    757770            else
    758771            {
     
    10871100 *
    10881101 * @returns Program exit code.
    1089  * @param   pszPath         The user supplied path to the file or directory.
    1090  * @param   pszCache        The path to the cache.
    1091  * @param   fRecursive      Whether to process directories recursively.
    1092  */
    1093 static RTEXITCODE rtDbgSymCacheAddFileOrDir(const char *pszPath, const char *pszCache, bool fRecursive)
     1102 * @param   pszPath                 The user supplied path to the file or directory.
     1103 * @param   pszCache                The path to the cache.
     1104 * @param   fRecursive              Whether to process directories recursively.
     1105 * @param   fOverwriteOnConflict    Whether to overwrite existing cache entry on
     1106 *                                  conflict, or just leave it.
     1107 */
     1108static RTEXITCODE rtDbgSymCacheAddFileOrDir(const char *pszPath, const char *pszCache, bool fRecursive,
     1109                                            bool fOverwriteOnConflict)
    10941110{
    10951111    RTDBGSYMCACHEADDCFG Cfg;
     
    11661182    static RTGETOPTDEF const s_aOptions[] =
    11671183    {
    1168         { "--recursive",        'R', RTGETOPT_REQ_NOTHING },
    1169         { "--no-recursive",     'n', RTGETOPT_REQ_NOTHING },
     1184        { "--recursive",                'R', RTGETOPT_REQ_NOTHING },
     1185        { "--no-recursive",             'n', RTGETOPT_REQ_NOTHING },
     1186        { "--overwrite-on-conflict",    'o', RTGETOPT_REQ_NOTHING },
    11701187    };
    11711188
    1172     const char *pszCache        = NULL;
    1173     bool        fRecursive      = false;
     1189    const char *pszCache                = NULL;
     1190    bool        fRecursive              = false;
     1191    bool        fOverwriteOnConflict    = false;
    11741192
    11751193    RTGETOPTSTATE State;
     
    11911209            case 'n':
    11921210                fRecursive = false;
     1211                break;
     1212
     1213            case 'o':
     1214                fOverwriteOnConflict = true;
    11931215                break;
    11941216
     
    12101232                else
    12111233                {
    1212                     RTEXITCODE rcExit = rtDbgSymCacheAddFileOrDir(ValueUnion.psz, pszCache, fRecursive);
     1234                    RTEXITCODE rcExit = rtDbgSymCacheAddFileOrDir(ValueUnion.psz, pszCache, fRecursive, fOverwriteOnConflict);
    12131235                    if (rcExit != RTEXITCODE_FAILURE)
    12141236                        return rcExit;
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