diff -r 0c5f1cea4f39 config.lib --- config.lib Sat Jan 24 15:01:29 2009 +0000 +++ config.lib Sat Jan 24 16:40:56 2009 +0100 @@ -868,7 +868,7 @@ log 1 "WARNING: in most cases it is not safe for network use" log 1 "WARNING: USE WITH CAUTION!" - sleep 5 + # sleep 5 elif [ -f "$ROOT_DIR/version" ]; then revision="`cat $ROOT_DIR/version`" diff -r 0c5f1cea4f39 src/network/network_client.cpp --- src/network/network_client.cpp Sat Jan 24 15:01:29 2009 +0000 +++ src/network/network_client.cpp Sat Jan 24 16:40:56 2009 +0100 @@ -520,9 +520,14 @@ _password_game_seed = p->Recv_uint32(); p->Recv_string(_password_server_unique_id, sizeof(_password_server_unique_id)); if (MY_CLIENT->has_quit) return NETWORK_RECV_STATUS_MALFORMED_PACKET; - + if (_company_pw != NULL) _login_pw = _company_pw; case NETWORK_GAME_PASSWORD: - ShowNetworkNeedPassword(type); + if (_login_pw == NULL) { + ShowNetworkNeedPassword(type); + } else { + SEND_COMMAND(PACKET_CLIENT_PASSWORD)(type, _login_pw); + _login_pw = NULL; + } return NETWORK_RECV_STATUS_OKAY; default: return NETWORK_RECV_STATUS_MALFORMED_PACKET; diff -r 0c5f1cea4f39 src/network/network_internal.h --- src/network/network_internal.h Sat Jan 24 15:01:29 2009 +0000 +++ src/network/network_internal.h Sat Jan 24 16:40:56 2009 +0100 @@ -125,6 +125,9 @@ void NetworkTCPQueryServer(NetworkAddress address); +extern char *_login_pw; // login password from -p argument +extern char *_company_pw; // company password from -P argument + void NetworkAddServer(const char *b); void NetworkRebuildHostList(); void UpdateNetworkGameWindow(bool unselect); diff -r 0c5f1cea4f39 src/openttd.cpp --- src/openttd.cpp Sat Jan 24 15:01:29 2009 +0000 +++ src/openttd.cpp Sat Jan 24 16:40:56 2009 +0100 @@ -187,6 +187,8 @@ " -G seed = Set random seed\n" #if defined(ENABLE_NETWORK) " -n [ip:port#company]= Start networkgame\n" + " -p password = Join password\n" + " -P password = Company password\n" " -D [ip][:port] = Start dedicated server\n" " -l ip[:port] = Redirect DEBUG()\n" #if !defined(__MORPHOS__) && !defined(__AMIGA__) && !defined(WIN32) @@ -408,6 +410,10 @@ } byte _savegame_sort_order; +#if defined(ENABLE_NETWORK) +char *_login_pw = NULL; +char *_company_pw = NULL; +#endif /* ENABLE_NETWORK */ #if defined(UNIX) && !defined(__MORPHOS__) extern void DedicatedFork(); #endif @@ -444,7 +450,7 @@ * a letter means: it accepts that param (e.g.: -h) * a ':' behind it means: it need a param (e.g.: -m) * a '::' behind it means: it can optional have a param (e.g.: -d) */ - optformat = "m:s:v:b:hD::n::ei::I:t:d::r:g::G:c:xl:" + optformat = "m:s:v:b:hD::n::ei::I:t:d::r:g::G:c:xl:p:P:" #if !defined(__MORPHOS__) && !defined(__AMIGA__) && !defined(WIN32) "f" #endif @@ -487,6 +493,12 @@ break; case 'l': debuglog_conn = mgo.opt; + break; + case 'p': + _login_pw = mgo.opt; + break; + case 'P': + _company_pw = mgo.opt; break; #endif /* ENABLE_NETWORK */ case 'r': ParseResolution(&resolution, mgo.opt); break;