Author: cazfi
Date: Sat May  7 20:39:25 2016
New Revision: 32614

URL: http://svn.gna.org/viewcvs/freeciv?rev=32614&view=rev
Log:
Construct paths passed to spawned server correctly in respect to DIR_SEPARATOR 
and
storage directory.

See bug #24640

Modified:
    trunk/client/connectdlg_common.c

Modified: trunk/client/connectdlg_common.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/client/connectdlg_common.c?rev=32614&r1=32613&r2=32614&view=diff
==============================================================================
--- trunk/client/connectdlg_common.c    (original)
+++ trunk/client/connectdlg_common.c    Sat May  7 20:39:25 2016
@@ -196,20 +196,22 @@
 #else /* HAVE_USABLE_FORK || WIN32_NATIVE */
   char buf[512];
   int connect_tries = 0;
+  char savesdir[MAX_LEN_PATH];
+  char scensdir[MAX_LEN_PATH];
+  char *storage;
+
 #if !defined(HAVE_USABLE_FORK)
-  /* Above also implies that this is WIN32_NATIVE ->
+  /* Above also implies that this is FREECIV_MS_WINDOWS ->
    * Win32 that can't use fork() */
   STARTUPINFO si;
   PROCESS_INFORMATION pi;
 
-  char savesdir[MAX_LEN_PATH];
-  char scensdir[MAX_LEN_PATH];
   char options[512];
   char *depr;
-#ifdef DEBUG
+#ifdef FREECIV_DEBUG
   char cmdline1[512];
   char cmdline2[512];
-#endif /* DEBUG */
+#endif /* FREECIV_DEBUG */
   char cmdline3[512];
   char cmdline4[512];
   char logcmdline[512];
@@ -243,6 +245,14 @@
     output_window_append(ftc_client, _("Couldn't start the server."));
     output_window_append(ftc_client,
                          _("You'll have to start one manually. Sorry..."));
+    return FALSE;
+  }
+
+  storage = freeciv_storage_dir();
+  if (storage == NULL) {
+    output_window_append(ftc_client, _("Cannot find freeciv storage 
directory"));
+    output_window_append(ftc_client,
+                         _("You'll have to start server manually. Sorry..."));
     return FALSE;
   }
 
@@ -258,6 +268,8 @@
 
     /* Set up the command-line parameters. */
     fc_snprintf(port_buf, sizeof(port_buf), "%d", internal_server_port);
+    fc_snprintf(savesdir, sizeof(savesdir), "%s" DIR_SEPARATOR "saves", 
storage);
+    fc_snprintf(scensdir, sizeof(scensdir), "%s" DIR_SEPARATOR "scenarios", 
storage);
     argv[argc++] = "freeciv-server";
     argv[argc++] = "-p";
     argv[argc++] = port_buf;
@@ -267,9 +279,9 @@
     argv[argc++] = "1";
     argv[argc++] = "-e";
     argv[argc++] = "--saves";
-    argv[argc++] = "~/.freeciv/saves";
+    argv[argc++] = savesdir;
     argv[argc++] = "--scenarios";
-    argv[argc++] = "~/.freeciv/scenarios";
+    argv[argc++] = scensdir;
     argv[argc++] = "-A";
     argv[argc++] = "none";
     if (logfile) {
@@ -404,10 +416,10 @@
     free(savefile_in_local_encoding);
   }
 
-  interpret_tilde(savesdir, sizeof(savesdir), "~/.freeciv/saves");
+  fc_snprintf(savesdir, sizeof(savesdir), "%s" DIR_SEPARATOR "saves", storage);
   internal_to_local_string_buffer(savesdir, savescmdline, 
sizeof(savescmdline));
 
-  interpret_tilde(scensdir, sizeof(scensdir), "~/.freeciv/scenarios");
+  fc_snprintf(scensdir, sizeof(scensdir), "%s" DIR_SEPARATOR "scenarios", 
storage);
   internal_to_local_string_buffer(scensdir, scenscmdline, 
sizeof(scenscmdline));
 
   if (are_deprecation_warnings_enabled()) {


_______________________________________________
Freeciv-commits mailing list
Freeciv-commits@gna.org
https://mail.gna.org/listinfo/freeciv-commits

Reply via email to