Remove servermain.cpp, use main.cpp with a couple of #ifdefs instead
authorPerttu Ahola <celeron55@gmail.com>
Sat, 10 Mar 2012 14:46:19 +0000 (16:46 +0200)
committerPerttu Ahola <celeron55@gmail.com>
Sat, 10 Mar 2012 15:10:16 +0000 (17:10 +0200)
src/CMakeLists.txt
src/main.cpp
src/servermain.cpp [deleted file]

index d72128e018e934f796f646d5a15ce35ffb958865..e11c0f345b297504dfd5ae875f5a35e89a0590ca 100644 (file)
@@ -184,7 +184,7 @@ set(minetest_SRCS
 # Server sources
 set(minetestserver_SRCS
        ${common_SRCS}
-       servermain.cpp
+       main.cpp
 )
 
 include_directories(
index 46fe4715d1a64413a5d956fb1eae513c10978319..e78d4441ca032fb23b9bf16ff6301e46a18e7aa2 100644 (file)
@@ -373,13 +373,14 @@ Doing currently:
 #endif
 
 #ifdef _MSC_VER
+#ifndef SERVER // Dedicated server isn't linked with Irrlicht
        #pragma comment(lib, "Irrlicht.lib")
-       //#pragma comment(lib, "jthread.lib")
-       #pragma comment(lib, "zlibwapi.lib")
-       #pragma comment(lib, "Shell32.lib")
        // This would get rid of the console window
        //#pragma comment(linker, "/subsystem:windows /ENTRY:mainCRTStartup")
 #endif
+       #pragma comment(lib, "zlibwapi.lib")
+       #pragma comment(lib, "Shell32.lib")
+#endif
 
 #include "irrlicht.h" // createDevice
 
@@ -421,13 +422,30 @@ Profiler main_profiler;
 Profiler *g_profiler = &main_profiler;
 
 /*
-       Random stuff
+       Debug streams
 */
 
+// Connection
+std::ostream *dout_con_ptr = &dummyout;
+std::ostream *derr_con_ptr = &verbosestream;
+//std::ostream *dout_con_ptr = &infostream;
+//std::ostream *derr_con_ptr = &errorstream;
+
+// Server
+std::ostream *dout_server_ptr = &infostream;
+std::ostream *derr_server_ptr = &errorstream;
+
+// Client
+std::ostream *dout_client_ptr = &infostream;
+std::ostream *derr_client_ptr = &errorstream;
+
+#ifndef SERVER
 /*
-       mainmenumanager.h
+       Random stuff
 */
 
+/* mainmenumanager.h */
+
 gui::IGUIEnvironment* guienv = NULL;
 gui::IGUIStaticText *guiroot = NULL;
 MainMenuManager g_menumgr;
@@ -439,28 +457,21 @@ bool noMenuActive()
 
 // Passed to menus to allow disconnecting and exiting
 MainGameCallback *g_gamecallback = NULL;
+#endif
 
 /*
-       Debug streams
+       gettime.h implementation
 */
 
-// Connection
-std::ostream *dout_con_ptr = &dummyout;
-std::ostream *derr_con_ptr = &verbosestream;
-//std::ostream *dout_con_ptr = &infostream;
-//std::ostream *derr_con_ptr = &errorstream;
-
-// Server
-std::ostream *dout_server_ptr = &infostream;
-std::ostream *derr_server_ptr = &errorstream;
+#ifdef SERVER
 
-// Client
-std::ostream *dout_client_ptr = &infostream;
-std::ostream *derr_client_ptr = &errorstream;
+u32 getTimeMs()
+{
+       /* Use imprecise system calls directly (from porting.h) */
+       return porting::getTimeMs();
+}
 
-/*
-       gettime.h implementation
-*/
+#else
 
 // A small helper class
 class TimeGetter
@@ -506,6 +517,30 @@ u32 getTimeMs()
        return g_timegetter->getTime();
 }
 
+#endif
+
+class StderrLogOutput: public ILogOutput
+{
+public:
+       /* line: Full line with timestamp, level and thread */
+       void printLog(const std::string &line)
+       {
+               std::cerr<<line<<std::endl;
+       }
+} main_stderr_log_out;
+
+class DstreamNoStderrLogOutput: public ILogOutput
+{
+public:
+       /* line: Full line with timestamp, level and thread */
+       void printLog(const std::string &line)
+       {
+               dstream_no_stderr<<line<<std::endl;
+       }
+} main_dstream_no_stderr_log_out;
+
+#ifndef SERVER
+
 /*
        Event handler for Irrlicht
 
@@ -897,6 +932,55 @@ private:
        bool rightreleased;
 };
 
+void drawMenuBackground(video::IVideoDriver* driver)
+{
+       core::dimension2d<u32> screensize = driver->getScreenSize();
+               
+       video::ITexture *bgtexture =
+                       driver->getTexture(getTexturePath("menubg.png").c_str());
+       if(bgtexture)
+       {
+               s32 texturesize = 128;
+               s32 tiled_y = screensize.Height / texturesize + 1;
+               s32 tiled_x = screensize.Width / texturesize + 1;
+               
+               for(s32 y=0; y<tiled_y; y++)
+               for(s32 x=0; x<tiled_x; x++)
+               {
+                       core::rect<s32> rect(0,0,texturesize,texturesize);
+                       rect += v2s32(x*texturesize, y*texturesize);
+                       driver->draw2DImage(bgtexture, rect,
+                               core::rect<s32>(core::position2d<s32>(0,0),
+                               core::dimension2di(bgtexture->getSize())),
+                               NULL, NULL, true);
+               }
+       }
+       
+       video::ITexture *logotexture =
+                       driver->getTexture(getTexturePath("menulogo.png").c_str());
+       if(logotexture)
+       {
+               v2s32 logosize(logotexture->getOriginalSize().Width,
+                               logotexture->getOriginalSize().Height);
+               logosize *= 4;
+
+               video::SColor bgcolor(255,50,50,50);
+               core::rect<s32> bgrect(0, screensize.Height-logosize.Y-20,
+                               screensize.Width, screensize.Height);
+               driver->draw2DRectangle(bgcolor, bgrect, NULL);
+
+               core::rect<s32> rect(0,0,logosize.X,logosize.Y);
+               rect += v2s32(screensize.Width/2,screensize.Height-10-logosize.Y);
+               rect -= v2s32(logosize.X/2, 0);
+               driver->draw2DImage(logotexture, rect,
+                       core::rect<s32>(core::position2d<s32>(0,0),
+                       core::dimension2di(logotexture->getSize())),
+                       NULL, NULL, true);
+       }
+}
+
+#endif
+
 // These are defined global so that they're not optimized too much.
 // Can't change them to volatile.
 s16 temp16;
@@ -909,7 +993,7 @@ std::string tempstring2;
 void SpeedTests()
 {
        {
-               dstream<<"The following test should take around 20ms."<<std::endl;
+               infostream<<"The following test should take around 20ms."<<std::endl;
                TimeTaker timer("Testing std::string speed");
                const u32 jj = 10000;
                for(u32 j=0; j<jj; j++)
@@ -928,7 +1012,7 @@ void SpeedTests()
                }
        }
        
-       dstream<<"All of the following tests should take around 100ms each."
+       infostream<<"All of the following tests should take around 100ms each."
                        <<std::endl;
 
        {
@@ -971,7 +1055,7 @@ void SpeedTests()
        }
 
        {
-               dstream<<"Around 5000/ms should do well here."<<std::endl;
+               infostream<<"Around 5000/ms should do well here."<<std::endl;
                TimeTaker timer("Testing mutex speed");
                
                JMutex m;
@@ -990,78 +1074,11 @@ void SpeedTests()
 
                u32 dtime = timer.stop();
                u32 per_ms = n / dtime;
-               dstream<<"Done. "<<dtime<<"ms, "
+               infostream<<"Done. "<<dtime<<"ms, "
                                <<per_ms<<"/ms"<<std::endl;
        }
 }
 
-void drawMenuBackground(video::IVideoDriver* driver)
-{
-       core::dimension2d<u32> screensize = driver->getScreenSize();
-               
-       video::ITexture *bgtexture =
-                       driver->getTexture(getTexturePath("menubg.png").c_str());
-       if(bgtexture)
-       {
-               s32 texturesize = 128;
-               s32 tiled_y = screensize.Height / texturesize + 1;
-               s32 tiled_x = screensize.Width / texturesize + 1;
-               
-               for(s32 y=0; y<tiled_y; y++)
-               for(s32 x=0; x<tiled_x; x++)
-               {
-                       core::rect<s32> rect(0,0,texturesize,texturesize);
-                       rect += v2s32(x*texturesize, y*texturesize);
-                       driver->draw2DImage(bgtexture, rect,
-                               core::rect<s32>(core::position2d<s32>(0,0),
-                               core::dimension2di(bgtexture->getSize())),
-                               NULL, NULL, true);
-               }
-       }
-       
-       video::ITexture *logotexture =
-                       driver->getTexture(getTexturePath("menulogo.png").c_str());
-       if(logotexture)
-       {
-               v2s32 logosize(logotexture->getOriginalSize().Width,
-                               logotexture->getOriginalSize().Height);
-               logosize *= 4;
-
-               video::SColor bgcolor(255,50,50,50);
-               core::rect<s32> bgrect(0, screensize.Height-logosize.Y-20,
-                               screensize.Width, screensize.Height);
-               driver->draw2DRectangle(bgcolor, bgrect, NULL);
-
-               core::rect<s32> rect(0,0,logosize.X,logosize.Y);
-               rect += v2s32(screensize.Width/2,screensize.Height-10-logosize.Y);
-               rect -= v2s32(logosize.X/2, 0);
-               driver->draw2DImage(logotexture, rect,
-                       core::rect<s32>(core::position2d<s32>(0,0),
-                       core::dimension2di(logotexture->getSize())),
-                       NULL, NULL, true);
-       }
-}
-
-class StderrLogOutput: public ILogOutput
-{
-public:
-       /* line: Full line with timestamp, level and thread */
-       void printLog(const std::string &line)
-       {
-               std::cerr<<line<<std::endl;
-       }
-} main_stderr_log_out;
-
-class DstreamNoStderrLogOutput: public ILogOutput
-{
-public:
-       /* line: Full line with timestamp, level and thread */
-       void printLog(const std::string &line)
-       {
-               dstream_no_stderr<<line<<std::endl;
-       }
-} main_dstream_no_stderr_log_out;
-
 int main(int argc, char *argv[])
 {
        /*
@@ -1086,29 +1103,28 @@ int main(int argc, char *argv[])
        core::map<std::string, ValueSpec> allowed_options;
        allowed_options.insert("help", ValueSpec(VALUETYPE_FLAG,
                        "Show allowed options"));
-       allowed_options.insert("server", ValueSpec(VALUETYPE_FLAG,
-                       "Run server directly"));
        allowed_options.insert("config", ValueSpec(VALUETYPE_STRING,
                        "Load configuration from specified file"));
        allowed_options.insert("port", ValueSpec(VALUETYPE_STRING,
-                       "Set network port to connect to"));
-       allowed_options.insert("address", ValueSpec(VALUETYPE_STRING,
-                       "Address to connect to"));
-       allowed_options.insert("random-input", ValueSpec(VALUETYPE_FLAG,
-                       "Enable random user input, for testing"));
+                       "Set network port (UDP) to use"));
        allowed_options.insert("disable-unittests", ValueSpec(VALUETYPE_FLAG,
                        "Disable unit tests"));
        allowed_options.insert("enable-unittests", ValueSpec(VALUETYPE_FLAG,
                        "Enable unit tests"));
        allowed_options.insert("map-dir", ValueSpec(VALUETYPE_STRING,
                        "Map directory (where everything in the world is stored)"));
-#ifdef _WIN32
-       allowed_options.insert("dstream-on-stderr", ValueSpec(VALUETYPE_FLAG));
-#endif
-       allowed_options.insert("speedtests", ValueSpec(VALUETYPE_FLAG,
-                       "Run speed tests"));
        allowed_options.insert("info-on-stderr", ValueSpec(VALUETYPE_FLAG,
                        "Print debug information to console"));
+#ifndef SERVER
+       allowed_options.insert("speedtests", ValueSpec(VALUETYPE_FLAG,
+                       "Run speed tests"));
+       allowed_options.insert("address", ValueSpec(VALUETYPE_STRING,
+                       "Address to connect to"));
+       allowed_options.insert("random-input", ValueSpec(VALUETYPE_FLAG,
+                       "Enable random user input, for testing"));
+       allowed_options.insert("server", ValueSpec(VALUETYPE_FLAG,
+                       "Run server directly"));
+#endif
 
        Settings cmd_args;
        
@@ -1145,13 +1161,7 @@ int main(int argc, char *argv[])
                Low-level initialization
        */
 
-       bool disable_stderr = false;
-#ifdef _WIN32
-       if(cmd_args.getFlag("dstream-on-stderr") == false)
-               disable_stderr = true;
-#endif
-       
-       if(cmd_args.getFlag("info-on-stderr"))
+       if(cmd_args.getFlag("info-on-stderr") || cmd_args.getFlag("speedtests"))
                log_add_output(&main_stderr_log_out, LMT_INFO);
 
        porting::signal_handler_init();
@@ -1170,6 +1180,7 @@ int main(int argc, char *argv[])
 #else
        std::string debugfile = porting::path_user+DIR_DELIM+DEBUGFILE;
 #endif
+       bool disable_stderr = false;
        debugstreams_init(disable_stderr, debugfile.c_str());
        // Initialize debug stacks
        debug_stacks_init();
@@ -1261,13 +1272,6 @@ int main(int argc, char *argv[])
                run_tests();
        }
        
