//______________________________________________________________________________
//                                                                            []
//` string                                                                    []      
//                                                                            []
bool GetArg(const char * inStr, string& argValue, const char* argName)
{
	GET_ARG_START;

	if (*pName != FIELD_HEADER_CHAR)		// Ошибка: нет маркера начала значения.
		return false;
	pName++;										// На начало значения.

	size_t end_index = strcspn(pName, ARG_NAME_HEADER_STR FIELD_HEADER_STR);
	if (pName[end_index] == FIELD_HEADER_CHAR)
		return false;			// Ошибка - встретился разделитель полей для скалярного параметра.

	argValue.Copy(pName, end_index);		// Скопировать всё до маркера или до конца строки.

	return true;
}
Example #2
0
static const string& GetFarTitleAddons()
{
	// " - Far%Ver%Admin"
	/*
		%Ver      - 2.0
		%Build    - 1259
		%Platform - x86
		%Admin    - MFarTitleAddonsAdmin
		%PID      - current PID
    */
	static FormatString strVer, strBuild, strPID;
	static bool bFirstRun = true;
	static string strTitleAddons;

	strTitleAddons.Copy(L" - Far ",7);
	strTitleAddons += Opt.strTitleAddons;

	if (bFirstRun)
	{
		bFirstRun = false;
		strVer<<FAR_VERSION.Major<<L"."<<FAR_VERSION.Minor;
		strBuild<<FAR_VERSION.Build;
		strPID<<GetCurrentProcessId();
	}

	ReplaceStrings(strTitleAddons,L"%PID",strPID,-1,true);
	ReplaceStrings(strTitleAddons,L"%Ver",strVer,-1,true);
	ReplaceStrings(strTitleAddons,L"%Build",strBuild,-1,true);
	ReplaceStrings(strTitleAddons,L"%Platform",
#ifdef _WIN64
#ifdef _M_IA64
	L"IA64",
#else
	L"x64",
#endif
#else
	L"x86",
#endif
	-1,true);
	ReplaceStrings(strTitleAddons,L"%Admin",Opt.IsUserAdmin?MSG(MFarTitleAddonsAdmin):L"",-1,true);
	RemoveTrailingSpaces(strTitleAddons);

	return strTitleAddons;
}