void CallConf( void ) { char *ptr; unsigned i; bool first; if( _IsOn( SW_HAVE_SET_CALL ) ) { ptr = TxtBuff; if( DefCallType != MAD_MSTR_NIL ) { *ptr++ = '/'; ptr += MADCli( String )( DefCallType, ptr, TXT_LEN ); } *ptr++ = '('; first = true; for( i = 0; i < MAX_PARMS; ++i ) { if( DefParms[i] != NULL ) { if( !first ) { *ptr++ = ','; } ptr = StrCopy( DefParms[i], ptr ); first = false; } } *ptr++ = ')'; if( DefReturn == NULL ) { *ptr++ = '/'; *ptr = NULLCHAR; } else { StrCopy( DefReturn, ptr ); } ConfigLine( TxtBuff ); } }
void SourceConf( void ) { char_ring *curr; char *ptr; ptr = TxtBuff; for( curr = SrcSpec; curr != NULL; curr = curr->next ) { if( ptr != TxtBuff ) { *ptr = NULLCHAR; ConfigLine( TxtBuff ); ptr = StrCopy( "/add ", TxtBuff ); } *ptr++ = '{'; ptr = StrCopy( curr->name, ptr ); *ptr++ = '}'; } *ptr = NULLCHAR; ConfigLine( TxtBuff ); }
static void LangConf( void ) { ConfigLine( Language ); }
void ShowSwitch( bool on ) { GetCmdEntry( "ON\0OFf\0", on ? 0 : 1, TxtBuff ); ConfigLine( TxtBuff ); }
void RadixConf( void ) { *CnvULongDec( DefRadix, TxtBuff ) = NULLCHAR; ConfigLine( TxtBuff ); }
bool ConfigParser::Parse(void) { if(!f_) { logger_.msg(Arc::ERROR, "Configuration file can not be read"); return false; }; while(f_.good()) { if(!f_) { logger_.msg(Arc::ERROR, "Configuration file can not be read"); return false; }; std::string line; getline(f_,line); line = Arc::trim(line); if(line.empty()) continue; if(line[0] == '#') continue; if(line[0] == '[') { if(line.length() < 2) { logger_.msg(Arc::ERROR, "Configuration file is broken - block name is too short: %s",line); return false; }; if(!block_id_.empty()) { if(!BlockEnd(block_id_,block_name_)) { return false; }; }; line = line.substr(1,line.length()-2); block_id_ = ""; block_name_ = ""; std::string::size_type ps = line.find('/'); if(ps != std::string::npos) { block_name_ = Arc::trim(line.substr(ps+1)); line.resize(ps); }; line = Arc::trim(line); block_id_ = line; if(!BlockStart(block_id_,block_name_)) { return false; }; continue; }; std::string cmd; std::string::size_type p = line.find('='); if(p == std::string::npos) { cmd = Arc::trim(line); line = ""; } else { cmd = Arc::trim(line.substr(0,p)); line = Arc::trim(line.substr(p+1)); if(is_nested(line)) line=line.substr(1,line.length()-2); }; if(cmd == "name") { if(p != std::string::npos) { block_name_ = Arc::trim(Arc::trim(line),"\""); }; continue; }; if(!ConfigLine(block_id_,block_name_,cmd,line)) { return false; }; }; if(!block_id_.empty()) { if(!BlockEnd(block_id_,block_name_)) return false; }; return true; }