-       /*for(s16 y=-100; y<100; y++)
-       for(s16 x=-100; x<100; x++)
-       {
-               std::cout<<noise2d_gradient((double)x/10,(double)y/10, 32415)<<std::endl;
-       }
-       return 0;*/
-       
        /*
                Game parameters
        */
@@ -1298,25 +1302,43 @@ int main(int argc, char *argv[])
                        map_dir = legacy_map_dir;
                }
        }
-       
-       // Run dedicated server if asked to
-       if(cmd_args.getFlag("server"))
+
+       // Run dedicated server if asked to or no other option
+#ifdef SERVER
+       bool run_dedicated_server = true;
+#else
+       bool run_dedicated_server = cmd_args.getFlag("server");
+#endif
+       if(run_dedicated_server)
        {
                DSTACK("Dedicated server branch");
 
-               // Create time getter
+               // Create time getter if built with Irrlicht
+#ifndef SERVER
                g_timegetter = new SimpleTimeGetter();
+#endif
                
                // Create server
                Server server(map_dir, configpath, "mesetint");
                server.start(port);
                
+               // ASCII art for the win!
+               dstream<<std::endl
+               <<"        .__               __                   __   "<<std::endl
+               <<"  _____ |__| ____   _____/  |_  ____   _______/  |_ "<<std::endl
+               <<" /     \\|  |/    \\_/ __ \\   __\\/ __ \\ /  ___/\\   __\\"<<std::endl
+               <<"|  Y Y  \\  |   |  \\  ___/|  | \\  ___/ \\___ \\  |  |  "<<std::endl
+               <<"|__|_|  /__|___|  /\\___  >__|  \\___  >____  > |__|  "<<std::endl
+               <<"      \\/        \\/     \\/          \\/     \\/        "<<std::endl
+               <<std::endl;
+       
                // Run server
                dedicated_server_loop(server, kill);
 
                return 0;
        }
 
