OSDN Git Service

PATCH: [ 2725549 ] Set a codepage with command-line parameter
authorKimmo Varis <kimmov@gmail.com>
Tue, 7 Apr 2009 15:10:27 +0000 (15:10 +0000)
committerKimmo Varis <kimmov@gmail.com>
Tue, 7 Apr 2009 15:10:27 +0000 (15:10 +0000)
 Submitted by bulklodd <bulklodd@users.sourceforge.net>

Docs/Users/ChangeLog.txt
Docs/Users/Contributors.txt
Src/Merge.cpp
Src/MergeCmdLineInfo.cpp
Src/MergeCmdLineInfo.h
Testing/GoogleTest/CmdLine/MergeCmdLine_test.cpp

index fe91b02..2eab2b9 100644 (file)
@@ -7,6 +7,7 @@ WinMerge 2.13.6
   Show deleted differences in difference highlight with own
     color (#2669526)
   Disable folder compare tree-view by default (#2714968)
+  Allow setting codepage from command line (#2725549)
   Bugfix: Says files are identical after making files different in another
     application and re-loading them (#2672737)
   Bugfix: Difference pane didn't show added lines (#2710146)
index 05f4fa5..92b089e 100644 (file)
@@ -134,6 +134,7 @@ Other Contributors (code, ideas, testing..):
 * Andre Arpin
 * Steve Beaudoin
 * Denis Bradford
+* bulklodd <bulklodd@users.sourceforge.net>
 * Adam Carrivick
 * Hern Chen
 * Jeremy Dewey
index 48bb17f..46a5377 100644 (file)
@@ -56,6 +56,7 @@
 #include "OptionsDef.h"
 #include "MergeCmdLineInfo.h"
 #include "ConflictFileParser.h"
+#include "codepage.h"
 
 // For shutdown cleanup
 #include "charsets.h"
@@ -572,6 +573,12 @@ BOOL CMergeApp::ParseArgsAndDoOpen(MergeCmdLineInfo& cmdInfo, CMainFrame* pMainF
                m_globalFileFilter.SetFilter(cmdInfo.m_sFileFilter.c_str());
        }
 
+       // Set codepage.
+       if (cmdInfo.m_nCodepage)
+       {
+               updateDefaultCodepage(2,cmdInfo.m_nCodepage);
+       }
+
        // Unless the user has requested to see WinMerge's usage open files for
        // comparison.
        if (cmdInfo.m_bShowUsage)
index 019e3b7..6439ce0 100644 (file)
@@ -109,6 +109,7 @@ MergeCmdLineInfo::MergeCmdLineInfo(LPCTSTR q):
        m_bNonInteractive(false),
        m_bSingleInstance(false),
        m_bShowUsage(false),
+       m_nCodepage(0),
        m_dwLeftFlags(FFILEOPEN_NONE),
        m_dwRightFlags(FFILEOPEN_NONE)
 {
@@ -336,6 +337,12 @@ void MergeCmdLineInfo::ParseWinMergeCmdLine(LPCTSTR q)
                        // -x to close application if files are identical.
                        m_bExitIfNoDiff = true;
                }
+               else if (param == _T("cp"))
+               {
+                       String codepage;
+                       q = EatParam(q, codepage);
+                       m_nCodepage = _ttoi(codepage.c_str());
+               }
                else if (param == _T("ignorews"))
                {
                        q = SetOption(q, OPT_CMP_IGNORE_WHITESPACE);
index cd21a7a..b4ca85f 100644 (file)
@@ -54,6 +54,7 @@ public:
        bool m_bNonInteractive; /**< Suppress user's notifications. */
        bool m_bSingleInstance; /**< Allow only one instance of WinMerge executable. */
        bool m_bShowUsage; /**< Show a brief reminder to command line arguments. */
+       int  m_nCodepage;  /**< Codepage. */
 
        DWORD m_dwLeftFlags; /**< Left side file's behavior options. */
        DWORD m_dwRightFlags; /**< Right side file's behavior options. */
index ac48854..0dfbf0a 100644 (file)
@@ -60,6 +60,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);
                EXPECT_FALSE(cmdInfo.m_bShowUsage);
+               EXPECT_EQ(0,cmdInfo.m_nCodepage);
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwLeftFlags);
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwRightFlags);
                EXPECT_EQ("", cmdInfo.m_sLeftDesc);
@@ -81,6 +82,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);
                EXPECT_FALSE(cmdInfo.m_bShowUsage);
+               EXPECT_EQ(0,cmdInfo.m_nCodepage);
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwLeftFlags);
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwRightFlags);
                EXPECT_EQ("", cmdInfo.m_sLeftDesc);
