{
if( component == NULL ) return;
+ // check for duplicate name
std::string name = component->get_name();
- if( get_subsystem( name.c_str() ) != NULL ) {
- SG_LOG( SG_ALL, SG_ALERT, "Duplicate autopilot component " << name << " ignored" );
- return;
+ for( unsigned i = 0; get_subsystem( name.c_str() ) != NULL; i++ ) {
+ ostringstream buf;
+ buf << name << "_" << i;
+ name = buf.str();
}
+ if( name != component->get_name() )
+ SG_LOG( SG_ALL, SG_ALERT, "Duplicate autopilot component " << component->get_name() << ", renamed to " << name );
+
set_subsystem( name.c_str(), component );
}
apName = buf.str();
}
+ {
+ // check for duplicate names
+ string name = apName;
+ for( unsigned i = 0; get_subsystem( apName.c_str() ) != NULL; i++ ) {
+ ostringstream buf;
+ buf << apName << "_" << i;
+ apName = buf.str();
+ }
+ if( apName != name )
+ SG_LOG( SG_ALL, SG_ALERT, "Duplicate autopilot component " << name << ", renamed to " << apName );
+ }
+
if( get_subsystem( apName.c_str() ) != NULL ) {
SG_LOG( SG_ALL, SG_ALERT, "Duplicate autopilot configuration name " << apName << " ignored" );
continue;