+#ifndef SERVER // Exclude from dedicated server build
 
        /*
                More parameters
@@ -1679,6 +1701,8 @@ int main(int argc, char *argv[])
                In the end, delete the Irrlicht device.
        */
        device->drop();
+
+#endif // !SERVER
        
        END_DEBUG_EXCEPTION_HANDLER(errorstream)
        
diff --git a/src/servermain.cpp b/src/servermain.cpp
deleted file mode 100644 (file)
index 9be0c80..0000000
+++ /dev/null
@@ -1,388 +0,0 @@
-/*
-Minetest-c55
-Copyright (C) 2010 celeron55, Perttu Ahola <celeron55@gmail.com>
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along
-with this program; if not, write to the Free Software Foundation, Inc.,
-51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-*/
-
-/*
-=============================== NOTES ==============================
-
-
-*/
-
-#ifndef SERVER
-       #ifdef _WIN32
-               #pragma error ("For a server build, SERVER must be defined globally")
-       #else
-               #error "For a server build, SERVER must be defined globally"
-       #endif
-#endif
-
-#ifdef NDEBUG
-       #ifdef _WIN32
-               #pragma message ("Disabling unit tests")
-       #else
-               #warning "Disabling unit tests"
-       #endif
-       // Disable unit tests
-       #define ENABLE_TESTS 0
-#else
-       // Enable unit tests
-       #define ENABLE_TESTS 1
-#endif
-
-#ifdef _MSC_VER
-#pragma comment(lib, "jthread.lib")
-#pragma comment(lib, "zlibwapi.lib")
-#endif
-
-#include <iostream>
-#include <fstream>
-#include <time.h>
-#include <jmutexautolock.h>
-#include <locale.h>
-#include "common_irrlicht.h"
-#include "debug.h"
-#include "map.h"
-#include "player.h"
-#include "main.h"
-#include "test.h"
-#include "environment.h"
-#include "server.h"
-#include "serialization.h"
-#include "constants.h"
-#include "strfnd.h"
-#include "porting.h"
-#include "config.h"
-#include "filesys.h"
-#include "defaultsettings.h"
-#include "settings.h"
-#include "profiler.h"
-#include "log.h"
-#include "nodedef.h" // For init_contentfeatures
-#include "content_mapnode.h" // For content_mapnode_init
-#include "mods.h"
-
-/*
-       Settings.
-       These are loaded from the config file.
-*/
-Settings main_settings;
-Settings *g_settings = &main_settings;
-
-// Global profiler
-Profiler main_profiler;
-Profiler *g_profiler = &main_profiler;
-
-/*
-       Debug streams
-*/
-
-// Connection
-std::ostream *dout_con_ptr = &dummyout;
-std::ostream *derr_con_ptr = &verbosestream;
-
-// Server
-std::ostream *dout_server_ptr = &infostream;
-std::ostream *derr_server_ptr = &errorstream;
-
-// Client
-std::ostream *dout_client_ptr = &infostream;
-std::ostream *derr_client_ptr = &errorstream;
-
-/*
-       gettime.h implementation
-*/
-
-u32 getTimeMs()
-{
-       /*
-               Use imprecise system calls directly (from porting.h)
-       */
-       return porting::getTimeMs();
-}
-
-class StderrLogOutput: public ILogOutput
-{
-public:
-       /* line: Full line with timestamp, level and thread */
-       void printLog(const std::string &line)
-       {
-               std::cerr<<line<<std::endl;
-       }
-} main_stderr_log_out;
-
-class DstreamNoStderrLogOutput: public ILogOutput
-{
-public:
-       /* line: Full line with timestamp, level and thread */
-       void printLog(const std::string &line)
-       {
-               dstream_no_stderr<<line<<std::endl;
-       }
-} main_dstream_no_stderr_log_out;
-
-int main(int argc, char *argv[])
-{
-       /*
-               Initialization
-       */
-
-       log_add_output_maxlev(&main_stderr_log_out, LMT_ACTION);
-       log_add_output_all_levs(&main_dstream_no_stderr_log_out);
-
-       log_register_thread("main");
-
-       // Set locale. This is for forcing '.' as the decimal point.
-       std::locale::global(std::locale("C"));
-       // This enables printing all characters in bitmap font
-       setlocale(LC_CTYPE, "en_US");
-
-       /*
-               Low-level initialization
-       */
-
-       bool disable_stderr = false;
-#ifdef _WIN32
-       disable_stderr = true;
-#endif
-
-       porting::signal_handler_init();
-       bool &kill = *porting::signal_handler_killstatus();
-       
-       porting::initializePaths();
-
-       // Create user data directory
-       fs::CreateDir(porting::path_user);
-       
-       // Initialize debug streams
-#ifdef RUN_IN_PLACE
-       std::string debugfile = DEBUGFILE;
-#else
-       std::string debugfile = porting::path_user+DIR_DELIM+DEBUGFILE;
-#endif
-       debugstreams_init(disable_stderr, debugfile.c_str());
-       // Initialize debug stacks
-       debug_stacks_init();
-
-       DSTACK(__FUNCTION_NAME);
-
-       // Init material properties table
-       //initializeMaterialProperties();
-
-       // Debug handler
-       BEGIN_DEBUG_EXCEPTION_HANDLER
-
-       // Print startup message
-       actionstream<<PROJECT_NAME<<
-                       " with SER_FMT_VER_HIGHEST="<<(int)SER_FMT_VER_HIGHEST
-                       <<", "<<BUILD_INFO
-                       <<std::endl;
-       
-       try
-       {
-       
-       /*
-               Parse command line
-       */
-       
-       // List all allowed options
-       core::map<std::string, ValueSpec> allowed_options;
-       allowed_options.insert("help", ValueSpec(VALUETYPE_FLAG,
-                       "Show allowed options"));
-       allowed_options.insert("config", ValueSpec(VALUETYPE_STRING,
-                       "Load configuration from specified file"));
-       allowed_options.insert("port", ValueSpec(VALUETYPE_STRING,
-                       "Set network port (UDP) to use"));
-       allowed_options.insert("disable-unittests", ValueSpec(VALUETYPE_FLAG,
-                       "Disable unit tests"));
-       allowed_options.insert("enable-unittests", ValueSpec(VALUETYPE_FLAG,
-                       "Enable unit tests"));
-       allowed_options.insert("map-dir", ValueSpec(VALUETYPE_STRING,
-                       "Map directory (where everything in the world is stored)"));
-       allowed_options.insert("info-on-stderr", ValueSpec(VALUETYPE_FLAG,
-                       "Print debug information to console"));
-
-       Settings cmd_args;
-       
-       bool ret = cmd_args.parseCommandLine(argc, argv, allowed_options);
-
-       if(ret == false || cmd_args.getFlag("help"))
-       {
-               dstream<<"Allowed options:"<<std::endl;
-               for(core::map<std::string, ValueSpec>::Iterator
-                               i = allowed_options.getIterator();
-                               i.atEnd() == false; i++)
-               {
-                       dstream<<"  --"<<i.getNode()->getKey();
-                       if(i.getNode()->getValue().type == VALUETYPE_FLAG)
-                       {
-                       }
-                       else
-                       {
-                               dstream<<" <value>";
-                       }
-                       dstream<<std::endl;
-
-                       if(i.getNode()->getValue().help != NULL)
-                       {
-                               dstream<<"      "<<i.getNode()->getValue().help
-                                               <<std::endl;
-                       }
-               }
-
-               return cmd_args.getFlag("help") ? 0 : 1;
-       }
-
-       if(cmd_args.getFlag("info-on-stderr"))
-               log_add_output(&main_stderr_log_out, LMT_INFO);
-
-       /*
-               Basic initialization
-       */
-
-       // Initialize default settings
-       set_default_settings(g_settings);
-       
-       // Initialize sockets
-       sockets_init();
-       atexit(sockets_cleanup);
-       
-       /*
-               Read config file
-       */
-       
-       // Path of configuration file in use
-       std::string configpath = "";
-       
-       if(cmd_args.exists("config"))
-       {
-               bool r = g_settings->readConfigFile(cmd_args.get("config").c_str());
-               if(r == false)
-               {
-                       errorstream<<"Could not read configuration from \""
-                                       <<cmd_args.get("config")<<"\""<<std::endl;
-                       return 1;
-               }
-               configpath = cmd_args.get("config");
-       }
-       else
-       {
-               core::array<std::string> filenames;
-               filenames.push_back(porting::path_user +
-                               DIR_DELIM + "minetest.conf");
-               // Legacy configuration file location
-               filenames.push_back(porting::path_user +
-                               DIR_DELIM + ".." + DIR_DELIM + "minetest.conf");
-#ifdef RUN_IN_PLACE
-               // Try also from a lower level (to aid having the same configuration
-               // for many RUN_IN_PLACE installs)
-               filenames.push_back(porting::path_user +
-                               DIR_DELIM + ".." + DIR_DELIM + ".." + DIR_DELIM + "minetest.conf");
-#endif
-
-               for(u32 i=0; i<filenames.size(); i++)
-               {
-                       bool r = g_settings->readConfigFile(filenames[i].c_str());
-                       if(r)
-                       {
-                               configpath = filenames[i];
-                               break;
-                       }
-               }
-       }
-
-       // Initialize random seed
-       srand(time(0));
-       mysrand(time(0));
-
-       /*
-               Run unit tests
-       */
-       if((ENABLE_TESTS && cmd_args.getFlag("disable-unittests") == false)
-                       || cmd_args.getFlag("enable-unittests") == true)
-       {
-               run_tests();
-       }
-
-       /*
-               Check parameters
-       */
-
-       std::cout<<std::endl<<std::endl;
-       
-       std::cout
-       <<"        .__               __                   __   "<<std::endl
-       <<"  _____ |__| ____   _____/  |_  ____   _______/  |_ "<<std::endl
-       <<" /     \\|  |/    \\_/ __ \\   __\\/ __ \\ /  ___/\\   __\\"<<std::endl
-       <<"|  Y Y  \\  |   |  \\  ___/|  | \\  ___/ \\___ \\  |  |  "<<std::endl
-       <<"|__|_|  /__|___|  /\\___  >__|  \\___  >____  > |__|  "<<std::endl
-       <<"      \\/        \\/     \\/          \\/     \\/        "<<std::endl
-       <<std::endl;
-
-       std::cout<<std::endl;
-       
-       // Port?
-       u16 port = 30000;
-       if(cmd_args.exists("port") && cmd_args.getU16("port") != 0)
-               port = cmd_args.getU16("port");
-       else if(g_settings->exists("port") && g_settings->getU16("port") != 0)
-               port = g_settings->getU16("port");
-       
-       // Map directory
-       std::string map_dir = porting::path_user + DIR_DELIM + "server" + DIR_DELIM + "worlds" + DIR_DELIM + "world";
-       if(cmd_args.exists("map-dir"))
-               map_dir = cmd_args.get("map-dir");
-       else if(g_settings->exists("map-dir"))
-               map_dir = g_settings->get("map-dir");
-       else{
-               // No map-dir option was specified.
-               // Check if the world is found from the default directory, and if
-               // not, see if the legacy world directory exists.
-               std::string legacy_map_dir = porting::path_user+DIR_DELIM+".."+DIR_DELIM+"world";
-               if(!fs::PathExists(map_dir) && fs::PathExists(legacy_map_dir)){
-                       errorstream<<"Warning: Using legacy world directory \""
-                                       <<legacy_map_dir<<"\""<<std::endl;
-                       map_dir = legacy_map_dir;
-               }
-       }
-       
-       
-       // Create server
-       Server server(map_dir, configpath, "mesetint");
-       server.start(port);
-
-       // Run server
-       dedicated_server_loop(server, kill);
-       
-       } //try
-       catch(con::PeerNotFoundException &e)
-       {
-               errorstream<<"Connection timed out."<<std::endl;
-       }
-       catch(ModError &e)
-       {
-               errorstream<<e.what()<<std::endl;
-       }
-
-       END_DEBUG_EXCEPTION_HANDLER(errorstream)
-
-       debugstreams_deinit();
-       
-       return 0;
-}
-
-//END