VirtualBox

Changeset 69261 in vbox for trunk


Ignore:
Timestamp:
Oct 25, 2017 9:39:14 AM (7 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
118579
Message:

scm: fix PNG svn properties

Location:
trunk/src/bldprogs
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/bldprogs/scm.cpp

    r69258 r69261  
    354354};
    355355
    356 
     356static PFNSCMREWRITER const g_aRewritersFor_Images[] =
     357{
     358    rewrite_SvnNoExecutable,
     359    rewrite_SvnBinary,
     360};
     361
     362#define SCM_CFG_ENTRY(a_aRewriters, a_fBinary, a_szFilePatterns) \
     363    { RT_ELEMENTS(a_aRewriters), &a_aRewriters[0], a_fBinary, a_szFilePatterns }
    357364static SCMCFGENTRY const g_aConfigs[] =
    358365{
    359     { RT_ELEMENTS(g_aRewritersFor_Makefile_kup), &g_aRewritersFor_Makefile_kup[0], "Makefile.kup" },
    360     { RT_ELEMENTS(g_aRewritersFor_Makefile_kmk), &g_aRewritersFor_Makefile_kmk[0], "Makefile.kmk|Config.kmk" },
    361     { RT_ELEMENTS(g_aRewritersFor_C_and_CPP),    &g_aRewritersFor_C_and_CPP[0],    "*.c|*.cpp|*.C|*.CPP|*.cxx|*.cc|*.m|*.mm" },
    362     { RT_ELEMENTS(g_aRewritersFor_H_and_HPP),    &g_aRewritersFor_H_and_HPP[0],    "*.h|*.hpp" },
    363     { RT_ELEMENTS(g_aRewritersFor_RC),           &g_aRewritersFor_RC[0],           "*.rc" },
    364     { RT_ELEMENTS(g_aRewritersFor_ASM),          &g_aRewritersFor_ASM[0],          "*.asm|*.mac" },
    365     { RT_ELEMENTS(g_aRewritersFor_DEF),          &g_aRewritersFor_DEF[0],          "*.def" },
    366     { RT_ELEMENTS(g_aRewritersFor_ShellScripts), &g_aRewritersFor_ShellScripts[0], "*.sh|configure" },
    367     { RT_ELEMENTS(g_aRewritersFor_BatchFiles),   &g_aRewritersFor_BatchFiles[0],   "*.bat|*.cmd|*.btm" },
    368     { RT_ELEMENTS(g_aRewritersFor_BasicScripts), &g_aRewritersFor_BasicScripts[0], "*.vbs|*.vb" },
    369     { RT_ELEMENTS(g_aRewritersFor_SedScripts),   &g_aRewritersFor_SedScripts[0],   "*.sed" },
    370     { RT_ELEMENTS(g_aRewritersFor_Python),       &g_aRewritersFor_Python[0],       "*.py" },
    371     { RT_ELEMENTS(g_aRewritersFor_ScmSettings),  &g_aRewritersFor_ScmSettings[0],  "*.scm-settings" },
     366    SCM_CFG_ENTRY(g_aRewritersFor_Makefile_kup, false, "Makefile.kup" ),
     367    SCM_CFG_ENTRY(g_aRewritersFor_Makefile_kmk, false, "Makefile.kmk|Config.kmk" ),
     368    SCM_CFG_ENTRY(g_aRewritersFor_C_and_CPP,    false, "*.c|*.cpp|*.C|*.CPP|*.cxx|*.cc|*.m|*.mm" ),
     369    SCM_CFG_ENTRY(g_aRewritersFor_H_and_HPP,    false, "*.h|*.hpp" ),
     370    SCM_CFG_ENTRY(g_aRewritersFor_RC,           false, "*.rc" ),
     371    SCM_CFG_ENTRY(g_aRewritersFor_ASM,          false, "*.asm|*.mac" ),
     372    SCM_CFG_ENTRY(g_aRewritersFor_DEF,          false, "*.def" ),
     373    SCM_CFG_ENTRY(g_aRewritersFor_ShellScripts, false, "*.sh|configure" ),
     374    SCM_CFG_ENTRY(g_aRewritersFor_BatchFiles,   false, "*.bat|*.cmd|*.btm" ),
     375    SCM_CFG_ENTRY(g_aRewritersFor_BasicScripts, false, "*.vbs|*.vb" ),
     376    SCM_CFG_ENTRY(g_aRewritersFor_SedScripts,   false, "*.sed" ),
     377    SCM_CFG_ENTRY(g_aRewritersFor_Python,       false, "*.py" ),
     378    SCM_CFG_ENTRY(g_aRewritersFor_ScmSettings,  false, "*.scm-settings" ),
     379    SCM_CFG_ENTRY(g_aRewritersFor_Images,       true,  "*.png|*.bmp|*.jpg" ),
    372380};
    373381
     
    14021410        return rc;
    14031411    }
    1404     if (ScmStreamIsText(&Stream1))
     1412    if (ScmStreamIsText(&Stream1) || pCfg->fBinary)
    14051413    {
    14061414        ScmVerboseBanner(pState, 3);
     
    14611469                             * If rewritten, write it back to disk.
    14621470                             */
    1463                             if (fModified)
     1471                            if (fModified && !pCfg->fBinary)
    14641472                            {
    14651473                                if (!g_fDryRun)
     
    14811489                                g_cFilesModified++;
    14821490                            }
     1491                            else if (fModified)
     1492                                rc = RTMsgErrorRc(VERR_INTERNAL_ERROR, "Rewriters modified binary file! Impossible!");
    14831493
    14841494                            /*
  • trunk/src/bldprogs/scm.h

    r69258 r69261  
    192192FNSCMREWRITER rewrite_AdjustTrailingLines;
    193193FNSCMREWRITER rewrite_SvnNoExecutable;
     194FNSCMREWRITER rewrite_SvnNoKeyword;
     195FNSCMREWRITER rewrite_SvnNoEolStyle;
     196FNSCMREWRITER rewrite_SvnBinary;
    194197FNSCMREWRITER rewrite_SvnKeywords;
    195198FNSCMREWRITER rewrite_Copyright_CstyleComment;
     
    220223    /** Pointer to an array of rewriters. */
    221224    PFNSCMREWRITER const  *papfnRewriter;
     225    /** Set if the entry handles binaries.  */
     226    bool            fBinary;
    222227    /** File pattern (simple).  */
    223228    const char     *pszFilePattern;
  • trunk/src/bldprogs/scmrw.cpp

    r69258 r69261  
    723723
    724724/**
    725  * Make sure there is no svn:executable keyword on the current file.
     725 * Make sure there is no svn:executable property on the current file.
    726726 *
    727727 * @returns false - the state carries these kinds of changes.
     
    746746            ScmError(pState, rc, "ScmSvnSetProperty: %Rrc\n", rc);
    747747    }
     748    return false;
     749}
     750
     751/**
     752 * Make sure there is no svn:keywords property on the current file.
     753 *
     754 * @returns false - the state carries these kinds of changes.
     755 * @param   pState              The rewriter state.
     756 * @param   pIn                 The input stream.
     757 * @param   pOut                The output stream.
     758 * @param   pSettings           The settings.
     759 */
     760bool rewrite_SvnNoKeywords(PSCMRWSTATE pState, PSCMSTREAM pIn, PSCMSTREAM pOut, PCSCMSETTINGSBASE pSettings)
     761{
     762    RT_NOREF2(pIn, pOut);
     763    if (   !pSettings->fSetSvnExecutable
     764        || !ScmSvnIsInWorkingCopy(pState))
     765        return false;
     766
     767    int rc = ScmSvnQueryProperty(pState, "svn:keywords", NULL);
     768    if (RT_SUCCESS(rc))
     769    {
     770        ScmVerbose(pState, 2, " * removing svn:keywords\n");
     771        rc = ScmSvnDelProperty(pState, "svn:keywords");
     772        if (RT_FAILURE(rc))
     773            ScmError(pState, rc, "ScmSvnSetProperty: %Rrc\n", rc);
     774    }
     775    return false;
     776}
     777
     778/**
     779 * Make sure there is no svn:eol-style property on the current file.
     780 *
     781 * @returns false - the state carries these kinds of changes.
     782 * @param   pState              The rewriter state.
     783 * @param   pIn                 The input stream.
     784 * @param   pOut                The output stream.
     785 * @param   pSettings           The settings.
     786 */
     787bool rewrite_SvnNoEolStyle(PSCMRWSTATE pState, PSCMSTREAM pIn, PSCMSTREAM pOut, PCSCMSETTINGSBASE pSettings)
     788{
     789    RT_NOREF2(pIn, pOut);
     790    if (   !pSettings->fSetSvnExecutable
     791        || !ScmSvnIsInWorkingCopy(pState))
     792        return false;
     793
     794    int rc = ScmSvnQueryProperty(pState, "svn:eol-style", NULL);
     795    if (RT_SUCCESS(rc))
     796    {
     797        ScmVerbose(pState, 2, " * removing svn:eol-style\n");
     798        rc = ScmSvnDelProperty(pState, "svn:eol-style");
     799        if (RT_FAILURE(rc))
     800            ScmError(pState, rc, "ScmSvnSetProperty: %Rrc\n", rc);
     801    }
     802    return false;
     803}
     804
     805/**
     806 * Makes sure the svn properties are appropriate for a binary.
     807 *
     808 * @returns false - the state carries these kinds of changes.
     809 * @param   pState              The rewriter state.
     810 * @param   pIn                 The input stream.
     811 * @param   pOut                The output stream.
     812 * @param   pSettings           The settings.
     813 */
     814bool rewrite_SvnBinary(PSCMRWSTATE pState, PSCMSTREAM pIn, PSCMSTREAM pOut, PCSCMSETTINGSBASE pSettings)
     815{
     816    RT_NOREF2(pIn, pOut);
     817    if (   !pSettings->fSetSvnExecutable
     818        || !ScmSvnIsInWorkingCopy(pState))
     819        return false;
     820
     821    /* remove svn:eol-style and svn:keywords */
     822    static const char * const s_apszRemove[] = { "svn:eol-style", "svn:keywords" };
     823    for (uint32_t i = 0; i < RT_ELEMENTS(s_apszRemove); i++)
     824    {
     825        char *pszValue;
     826        int rc = ScmSvnQueryProperty(pState, s_apszRemove[i], &pszValue);
     827        if (RT_SUCCESS(rc))
     828        {
     829            ScmVerbose(pState, 2, " * removing %s=%s\n", s_apszRemove[i], pszValue);
     830            RTStrFree(pszValue);
     831            rc = ScmSvnDelProperty(pState, s_apszRemove[i]);
     832            if (RT_FAILURE(rc))
     833                ScmError(pState, rc, "ScmSvnSetProperty(,%s): %Rrc\n", s_apszRemove[i], rc);
     834        }
     835        else if (rc != VERR_NOT_FOUND)
     836            ScmError(pState, rc, "ScmSvnQueryProperty: %Rrc\n", rc);
     837    }
     838
     839    /* Make sure there is a svn:mime-type set. */
     840    int rc = ScmSvnQueryProperty(pState, "svn:mime-type", NULL);
     841    if (rc == VERR_NOT_FOUND)
     842    {
     843        ScmVerbose(pState, 2, " * settings svn:mime-type\n");
     844        rc = ScmSvnSetProperty(pState, "svn:mime-type", "application/octet-stream");
     845        if (RT_FAILURE(rc))
     846            ScmError(pState, rc, "ScmSvnSetProperty: %Rrc\n", rc);
     847    }
     848    else if (RT_FAILURE(rc))
     849        ScmError(pState, rc, "ScmSvnQueryProperty: %Rrc\n", rc);
     850
    748851    return false;
    749852}
     
    800903    return false;
    801904}
    802 
    803905
    804906/**
Note: See TracChangeset for help on using the changeset viewer.

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