MCPcopy Create free account
hub / github.com/ProgerXP/Notepad2e / ParseCommandLine

Function ParseCommandLine

src/Notepad2.c:4700–5035  ·  view source on GitHub ↗

============================================================================= ParseCommandLine()

Source from the content-addressed store, hash-verified

4698//
4699//
4700void 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 ) {

Callers 1

WinMainFunction · 0.85

Calls 5

StrTab2SpaceFunction · 0.85
ExtractFirstArgumentFunction · 0.85
StrLTrimFunction · 0.85
TrimStringFunction · 0.85
PathFixBackslashesFunction · 0.85

Tested by

no test coverage detected