+ } else if ( command == "run" ) {
+ string tmp;
+ if ( tokens.size() >= 2 ) {
+ SGPropertyNode args;
+ if ( tokens[1] == "reinit" ) {
+ for ( unsigned int i = 2; i < tokens.size(); ++i ) {
+ cout << "props: adding subsystem = " << tokens[i]
+ << endl;
+ SGPropertyNode *node
+ = args.getNode("subsystem", i-2, true);
+ node->setStringValue( tokens[i].c_str() );
+ }
+ } else if ( tokens[1] == "set-sea-level-air-temp-degc" ) {
+ for ( unsigned int i = 2; i < tokens.size(); ++i ) {
+ cout << "props: set-sl command = " << tokens[i]
+ << endl;
+ SGPropertyNode *node
+ = args.getNode("temp-degc", i-2, true);
+ node->setStringValue( tokens[i].c_str() );
+ }
+ } else if ( tokens[1] == "set-outside-air-temp-degc" ) {
+ for ( unsigned int i = 2; i < tokens.size(); ++i ) {
+ cout << "props: set-oat command = " << tokens[i]
+ << endl;
+ SGPropertyNode *node
+ = args.getNode("temp-degc", i-2, true);
+ node->setStringValue( tokens[i].c_str() );
+ }
+ } else if ( tokens[1] == "timeofday" ) {
+ for ( unsigned int i = 2; i < tokens.size(); ++i ) {
+ cout << "props: time of day command = " << tokens[i]
+ << endl;
+ SGPropertyNode *node
+ = args.getNode("timeofday", i-2, true);
+ node->setStringValue( tokens[i].c_str() );
+ }
+ } else if ( tokens[1] == "play-audio-message" ) {
+ if ( tokens.size() == 4 ) {
+ cout << "props: play audio message = " << tokens[2]
+ << " " << tokens[3] << endl;
+ SGPropertyNode *node;
+ node = args.getNode("path", 0, true);
+ node->setStringValue( tokens[2].c_str() );
+ node = args.getNode("file", 0, true);
+ node->setStringValue( tokens[3].c_str() );
+ }
+ }
+ if ( !globals->get_commands()
+ ->execute(tokens[1].c_str(), &args) )
+ {
+ SG_LOG( SG_NETWORK, SG_ALERT,
+ "Command " << tokens[1] << " failed.");
+ if ( mode == PROMPT ) {
+ tmp += "*failed*";
+ push( tmp.c_str() );
+ push( getTerminator() );
+ }
+ } else {
+ if ( mode == PROMPT ) {
+ tmp += "<completed>";
+ push( tmp.c_str() );
+ push( getTerminator() );
+ }