//
// $Id$
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
#include <simgear/compiler.h>
#include <Network/ray.hxx>
#include <Network/rul.hxx>
#include <Network/generic.hxx>
-
-#ifdef FG_MPLAYER_AS
#include <Network/multiplay.hxx>
-#endif
#include "globals.hxx"
#include "fg_io.hxx"
else if (tokens[1] == "file") n--;
FGGeneric *generic = new FGGeneric( tokens[n] );
io = generic;
-
-#ifdef FG_MPLAYER_AS
} else if ( protocol == "multiplay" ) {\
//Determine dir, rate, host & port
string dir = tokens[1];
string host = tokens[3];
string port = tokens[4];
return new FGMultiplay(dir, atoi(rate.c_str()), host, atoi(port.c_str()));
-#endif
-
} else {
return NULL;
}
delete io;
return 0;
}
-
+
+ if (tokens.size() < 3) {
+ SG_LOG( SG_IO, SG_ALERT, "Incompatible number of network arguments.");
+ return NULL;
+ }
string medium = tokens[1];
SG_LOG( SG_IO, SG_INFO, " medium = " << medium );
SG_LOG( SG_IO, SG_INFO, " hertz = " << hertz );
if ( medium == "serial" ) {
+ if ( tokens.size() < 5) {
+ SG_LOG( SG_IO, SG_ALERT, "Incompatible number of arguments for serial communications.");
+ return NULL;
+ }
// device name
string device = tokens[4];
SG_LOG( SG_IO, SG_INFO, " device = " << device );
io->set_io_channel( ch );
} else if ( medium == "file" ) {
// file name
+ if ( tokens.size() < 4) {
+ SG_LOG( SG_IO, SG_ALERT, "Incompatible number of arguments for file I/O.");
+ return NULL;
+ }
+
string file = tokens[4];
SG_LOG( SG_IO, SG_INFO, " file name = " << file );
SGFile *ch = new SGFile( file );
io->set_io_channel( ch );
} else if ( medium == "socket" ) {
- string hostname = tokens[4];
+ if ( tokens.size() < 6) {
+ SG_LOG( SG_IO, SG_ALERT, "Incompatible number of arguments for socket communications.");
+ return NULL;
+ }
+ string hostname = tokens[4];
string port = tokens[5];
string style = tokens[6];
FGIO::shutdown_all() {
FGProtocol *p;
- // cout << "processing I/O channels" << endl;
+ // cout << "shutting down all I/O channels" << endl;
typedef vector< FGProtocol* > container;
container::iterator i = io_channels.begin();