@@ -102,6 +104,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);
                EXPECT_FALSE(cmdInfo.m_bShowUsage);
+               EXPECT_EQ(0,cmdInfo.m_nCodepage);
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwLeftFlags);
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwRightFlags);
                EXPECT_EQ("", cmdInfo.m_sLeftDesc);
@@ -123,6 +126,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);
                EXPECT_FALSE(cmdInfo.m_bShowUsage);
+               EXPECT_EQ(0,cmdInfo.m_nCodepage);
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwLeftFlags);
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwRightFlags);
                EXPECT_EQ("", cmdInfo.m_sLeftDesc);
@@ -145,6 +149,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);
                EXPECT_FALSE(cmdInfo.m_bShowUsage);
+               EXPECT_EQ(0,cmdInfo.m_nCodepage);
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwRightFlags);
                EXPECT_EQ("", cmdInfo.m_sLeftDesc);
@@ -167,6 +172,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);
                EXPECT_FALSE(cmdInfo.m_bShowUsage);
+               EXPECT_EQ(0,cmdInfo.m_nCodepage);
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwRightFlags);
                EXPECT_EQ("", cmdInfo.m_sLeftDesc);
@@ -189,6 +195,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);
                EXPECT_FALSE(cmdInfo.m_bShowUsage);
+               EXPECT_EQ(0,cmdInfo.m_nCodepage);
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwRightFlags);
                EXPECT_EQ("", cmdInfo.m_sLeftDesc);
@@ -213,6 +220,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);
                EXPECT_FALSE(cmdInfo.m_bShowUsage);
+               EXPECT_EQ(0,cmdInfo.m_nCodepage);
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwRightFlags);
                EXPECT_EQ("", cmdInfo.m_sLeftDesc);
@@ -236,6 +244,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);
                EXPECT_FALSE(cmdInfo.m_bShowUsage);
+               EXPECT_EQ(0,cmdInfo.m_nCodepage);
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwRightFlags);
                EXPECT_EQ("", cmdInfo.m_sLeftDesc);
@@ -258,6 +267,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);
                EXPECT_FALSE(cmdInfo.m_bShowUsage);
+               EXPECT_EQ(0,cmdInfo.m_nCodepage);
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwRightFlags);
                EXPECT_EQ("", cmdInfo.m_sLeftDesc);
@@ -281,6 +291,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);
                EXPECT_FALSE(cmdInfo.m_bShowUsage);
+               EXPECT_EQ(0,cmdInfo.m_nCodepage);
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwRightFlags);
                EXPECT_EQ("", cmdInfo.m_sLeftDesc);
@@ -304,6 +315,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);
                EXPECT_FALSE(cmdInfo.m_bShowUsage);
+               EXPECT_EQ(0,cmdInfo.m_nCodepage);
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwRightFlags);
                EXPECT_EQ("", cmdInfo.m_sLeftDesc);
@@ -327,6 +339,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);
                EXPECT_FALSE(cmdInfo.m_bShowUsage);
+               EXPECT_EQ(0,cmdInfo.m_nCodepage);
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwRightFlags);
                EXPECT_EQ("", cmdInfo.m_sLeftDesc);
@@ -350,6 +363,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);
                EXPECT_FALSE(cmdInfo.m_bShowUsage);
+               EXPECT_EQ(0,cmdInfo.m_nCodepage);
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwRightFlags);
                EXPECT_EQ("", cmdInfo.m_sLeftDesc);
@@ -375,6 +389,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);
                EXPECT_FALSE(cmdInfo.m_bShowUsage);
+               EXPECT_EQ(0,cmdInfo.m_nCodepage);
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwRightFlags);
                EXPECT_EQ("", cmdInfo.m_sLeftDesc);
@@ -398,6 +413,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);
                EXPECT_FALSE(cmdInfo.m_bShowUsage);
+               EXPECT_EQ(0,cmdInfo.m_nCodepage);
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwRightFlags);
                EXPECT_EQ("", cmdInfo.m_sLeftDesc);
@@ -421,6 +437,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);
                EXPECT_FALSE(cmdInfo.m_bShowUsage);
+               EXPECT_EQ(0,cmdInfo.m_nCodepage);
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwRightFlags);
                EXPECT_EQ("", cmdInfo.m_sLeftDesc);
@@ -443,6 +460,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);
                EXPECT_FALSE(cmdInfo.m_bShowUsage);
+               EXPECT_EQ(0,cmdInfo.m_nCodepage);
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwRightFlags);
                EXPECT_EQ("", cmdInfo.m_sLeftDesc);
@@ -466,6 +484,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);
                EXPECT_FALSE(cmdInfo.m_bShowUsage);
