/// @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; }
/// @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; }