- Timestamp:
- Oct 25, 2017 9:39:14 AM (7 years ago)
- svn:sync-xref-src-repo-rev:
- 118579
- Location:
- trunk/src/bldprogs
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/bldprogs/scm.cpp
r69258 r69261 354 354 }; 355 355 356 356 static 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 } 357 364 static SCMCFGENTRY const g_aConfigs[] = 358 365 { 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" ), 372 380 }; 373 381 … … 1402 1410 return rc; 1403 1411 } 1404 if (ScmStreamIsText(&Stream1) )1412 if (ScmStreamIsText(&Stream1) || pCfg->fBinary) 1405 1413 { 1406 1414 ScmVerboseBanner(pState, 3); … … 1461 1469 * If rewritten, write it back to disk. 1462 1470 */ 1463 if (fModified )1471 if (fModified && !pCfg->fBinary) 1464 1472 { 1465 1473 if (!g_fDryRun) … … 1481 1489 g_cFilesModified++; 1482 1490 } 1491 else if (fModified) 1492 rc = RTMsgErrorRc(VERR_INTERNAL_ERROR, "Rewriters modified binary file! Impossible!"); 1483 1493 1484 1494 /* -
trunk/src/bldprogs/scm.h
r69258 r69261 192 192 FNSCMREWRITER rewrite_AdjustTrailingLines; 193 193 FNSCMREWRITER rewrite_SvnNoExecutable; 194 FNSCMREWRITER rewrite_SvnNoKeyword; 195 FNSCMREWRITER rewrite_SvnNoEolStyle; 196 FNSCMREWRITER rewrite_SvnBinary; 194 197 FNSCMREWRITER rewrite_SvnKeywords; 195 198 FNSCMREWRITER rewrite_Copyright_CstyleComment; … … 220 223 /** Pointer to an array of rewriters. */ 221 224 PFNSCMREWRITER const *papfnRewriter; 225 /** Set if the entry handles binaries. */ 226 bool fBinary; 222 227 /** File pattern (simple). */ 223 228 const char *pszFilePattern; -
trunk/src/bldprogs/scmrw.cpp
r69258 r69261 723 723 724 724 /** 725 * Make sure there is no svn:executable keywordon the current file.725 * Make sure there is no svn:executable property on the current file. 726 726 * 727 727 * @returns false - the state carries these kinds of changes. … … 746 746 ScmError(pState, rc, "ScmSvnSetProperty: %Rrc\n", rc); 747 747 } 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 */ 760 bool 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 */ 787 bool 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 */ 814 bool 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 748 851 return false; 749 852 } … … 800 903 return false; 801 904 } 802 803 905 804 906 /**
Note:
See TracChangeset
for help on using the changeset viewer.