============================================================================= ParseCommandLine()
| 4698 | // |
| 4699 | // |
| 4700 | void ParseCommandLine() |
| 4701 | { |
| 4702 | LPWSTR lp1, lp2, lp3; |
| 4703 | BOOL bContinue = TRUE; |
| 4704 | BOOL bIsFileArg = FALSE; |
| 4705 | BOOL bIsNotepadReplacement = FALSE; |
| 4706 | LPWSTR lpCmdLine = GetCommandLine(); |
| 4707 | if ( lstrlen ( lpCmdLine ) == 0 ) { |
| 4708 | return; |
| 4709 | } |
| 4710 | // Good old console can also send args separated by Tabs |
| 4711 | StrTab2Space ( lpCmdLine ); |
| 4712 | lp1 = LocalAlloc ( LPTR, sizeof ( WCHAR ) * ( lstrlen ( lpCmdLine ) + 1 ) ); |
| 4713 | lp2 = LocalAlloc ( LPTR, sizeof ( WCHAR ) * ( lstrlen ( lpCmdLine ) + 1 ) ); |
| 4714 | lp3 = LocalAlloc ( LPTR, sizeof ( WCHAR ) * ( lstrlen ( lpCmdLine ) + 1 ) ); |
| 4715 | // Start with 2nd argument |
| 4716 | ExtractFirstArgument ( lpCmdLine, lp1, lp3 ); |
| 4717 | while ( bContinue && ExtractFirstArgument ( lp3, lp1, lp2 ) ) { |
| 4718 | // options |
| 4719 | if ( !bIsFileArg && lstrcmp ( lp1, L"+" ) == 0 ) { |
| 4720 | flagMultiFileArg = 2; |
| 4721 | bIsFileArg = TRUE; |
| 4722 | } else if ( !bIsFileArg && lstrcmp ( lp1, L"-" ) == 0 ) { |
| 4723 | flagMultiFileArg = 1; |
| 4724 | bIsFileArg = TRUE; |
| 4725 | } else if ( !bIsFileArg && ( ( *lp1 == L'/' ) || ( *lp1 == L'-' ) ) ) { |
| 4726 | // LTrim |
| 4727 | StrLTrim ( lp1, L"-/" ); |
| 4728 | // Encoding |
| 4729 | if ( lstrcmpi ( lp1, L"ANSI" ) == 0 || lstrcmpi ( lp1, L"A" ) == 0 || lstrcmpi ( lp1, L"MBCS" ) == 0 ) { |
| 4730 | flagSetEncoding = IDM_ENCODING_ANSI - IDM_ENCODING_ANSI + 1; |
| 4731 | } else if ( lstrcmpi ( lp1, L"UNICODE" ) == 0 || lstrcmpi ( lp1, L"W" ) == 0 ) { |
| 4732 | flagSetEncoding = IDM_ENCODING_UNICODE - IDM_ENCODING_ANSI + 1; |
| 4733 | } else if ( lstrcmpi ( lp1, L"UNICODEBE" ) == 0 || lstrcmpi ( lp1, L"UNICODE-BE" ) == 0 ) { |
| 4734 | flagSetEncoding = IDM_ENCODING_UNICODEREV - IDM_ENCODING_ANSI + 1; |
| 4735 | } else if ( lstrcmpi ( lp1, L"UTF8" ) == 0 || lstrcmpi ( lp1, L"UTF-8" ) == 0 ) { |
| 4736 | flagSetEncoding = IDM_ENCODING_UTF8 - IDM_ENCODING_ANSI + 1; |
| 4737 | } else if ( lstrcmpi ( lp1, L"UTF8SIG" ) == 0 || lstrcmpi ( lp1, L"UTF-8SIG" ) == 0 || |
| 4738 | lstrcmpi ( lp1, L"UTF8SIGNATURE" ) == 0 || lstrcmpi ( lp1, L"UTF-8SIGNATURE" ) == 0 || |
| 4739 | lstrcmpi ( lp1, L"UTF8-SIGNATURE" ) == 0 || lstrcmpi ( lp1, L"UTF-8-SIGNATURE" ) == 0 ) { |
| 4740 | flagSetEncoding = IDM_ENCODING_UTF8SIGN - IDM_ENCODING_ANSI + 1; |
| 4741 | } |
| 4742 | // EOL Mode |
| 4743 | else if ( lstrcmpi ( lp1, L"CRLF" ) == 0 || lstrcmpi ( lp1, L"CR+LF" ) == 0 ) { |
| 4744 | flagSetEOLMode = IDM_LINEENDINGS_CRLF - IDM_LINEENDINGS_CRLF + 1; |
| 4745 | } else if ( lstrcmpi ( lp1, L"LF" ) == 0 ) { |
| 4746 | flagSetEOLMode = IDM_LINEENDINGS_LF - IDM_LINEENDINGS_CRLF + 1; |
| 4747 | } else if ( lstrcmpi ( lp1, L"CR" ) == 0 ) { |
| 4748 | flagSetEOLMode = IDM_LINEENDINGS_CR - IDM_LINEENDINGS_CRLF + 1; |
| 4749 | } |
| 4750 | // Shell integration |
| 4751 | else if ( StrCmpNI ( lp1, L"appid=", CSTRLEN ( L"appid=" ) ) == 0 ) { |
| 4752 | StrCpyN ( g_wchAppUserModelID, lp1 + CSTRLEN ( L"appid=" ), COUNTOF ( g_wchAppUserModelID ) ); |
| 4753 | StrTrim ( g_wchAppUserModelID, L" " ); |
| 4754 | if ( lstrlen ( g_wchAppUserModelID ) == 0 ) { |
| 4755 | lstrcpy ( g_wchAppUserModelID, L"(default)" ); |
| 4756 | } |
| 4757 | } else if ( StrCmpNI ( lp1, L"sysmru=", CSTRLEN ( L"sysmru=" ) ) == 0 ) { |
no test coverage detected