+               EXPECT_EQ(0,cmdInfo.m_nCodepage);
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwRightFlags);
                EXPECT_EQ("", cmdInfo.m_sLeftDesc);
@@ -489,6 +508,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);
                EXPECT_FALSE(cmdInfo.m_bShowUsage);
+               EXPECT_EQ(0,cmdInfo.m_nCodepage);
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwRightFlags);
                EXPECT_EQ("", cmdInfo.m_sLeftDesc);
@@ -511,6 +531,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);
                EXPECT_FALSE(cmdInfo.m_bShowUsage);
+               EXPECT_EQ(0,cmdInfo.m_nCodepage);
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwRightFlags);
                EXPECT_EQ("", cmdInfo.m_sLeftDesc);
@@ -533,6 +554,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);
                EXPECT_FALSE(cmdInfo.m_bShowUsage);
+               EXPECT_EQ(0,cmdInfo.m_nCodepage);
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwRightFlags);
                EXPECT_EQ("", cmdInfo.m_sLeftDesc);
@@ -556,6 +578,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);
                EXPECT_FALSE(cmdInfo.m_bShowUsage);
+               EXPECT_EQ(0,cmdInfo.m_nCodepage);
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwRightFlags);
                EXPECT_EQ("", cmdInfo.m_sLeftDesc);
@@ -579,6 +602,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);
                EXPECT_FALSE(cmdInfo.m_bShowUsage);
+               EXPECT_EQ(0,cmdInfo.m_nCodepage);
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwRightFlags);
                EXPECT_EQ("", cmdInfo.m_sLeftDesc);
@@ -602,6 +626,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);
                EXPECT_FALSE(cmdInfo.m_bShowUsage);
+               EXPECT_EQ(0,cmdInfo.m_nCodepage);
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwRightFlags);
                EXPECT_EQ("", cmdInfo.m_sLeftDesc);
@@ -610,6 +635,117 @@ namespace
                EXPECT_EQ("", cmdInfo.m_sPreDiffer);
        }
 
