From db6858ae9185bac3e9a970672a2af9d0bb2fd5a2 Mon Sep 17 00:00:00 2001 From: Perry Rapp Date: Mon, 6 Mar 2006 03:01:38 +0000 Subject: [PATCH] PATCH: [ 1441050 ] Fix RCLocalizationHelper Fix RCLocalizationHelper to detect in-place changes. Also fail if substitutions expand string (which is better than corrupting string). Created ChangeLog (this file). Added file headers including CVS Ids to various source files. Bump version from 1.0.2.0 to 1.0.3.0 (and copyright date to 2006). Plugins\src_VCPP\RCLocalizationHelper: PatternSet.cpp PatternSet.h PluginError.cpp PluginError.h RCLocalizationHelper.dsp RCLocalizationHelper.rc WinMergeScript.cpp New ChangeLog.txt Plugins\dlls: RCLocalizationHelper.dll (v1.0.3.0) Compiled from current CVS (ANSI) (VC6sp6) Release MinDependency, v1.0.3.0 RCLocalizationHelperU.dll (v1.0.3.0) Compiled from current CVS (UNICODE) (VC6sp6) Unicode Release MinDependency, v1.0.3.0 --- Plugins/Changes.txt | 20 ++++++ Plugins/dlls/RCLocalizationHelper.dll | Bin 81920 -> 81920 bytes Plugins/dlls/RCLocalizationHelperU.dll | Bin 81920 -> 86016 bytes .../src_VCPP/RCLocalizationHelper/ChangeLog.txt | 78 +++++++++++++++++++++ .../src_VCPP/RCLocalizationHelper/PatternSet.cpp | 21 +++++- Plugins/src_VCPP/RCLocalizationHelper/PatternSet.h | 13 ++++ .../src_VCPP/RCLocalizationHelper/PluginError.cpp | 15 +++- .../src_VCPP/RCLocalizationHelper/PluginError.h | 14 ++++ .../RCLocalizationHelper/RCLocalizationHelper.dsp | 4 ++ .../RCLocalizationHelper/RCLocalizationHelper.rc | 10 +-- .../RCLocalizationHelper/WinMergeScript.cpp | 29 +++++++- 11 files changed, 193 insertions(+), 11 deletions(-) create mode 100644 Plugins/src_VCPP/RCLocalizationHelper/ChangeLog.txt diff --git a/Plugins/Changes.txt b/Plugins/Changes.txt index a3c218f37..633d6c3d0 100644 --- a/Plugins/Changes.txt +++ b/Plugins/Changes.txt @@ -1,3 +1,23 @@ +Plugins\Changes.txt +Add new items to top +(This summarizes all changes to all plugins.) + +2006-03-06 Perry + PATCH: [ 1441050 ] Fix RCLocalizationHelper + Fix RCLocalizationHelper to detect in-place changes. + Also fail if substitutions expand string (which is better + than corrupting string). + (And other code cleanup.) + Plugins\src_VCPP\RCLocalizationHelper: + PatternSet.cpp PatternSet.h PluginError.cpp PluginError.h + RCLocalizationHelper.dsp RCLocalizationHelper.rc WinMergeScript.cpp + New ChangeLog.txt + Plugins\dlls: + RCLocalizationHelper.dll (v1.0.3.0) + Compiled from current CVS (ANSI) (VC6sp6) Release MinDependency, v1.0.3.0 + RCLocalizationHelperU.dll (v1.0.3.0) + Compiled from current CVS (UNICODE) (VC6sp6) Unicode Release MinDependency, v1.0.3.0 + 2006-02-17 Perry PATCH: [ 1430464 ] Excel - compare macros, comments, document properties etc Submitted by Arthur Barrett diff --git a/Plugins/dlls/RCLocalizationHelper.dll b/Plugins/dlls/RCLocalizationHelper.dll index 84652e63e956ae1a22c00102f0db660c49f0d519..0a1357f56c6fc90113f7352efbe1c116bd1ba3d3 100644 GIT binary patch delta 10756 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 diff --git a/Plugins/dlls/RCLocalizationHelperU.dll b/Plugins/dlls/RCLocalizationHelperU.dll index fd0c472ce61f55380e62cf9991a7a9d7c756000b..c336c8b2d820cbc660edc539eab30419251064eb 100644 GIT binary patch delta 15470 zcma)j3tUvy_WwBp$f)3q0*VTPGCuJ!@7I|J%0o)g0dx@G-V_PVNN37Q9J~X?cpO8w zmX(?0BlB&Tn)v`R(ekR9nVGk!tPYLc=;}o*Z2sSU2CI92_xJz*`Fz%XuC?~sYp=cb z+WQRU|3v+x&V%!w>uA4;{D9Jy*Mz*X zBmaKX@VpZu-k`j@$diYr=6#1eUN%(B^B#SqnDSiH5+DA=wyqf@icOFtPb0(FtCCmt z5Q$_$m-F)(hG_z%k*Si@p~)HjK%V=7`ao(w$d(XWt~e_GEcZK z6%m^+0I4`!M37j?X?dyRuNJY#m!XhzjlN?FM;C^1^(~fb7Q zQuvr-7(P8pbGfpvu|h-*;?Kv)R__9a=EtI%1X9u6k`w_v@98N2Bt@FPLXq7Gl8sjk z&nspm4C5$HAYXPL#11B%dMp}0M#Kyc4d20&>g9hG;RQ29$d~_V`1-FUdA?`Eg}bD# zM>Z7GImX0#NqP)b()^f#>}KMR>6O&q6cQ-|BCS$nLl8(8?+``Gg-8uC{fA9~pwLEO7}QZ3kr*)|X*s&1|R+{gniZHymT+b8Bd`W3F!?&AqpV5b? zm@Lc&9Y0->0K(MU)WE{dXj&aUmqH290*nIXz@w+gr=l5m!R3+V3PUL2c!d�SN}n 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 Xaz|kMb=d!xYzytB_S!k$w#EG)t1@(P delta 15233 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 E4=K(42mk;8 diff --git a/Plugins/src_VCPP/RCLocalizationHelper/ChangeLog.txt b/Plugins/src_VCPP/RCLocalizationHelper/ChangeLog.txt new file mode 100644 index 000000000..576ef436c --- /dev/null +++ b/Plugins/src_VCPP/RCLocalizationHelper/ChangeLog.txt @@ -0,0 +1,78 @@ +RCLocalizationHelper\ChangeLog.txt +Add new items to top + +2006-03-06, Perry Rapp + PATCH: [ 1441050 ] Fix RCLocalizationHelper + Fix RCLocalizationHelper to detect in-place changes. + Also fail if substitutions expand string (which is better + than corrupting string). + Created ChangeLog (this file). + Added file headers including CVS Ids to various source files. + Bump version from 1.0.2.0 to 1.0.3.0 (and copyright date to 2006). + Plugins\src_VCPP\RCLocalizationHelper: + PatternSet.cpp PatternSet.h PluginError.cpp PluginError.h + RCLocalizationHelper.dsp RCLocalizationHelper.rc WinMergeScript.cpp + New ChangeLog.txt + +2006-02-05 Perry + Add line filter so RCLocalization ignores codepages even if not ignoring numbers + Plugins\dlls: RCLocalizationHelper.ini RCLocalizationHelperU.ini + Plugins\src_VCPP\RCLocalizationHelper: + RCLocalizationHelper.ini RCLocalizationHelperU.ini + +2005-12-28 Perry + BUG: [ 1391212 ] New RCLocalizationHelper doesn't handle escaped quotes + Bump version from 1.0.1.0 to 1.0.2.0. + Plugins\src_VCPP\RCLocalizationHelper: + RCLocalizationHelper.rc WinMergeScript.cpp + Plugins\dlls: + RCLocalizationHelper.dll (v1.0.2.0) + Compiled from current CVS (ANSI) (VC6sp6) Release MinDependency, v1.0.2.0 + RCLocalizationHelperU.dll (v1.0.2.0) + Compiled from current CVS (UNICODE) (VC6sp6) Unicode Release MinDependency, v1.0.2.0 + +2005-12-27 Perry + PATCH: [ 1382130 ] New line-based RCLocalizationHelper + Bump version from 1.0.0.3 to 1.0.1.0 + Plugins\src_VCPP\RCLocalizationHelper: + NEW PatternSet.cpp PatternSet.h PluginError.cpp PluginError.h + NEW widestr.h + NEW RCLocalizationHelper.ini RCLocalizationHelperU.ini + RCLocalizationHelper.dsp RCLocalizationHelper.rc Resource.h + WinMergeScript.cpp + Plugins\dlls: + NEW RCLocalizationHelper.ini RCLocalizationHelperU.ini + RCLocalizationHelper.dll (v1.0.1.0) + Compiled from current CVS (ANSI) (VC6sp6) Release MinDependency, v1.0.1.0 + RCLocalizationHelperU.dll (v1.0.1.0) + Compiled from current CVS (UNICODE) (VC6sp6) Unicode Release MinDependency, v1.0.1.0 + +2005-12-16 Perry + PATCH: [ 1379270 ] Fix RCLocalizationHelper to skip numeric handling in strings + Bump version from 1.0.0.2 to 1.0.0.3 + Plugins\src_VCPP\RCLocalizationHelper: + WinMergeScript.cpp RCLocalizationHelper.rc + Plugins\dlls: RCLocalizationHelper.dll (v1.0.0.3) + +2005-12-13 Perry + PATCH: [ 1374981 ] Improvement for RCLocalizationHelper + Plugins\src_VCPP\RCLocalizationHelper: + WinMergeScript.cpp + +2005-12-07 Perry + PATCH: [ 1374931 ] Bugfixes & upload binary for RCLocalizationHelper + Plugins\dlls: RCLocalizationHelper.dll (v1.0.0.2) + Plugins\src_VCPP\RCLocalizationHelper: + RCLocalizationHelper.dsp RCLocalizationHelper.rc typeinfoex.h + Fix compile paths froma above (plugins go in MergePlugins subdirectory) + Plugins\src_VCPP\RCLocalizationHelper: + RCLocalizationHelper.dsp + +2003-12-17 Laoran + update plugin docs and examples, consequence of patch #853147 + plugins\dlls: RCLocalizationHelper.dll list.txt + plugins\src_VCPP\RCLocalizationHelper: RCLocalizationHelper.idl WinMergeScript.cpp WinMergeScript.h + +2003-11-04 Laoran + adapt plugins filters to the syntax of regular expressions + Plugins\dlls: RCLocalizationHelper.dll diff --git a/Plugins/src_VCPP/RCLocalizationHelper/PatternSet.cpp b/Plugins/src_VCPP/RCLocalizationHelper/PatternSet.cpp index c7ef0f10e..ac2292d91 100644 --- a/Plugins/src_VCPP/RCLocalizationHelper/PatternSet.cpp +++ b/Plugins/src_VCPP/RCLocalizationHelper/PatternSet.cpp @@ -1,3 +1,17 @@ +/** + * @file PatternSet.cpp + * + * @brief Implementation of PatternSet class + * + * This applied an arbitrary number of regular expression transformations + * either to make lines empty or to change them. + * + * This uses the CRegExp class from WinMerge Src\Common. + */ +// RCS ID line follows -- this is updated by CVS +// $Id$ + + #include "stdafx.h" #include #include "PatternSet.h" @@ -166,6 +180,8 @@ PatternSet::processLine(widestr & wstr) return true; } } + + bool matched=false; int j=0; for (i=0; i #include "PluginError.h" @@ -80,5 +94,4 @@ static void PluginErrorDisplay(LPCTSTR message) UINT uType = MB_OK + MB_ICONSTOP; LPCTSTR caption = _T("PluginErrorCaption"); MessageBox(NULL, message, caption, uType); - } diff --git a/Plugins/src_VCPP/RCLocalizationHelper/PluginError.h b/Plugins/src_VCPP/RCLocalizationHelper/PluginError.h index d51c4f8b7..ebf66b129 100644 --- a/Plugins/src_VCPP/RCLocalizationHelper/PluginError.h +++ b/Plugins/src_VCPP/RCLocalizationHelper/PluginError.h @@ -1,3 +1,17 @@ +/** + * @file PluginError.h + * + * @brief Declaration of global Plugin Error functions + * + * These display a string (either specified or from string resouce) + * via a MessageBox. + * @todo These need to be altered to store error in property, + * when Plugin Errors are implemented. + * + */ +// RCS ID line follows -- this is updated by CVS +// $Id$ + #ifndef PluginError_h_included #define PluginError_h_included diff --git a/Plugins/src_VCPP/RCLocalizationHelper/RCLocalizationHelper.dsp b/Plugins/src_VCPP/RCLocalizationHelper/RCLocalizationHelper.dsp index 330a003b0..ee5657ee8 100644 --- a/Plugins/src_VCPP/RCLocalizationHelper/RCLocalizationHelper.dsp +++ b/Plugins/src_VCPP/RCLocalizationHelper/RCLocalizationHelper.dsp @@ -272,5 +272,9 @@ SOURCE=.\WinMergeScript.h SOURCE=.\WinMergeScript.rgs # End Source File # End Group +# Begin Source File + +SOURCE=.\ChangeLog.txt +# End Source File # End Target # End Project diff --git a/Plugins/src_VCPP/RCLocalizationHelper/RCLocalizationHelper.rc b/Plugins/src_VCPP/RCLocalizationHelper/RCLocalizationHelper.rc index 0443783a3..8ab2d3636 100644 --- a/Plugins/src_VCPP/RCLocalizationHelper/RCLocalizationHelper.rc +++ b/Plugins/src_VCPP/RCLocalizationHelper/RCLocalizationHelper.rc @@ -54,8 +54,8 @@ END // VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,0,2,0 - PRODUCTVERSION 1,0,2,0 + FILEVERSION 1,0,3,0 + PRODUCTVERSION 1,0,3,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -73,15 +73,15 @@ BEGIN VALUE "Comments", "WinMerge plugin\0" VALUE "CompanyName", "\0" VALUE "FileDescription", "RCLocalizationHelper Module\0" - VALUE "FileVersion", "1, 0, 2, 0\0" + VALUE "FileVersion", "1, 0, 3, 0\0" VALUE "InternalName", "RCLocalizationHelper\0" - VALUE "LegalCopyright", "Copyright 2003-2005\0" + VALUE "LegalCopyright", "Copyright 2003-2006\0" VALUE "LegalTrademarks", "\0" VALUE "OLESelfRegister", "\0" VALUE "OriginalFilename", "RCLocalizationHelper.DLL\0" VALUE "PrivateBuild", "\0" VALUE "ProductName", "RCLocalizationHelper Module\0" - VALUE "ProductVersion", "1, 0, 2, 0\0" + VALUE "ProductVersion", "1, 0, 3, 0\0" VALUE "SpecialBuild", "\0" END END diff --git a/Plugins/src_VCPP/RCLocalizationHelper/WinMergeScript.cpp b/Plugins/src_VCPP/RCLocalizationHelper/WinMergeScript.cpp index bb1fde9d9..a00635744 100644 --- a/Plugins/src_VCPP/RCLocalizationHelper/WinMergeScript.cpp +++ b/Plugins/src_VCPP/RCLocalizationHelper/WinMergeScript.cpp @@ -1,4 +1,14 @@ -// WinMergeScript.cpp : Implementation of CWinMergeScript +/** + * @file WinMergeScript.cpp + * + * @brief Implementation of the main COM object CWinMergeScript + * + * This object implements the method PrediffBufferW (q.v.). + * + */ +// RCS ID line follows -- this is updated by CVS +// $Id$ + #include "stdafx.h" #include "RCLocalizationHelper.h" #include "WinMergeScript.h" @@ -73,6 +83,8 @@ STDMETHODIMP CWinMergeScript::PrediffBufferW(BSTR *pText, INT *pSize, VARIANT_BO // it is true when we're inside a string constant (& not copying text to output) bool bQuoting = false; + bool changed = false; + while (iSrc < nSize) { int linelen = GetLineLength(&text[iSrc], nSize - iSrc); @@ -85,7 +97,18 @@ STDMETHODIMP CWinMergeScript::PrediffBufferW(BSTR *pText, INT *pSize, VARIANT_BO // eg, skipping lines flagged for omission // or suppressing numbers (dialog positions) // (codepage declarations, language declarations) - ps.processLine(wstr); + if (ps.processLine(wstr)) + { + changed=true; + } + if (wstr.length() > linelen) + { + // Error + // We don't support substitutions that make + // text longer + // TODO: Call PluginErrorFmt() + return E_FAIL; + } } for (int i=0; i