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