+       // Command line with a correct codepage 
+       TEST_F(MergeCmdLineInfoTest, CorrectCodepage)
+       {
+               MergeCmdLineInfo cmdInfo("C:\\WinMerge\\WinMerge.exe -cp 1251");
+               EXPECT_EQ(0, cmdInfo.m_Files.size());
+               EXPECT_EQ(SW_SHOWNORMAL, cmdInfo.m_nCmdShow);
+               EXPECT_FALSE(cmdInfo.m_bClearCaseTool);
+               EXPECT_FALSE(cmdInfo.m_bEscShutdown);
+               EXPECT_FALSE(cmdInfo.m_bExitIfNoDiff);
+               EXPECT_FALSE(cmdInfo.m_bRecurse);
+               EXPECT_FALSE(cmdInfo.m_bNonInteractive);
+               EXPECT_FALSE(cmdInfo.m_bSingleInstance);
+               EXPECT_FALSE(cmdInfo.m_bShowUsage);
+               EXPECT_EQ(1251,cmdInfo.m_nCodepage);
+               EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwLeftFlags);
+               EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwRightFlags);
+               EXPECT_EQ("", cmdInfo.m_sLeftDesc);
+               EXPECT_EQ("", cmdInfo.m_sRightDesc);
+               EXPECT_EQ("", cmdInfo.m_sFileFilter);
+               EXPECT_EQ("", cmdInfo.m_sPreDiffer);
+       }
+
+       // Command line with a wrong specified codepage
+       TEST_F(MergeCmdLineInfoTest, IncorrectCodepage)
+       {
+               MergeCmdLineInfo cmdInfo("C:\\WinMerge\\WinMerge.exe -cp windows1251");
+               EXPECT_EQ(0, cmdInfo.m_Files.size());
+               EXPECT_EQ(SW_SHOWNORMAL, cmdInfo.m_nCmdShow);
+               EXPECT_FALSE(cmdInfo.m_bClearCaseTool);
+               EXPECT_FALSE(cmdInfo.m_bEscShutdown);
+               EXPECT_FALSE(cmdInfo.m_bExitIfNoDiff);
+               EXPECT_FALSE(cmdInfo.m_bRecurse);
+               EXPECT_FALSE(cmdInfo.m_bNonInteractive);
+               EXPECT_FALSE(cmdInfo.m_bSingleInstance);
+               EXPECT_FALSE(cmdInfo.m_bShowUsage);
+               EXPECT_EQ(0,cmdInfo.m_nCodepage);
+               EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwLeftFlags);
+               EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwRightFlags);
+               EXPECT_EQ("", cmdInfo.m_sLeftDesc);
+               EXPECT_EQ("", cmdInfo.m_sRightDesc);
+               EXPECT_EQ("", cmdInfo.m_sFileFilter);
+               EXPECT_EQ("", cmdInfo.m_sPreDiffer);
+       }
+
+       // Command line with a missed codepage
+       TEST_F(MergeCmdLineInfoTest, MissedCodepage)
+       {
+               MergeCmdLineInfo cmdInfo("C:\\WinMerge\\WinMerge.exe -cp ");
+               EXPECT_EQ(0, cmdInfo.m_Files.size());
+               EXPECT_EQ(SW_SHOWNORMAL, cmdInfo.m_nCmdShow);
+               EXPECT_FALSE(cmdInfo.m_bClearCaseTool);
+               EXPECT_FALSE(cmdInfo.m_bEscShutdown);
+               EXPECT_FALSE(cmdInfo.m_bExitIfNoDiff);
+               EXPECT_FALSE(cmdInfo.m_bRecurse);
+               EXPECT_FALSE(cmdInfo.m_bNonInteractive);
+               EXPECT_FALSE(cmdInfo.m_bSingleInstance);
+               EXPECT_FALSE(cmdInfo.m_bShowUsage);
+               EXPECT_EQ(0,cmdInfo.m_nCodepage);
+               EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwLeftFlags);
+               EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwRightFlags);
+               EXPECT_EQ("", cmdInfo.m_sLeftDesc);
+               EXPECT_EQ("", cmdInfo.m_sRightDesc);
+               EXPECT_EQ("", cmdInfo.m_sFileFilter);
+               EXPECT_EQ("", cmdInfo.m_sPreDiffer);
+       }
+
+       // Command line with a missed codepage and with left path
+       TEST_F(MergeCmdLineInfoTest, MissedCodepageWithLeftPath)
+       {
+               MergeCmdLineInfo cmdInfo("C:\\WinMerge\\WinMerge.exe -cp C:\\Temp ");
+               EXPECT_EQ(0, cmdInfo.m_Files.size());
+               EXPECT_EQ(SW_SHOWNORMAL, cmdInfo.m_nCmdShow);
+               EXPECT_FALSE(cmdInfo.m_bClearCaseTool);
+               EXPECT_FALSE(cmdInfo.m_bEscShutdown);
+               EXPECT_FALSE(cmdInfo.m_bExitIfNoDiff);
+               EXPECT_FALSE(cmdInfo.m_bRecurse);
+               EXPECT_FALSE(cmdInfo.m_bNonInteractive);
+               EXPECT_FALSE(cmdInfo.m_bSingleInstance);
+               EXPECT_FALSE(cmdInfo.m_bShowUsage);
+               EXPECT_EQ(0,cmdInfo.m_nCodepage);
+               EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwLeftFlags);
+               EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwRightFlags);
+               EXPECT_EQ("", cmdInfo.m_sLeftDesc);
+               EXPECT_EQ("", cmdInfo.m_sRightDesc);
+               EXPECT_EQ("", cmdInfo.m_sFileFilter);
+               EXPECT_EQ("", cmdInfo.m_sPreDiffer);
+       }
+       
+       // Missed codepage with both paths
+       TEST_F(MergeCmdLineInfoTest, MissedCodepageWithBothPaths)
+       {
+               MergeCmdLineInfo cmdInfo("C:\\WinMerge\\WinMerge.exe -cp C:\\Temp C:\\Temp2");
+               EXPECT_EQ(1, cmdInfo.m_Files.size());
+               EXPECT_EQ("C:\\Temp2", cmdInfo.m_Files[0]);
+               EXPECT_EQ(SW_SHOWNORMAL, cmdInfo.m_nCmdShow);
+               EXPECT_FALSE(cmdInfo.m_bClearCaseTool);
+               EXPECT_FALSE(cmdInfo.m_bEscShutdown);
+               EXPECT_FALSE(cmdInfo.m_bExitIfNoDiff);
+               EXPECT_FALSE(cmdInfo.m_bRecurse);
+               EXPECT_FALSE(cmdInfo.m_bNonInteractive);
+               EXPECT_FALSE(cmdInfo.m_bSingleInstance);
+               EXPECT_FALSE(cmdInfo.m_bShowUsage);
+               EXPECT_EQ(0,cmdInfo.m_nCodepage);
+               EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);
+               EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwRightFlags);
+               EXPECT_EQ("", cmdInfo.m_sLeftDesc);
+               EXPECT_EQ("", cmdInfo.m_sRightDesc);
+               EXPECT_EQ("", cmdInfo.m_sFileFilter);
+               EXPECT_EQ("", cmdInfo.m_sPreDiffer);
+       }
+
 }  // namespace
 
 int main(int argc, char **argv)