Пример #1
0
/// @brief	mls 시작시 초기화 함수
///
///  config준비. 설정파일 읽기, 컬러셋 읽기, history읽기를 한다.
/// @return	성공여부 0일때 성공
bool Initialize()
{
	int t;
	const char *succMsg = "[\033[01;36m SUCCESS \033[0m]";
	const char *failMsg = "[\033[01;31m  FAIL   \033[0m]";
	const char *errMsg  = "[\033[01;31m  ERROR  \033[0m]";
	
	char*	cwd = getcwd(NULL, 0);
	if (cwd == NULL)
	{
		String sMsg;
		sMsg.AppendBlank(60, "%s", strerror(errno));
		cout << sMsg.c_str();
		cout << errMsg << endl;
		return false;
	}
	if (access(cwd, R_OK | X_OK) == -1)
	{
		String sMsg;
		sMsg.AppendBlank(60, "%s", strerror(errno));
		cout << sMsg.c_str();
		cout << errMsg << endl;
		return false;
	}
	free(cwd);

	Set_Locale(_nLangSet); 	// Locale  설정
	
	string sCfgDefaultPath, sCfgColorPath;
	
	sCfgDefaultPath = sCfgDefaultPath + __LINM_CFGPATH__ + "/default.cfg";
	sCfgColorPath = sCfgColorPath + __LINM_CFGPATH__ + "/colorset.cfg";

	{ // Config 준비..
		struct passwd *pw = getpwuid(getuid());
		{
			std::string home  = pw->pw_dir;
			home += '/';

			g_tCfg.SetStaticValue("Home", home);
		}

		// . config dir 지정
		g_tCfg.SetStaticValue("CfgHome", g_tCfg.GetValue("Static", "Home") + ".linm/");
		g_tCfg.SetStaticValue("TmpDir", g_tCfg.GetValue("Static", "Home") + ".linm/linm_tmpdir/");
		g_tCfg.SetStaticValue("TmpCopyDir", g_tCfg.GetValue("Static", "Home") + ".linm/linm_copydir/");
		g_tColorCfg.Init();
		
		// 홈에 .linm를 만든다. mcd treeinfo를 저장하기 위해서도 필요
		mkdir((g_tCfg.GetValue("Static", "Home") + ".linm").c_str(), 0755);
		// 파일 View 필요한 tmp 디렉토리.
		mkdir((g_tCfg.GetValue("Static", "TmpDir")).c_str(), 0777);
		// 파일 복사에 필요한 tmp 디렉토리.
		mkdir((g_tCfg.GetValue("Static", "TmpCopyDir")).c_str(), 0777);
	}

	{ // 설정 파일 읽기
		_vCfgFile.push_back( g_tCfg.GetValue("Static", "CfgHome") + "default.cfg" );
		_vCfgFile.push_back( sCfgDefaultPath );

		for (t=0; t<(int)_vCfgFile.size(); t++)
		{
			string cfgfile = _vCfgFile[t];

			if (g_tCfg.Load(cfgfile.c_str()))
			{
				g_tCfg.SetStaticValue("CfgFile", cfgfile);
#ifdef __DEBUGMODE__
				String sMsg;
				sMsg.AppendBlank(60, "Load configuration %s", cfgfile.c_str());
				cout << sMsg.c_str();
				cout << succMsg << endl;
#endif
				if (cfgfile == sCfgDefaultPath)
				{
					string sCmd = "cp " + sCfgDefaultPath + " " + g_tCfg.GetValue("Static", "Home") + ".linm";
					system(sCmd.c_str());
				}
				break;
			}
			else
			{
				String sMsg;
				sMsg.AppendBlank(60, "Load configuration %s", cfgfile.c_str());
				cout << sMsg.c_str();
				cout << failMsg << endl;
			}
		}

		if (t == (int)_vCfgFile.size())
		{
			String sMsg;
			sMsg.AppendBlank(60, "Load configuration ");
			cout << sMsg.c_str();
			cout << failMsg << endl;
			return false;
		}
	}
	
	{ // 컬러셋 읽기
		if ( g_tCfg.GetValue("Default", "ColorSetFile") != "")
			_vColFile.push_back( g_tCfg.GetValue("Static", "CfgHome") + g_tCfg.GetValue("Default", "ColorSetFile"));
		_vColFile.push_back( sCfgColorPath );
	
		for (t=0; t<(int)_vColFile.size(); t++)
		{
			string colfile = _vColFile[t];
			if (g_tColorCfg.Load(colfile.c_str()))
			{
				g_tCfg.SetStaticValue("ColFile", colfile);
#ifdef __DEBUGMODE__
				String sMsg;
				sMsg.AppendBlank(60, "Load colorset %s", colfile.c_str());
				cout << sMsg.c_str();
				cout << succMsg << endl;
#endif
				if (colfile == sCfgColorPath)
				{
					string sCmd = "cp " + sCfgColorPath + " " + g_tCfg.GetValue("Static", "Home") + ".linm";
					system(sCmd.c_str());
				}
				break;
			}
			else
			{
				String sMsg;
				sMsg.AppendBlank(60, "Load colorset %s", colfile.c_str());
				cout << failMsg << endl;
			}
		}

		if (t == (int)_vColFile.size())
		{
			String sMsg;
			sMsg.AppendBlank(60, "Load colorset");
			cout << sMsg.c_str();
			cout << failMsg << endl;
			return false;
		}
	}
	return true;
}
Пример #2
0
/// @brief  Mls keybind파일, mls editor keybind 파일을 읽는다.
///
/// MainFrame 안에 KeyBind가 있기 때문에 따로 만듬.
/// @return keybind 파일 읽기 성공여부.
bool	Load_KeyFile()
{
	int t;
	const char *succMsg = "[\033[01;36m SUCCESS \033[0m]";
	const char *failMsg = "[\033[01;31m  FAIL   \033[0m]";
	string	sKeyCfgPath;
	sKeyCfgPath = sKeyCfgPath + __LINM_CFGPATH__ + "/keyset.cfg";

	{// Key Binding file을 읽는다.
		if (g_tCfg.GetValue("Default", "KeySetFile") != "")
			_vKeyFile.push_back( g_tCfg.GetValue("Static", "CfgHome") + g_tCfg.GetValue("Default", "KeySetFile"));
		_vKeyFile.push_back( sKeyCfgPath );

		for (t=0; t<(int)_vKeyFile.size(); t++)
		{
			string keyfile = _vKeyFile[t];
			if ( g_tKeyCfg.Load(keyfile) )
			{
				g_tCfg.SetStaticValue("KeyFile", keyfile);
#ifdef __DEBUGMODE__
				String sMsg;
				sMsg.AppendBlank(60, "Load key settings... %s", keyfile.c_str());
				cout << sMsg.c_str();
				cout << succMsg << endl;
#endif
				if (keyfile == sKeyCfgPath)
				{
					string sCmd = "cp " + sKeyCfgPath + " " + g_tCfg.GetValue("Static", "Home") + ".linm";
					system(sCmd.c_str());
				}
				break;
			}
			else
			{
				String sMsg;
				sMsg.AppendBlank(60, "Load key settings... %s", keyfile.c_str());
				cout << sMsg.c_str();
				cout << failMsg << endl;
			}
		}

		if (t==(int)_vKeyFile.size())
		{
			String sMsg;
			sMsg.AppendBlank(60, "Load key settings... ");
			cout << sMsg.c_str();
			cout << failMsg << endl;
			return false;
		}
	}

#ifdef __DEBUGMODE__
	{
		String sMsg;
		sMsg.AppendBlank(60, "Mouse Wheel... ");
		cout << sMsg.c_str();

		#if NCURSES_MOUSE_VERSION > 1
			cout << succMsg << endl;
		#else
			cout << failMsg << endl;
		#endif
	}
#endif
	return true;
}