os2.c
author tron
Wed, 27 Jul 2005 19:57:12 +0000
changeset 2210 58a293892a66
parent 2195 8960c86bf103
child 2255 ddcaf9e333ff
permissions -rw-r--r--
(svn r2728) -Fix/Feature: Change the driver probing algorithm
Instead of trying to start a single driver and bailing out if that fails, try to initialise one by one and use the first one which succeeds.
This should fix problems on machines with no sound card, where -s null had to be specified manually.
2186
461a2aff3486 (svn r2701) Insert Id tags into all source files
tron
parents: 2180
diff changeset
     1
/* $Id$ */
461a2aff3486 (svn r2701) Insert Id tags into all source files
tron
parents: 2180
diff changeset
     2
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
     3
#include "stdafx.h"
1892
45894b95a925 (svn r2398) - CodeChange: forgot to update unix and os2 specific files as well.
Darkvater
parents: 1890
diff changeset
     4
#include "openttd.h"
2210
58a293892a66 (svn r2728) -Fix/Feature: Change the driver probing algorithm
tron
parents: 2195
diff changeset
     5
#include "hal.h"
2167
99d31f4eeb37 (svn r2681) - Fix OS/2 port, please do not modify openttd.wpj/tgt by hand unless you know what you're doing!
orudge
parents: 2099
diff changeset
     6
#include "variables.h"
1317
f382f1b439c7 (svn r1821) Move generic string handling functions to string.[ch] and introduce stre{cpy,cat}, see string.h for their semantics
tron
parents: 1301
diff changeset
     7
#include "string.h"
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
     8
#include "table/strings.h"
1888
5f0398340e05 (svn r2394) - Completed clipboard functions for OS/2 port
orudge
parents: 1887
diff changeset
     9
#include "gfx.h"
5f0398340e05 (svn r2394) - Completed clipboard functions for OS/2 port
orudge
parents: 1887
diff changeset
    10
#include "gui.h"
2167
99d31f4eeb37 (svn r2681) - Fix OS/2 port, please do not modify openttd.wpj/tgt by hand unless you know what you're doing!
orudge
parents: 2099
diff changeset
    11
#include "functions.h"
99d31f4eeb37 (svn r2681) - Fix OS/2 port, please do not modify openttd.wpj/tgt by hand unless you know what you're doing!
orudge
parents: 2099
diff changeset
    12
#include "macros.h"
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
    13
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
    14
#include <direct.h>
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
    15
#include <unistd.h>
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
    16
#include <sys/stat.h>
810
7c51ba5a4368 (svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents: 801
diff changeset
    17
#include <stdarg.h>
1887
9f1af4f412d4 (svn r2393) - Implemented threaded saving for OS/2
orudge
parents: 1817
diff changeset
    18
#include <stdlib.h>
9f1af4f412d4 (svn r2393) - Implemented threaded saving for OS/2
orudge
parents: 1817
diff changeset
    19
#include <process.h>
1888
5f0398340e05 (svn r2394) - Completed clipboard functions for OS/2 port
orudge
parents: 1887
diff changeset
    20
#include <ctype.h>
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
    21
#include <time.h>
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
    22
#include <dos.h>
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
    23
810
7c51ba5a4368 (svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents: 801
diff changeset
    24
#define INCL_DOS
818
906f21e653b2 (svn r1289) -Fix: Minor fix for OS/2 message boxes (orudge)
truelight
parents: 810
diff changeset
    25
#define INCL_WIN
1524
85efc2f52e2c (svn r2028) Added detection of SVN version (rev.c generation) for OS/2, updated readme, initial clipboard support (orudge)
celestar
parents: 1508
diff changeset
    26
#define INCL_WINCLIPBOARD
810
7c51ba5a4368 (svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents: 801
diff changeset
    27
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
    28
#include <os2.h>
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
    29
2167
99d31f4eeb37 (svn r2681) - Fix OS/2 port, please do not modify openttd.wpj/tgt by hand unless you know what you're doing!
orudge
parents: 2099
diff changeset
    30
#include <i86.h>
99d31f4eeb37 (svn r2681) - Fix OS/2 port, please do not modify openttd.wpj/tgt by hand unless you know what you're doing!
orudge
parents: 2099
diff changeset
    31
1890
958234206caa (svn r2396) - Fix: Put strcasecmp back into os2.c, sorry Tron!
orudge
parents: 1888
diff changeset
    32
static inline int strcasecmp(const char* s1, const char* s2)
958234206caa (svn r2396) - Fix: Put strcasecmp back into os2.c, sorry Tron!
orudge
parents: 1888
diff changeset
    33
{
958234206caa (svn r2396) - Fix: Put strcasecmp back into os2.c, sorry Tron!
orudge
parents: 1888
diff changeset
    34
	return stricmp(s1, s2);
958234206caa (svn r2396) - Fix: Put strcasecmp back into os2.c, sorry Tron!
orudge
parents: 1888
diff changeset
    35
}
958234206caa (svn r2396) - Fix: Put strcasecmp back into os2.c, sorry Tron!
orudge
parents: 1888
diff changeset
    36
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
    37
static char *_fios_path;
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
    38
static char *_fios_save_path;
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
    39
static char *_fios_scn_path;
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
    40
static FiosItem *_fios_items;
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
    41
static int _fios_count, _fios_alloc;
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
    42
1486
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
    43
static FiosItem *FiosAlloc(void)
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
    44
{
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
    45
	if (_fios_count == _fios_alloc) {
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
    46
		_fios_alloc += 256;
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
    47
		_fios_items = realloc(_fios_items, _fios_alloc * sizeof(FiosItem));
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
    48
	}
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
    49
	return &_fios_items[_fios_count++];
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
    50
}
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
    51
1486
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
    52
int compare_FiosItems(const void *a, const void *b)
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
    53
{
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
    54
	const FiosItem *da = (const FiosItem *)a;
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
    55
	const FiosItem *db = (const FiosItem *)b;
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
    56
	int r;
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
    57
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
    58
	if (_savegame_sort_order < 2) // sort by date
1486
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
    59
		r = da->mtime < db->mtime ? -1 : 1;
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
    60
	else
2099
22f535ad9eea (svn r2609) - Feature: remove extension from savegames/scenarios when browsing the folders.
Darkvater
parents: 1893
diff changeset
    61
		r = strcasecmp(da->title, db->title);
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
    62
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
    63
	if (_savegame_sort_order & 1) r = -r;
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
    64
	return r;
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
    65
}
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
    66
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
    67
810
7c51ba5a4368 (svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents: 801
diff changeset
    68
static DIR *my_opendir(char *path, char *file)
7c51ba5a4368 (svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents: 801
diff changeset
    69
{
7c51ba5a4368 (svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents: 801
diff changeset
    70
	char paths[MAX_PATH];
7c51ba5a4368 (svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents: 801
diff changeset
    71
915
013cb2d74800 (svn r1402) Trim trailing whitespace
tron
parents: 818
diff changeset
    72
	append_path(paths, path, file);
810
7c51ba5a4368 (svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents: 801
diff changeset
    73
	return opendir(paths);
7c51ba5a4368 (svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents: 801
diff changeset
    74
}
7c51ba5a4368 (svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents: 801
diff changeset
    75
1486
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
    76
static void append_path(char *out, const char *path, const char *file)
810
7c51ba5a4368 (svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents: 801
diff changeset
    77
{
1486
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
    78
	if (path[2] == '\\' && path[3] == '\0')
810
7c51ba5a4368 (svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents: 801
diff changeset
    79
		sprintf(out, "%s%s", path, file);
7c51ba5a4368 (svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents: 801
diff changeset
    80
	else
7c51ba5a4368 (svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents: 801
diff changeset
    81
		sprintf(out, "%s\\%s", path, file);
7c51ba5a4368 (svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents: 801
diff changeset
    82
}
7c51ba5a4368 (svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents: 801
diff changeset
    83
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
    84
// Get a list of savegames
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
    85
FiosItem *FiosGetSavegameList(int *num, int mode)
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
    86
{
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
    87
	FiosItem *fios;
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
    88
	DIR *dir;
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
    89
	struct dirent *dirent;
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
    90
	struct stat sb;
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
    91
	int sort_start;
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
    92
	char filename[MAX_PATH];
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
    93
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
    94
	if (_fios_save_path == NULL) {
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
    95
		_fios_save_path = malloc(MAX_PATH);
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
    96
		strcpy(_fios_save_path, _path.save_dir);
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
    97
	}
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
    98
2099
22f535ad9eea (svn r2609) - Feature: remove extension from savegames/scenarios when browsing the folders.
Darkvater
parents: 1893
diff changeset
    99
	_fios_path = _fios_scn_path;
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   100
810
7c51ba5a4368 (svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents: 801
diff changeset
   101
	// Parent directory, only if not of the type C:\.
1486
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   102
	if (_fios_path[3] != '\0') {
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   103
		fios = FiosAlloc();
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   104
		fios->type = FIOS_TYPE_PARENT;
1486
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   105
		fios->mtime = 0;
1572
6d0111113f0b (svn r2076) Set the name for the parent directory to ".."
tron
parents: 1524
diff changeset
   106
		strcpy(fios->name, "..");
810
7c51ba5a4368 (svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents: 801
diff changeset
   107
		strcpy(fios->title, ".. (Parent directory)");
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   108
	}
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   109
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   110
	// Show subdirectories first
810
7c51ba5a4368 (svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents: 801
diff changeset
   111
	dir = my_opendir(_fios_path, "*.*");
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   112
	if (dir != NULL) {
1486
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   113
		while ((dirent = readdir(dir)) != NULL) {
810
7c51ba5a4368 (svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents: 801
diff changeset
   114
			append_path(filename, _fios_path, dirent->d_name);
1486
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   115
			if (!stat(filename, &sb) && S_ISDIR(sb.st_mode) &&
1817
1ee097a8da2d (svn r2321) - Fix: [ 1202286 ] On OS/2 you get a double backslash in your filename after browsing to the root dir of a drive and "." and ".." are incorrectly displayed. (orudge)
matthijs
parents: 1599
diff changeset
   116
					strcmp(dirent->d_name, ".") != 0 &&
1ee097a8da2d (svn r2321) - Fix: [ 1202286 ] On OS/2 you get a double backslash in your filename after browsing to the root dir of a drive and "." and ".." are incorrectly displayed. (orudge)
matthijs
parents: 1599
diff changeset
   117
					strcmp(dirent->d_name, "..") != 0) {
1486
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   118
				fios = FiosAlloc();
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   119
				fios->type = FIOS_TYPE_DIR;
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   120
				fios->mtime = 0;
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   121
				ttd_strlcpy(fios->name, dirent->d_name, lengthof(fios->name));
2099
22f535ad9eea (svn r2609) - Feature: remove extension from savegames/scenarios when browsing the folders.
Darkvater
parents: 1893
diff changeset
   122
				snprintf(fios->title, lengthof(fios->title), "%s\\ (Directory)", dirent->d_name);
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   123
			}
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   124
		}
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   125
		closedir(dir);
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   126
	}
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   127
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   128
	{
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   129
		/* XXX ugly global variables ... */
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   130
		byte order = _savegame_sort_order;
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   131
		_savegame_sort_order = 2; // sort ascending by name
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   132
		qsort(_fios_items, _fios_count, sizeof(FiosItem), compare_FiosItems);
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   133
		_savegame_sort_order = order;
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   134
	}
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   135
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   136
	// this is where to start sorting
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   137
	sort_start = _fios_count;
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   138
1486
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   139
	/* Show savegame files
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   140
	 * .SAV OpenTTD saved game
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   141
	 * .SS1 Transport Tycoon Deluxe preset game
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   142
	 * .SV1 Transport Tycoon Deluxe (Patch) saved game
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   143
	 * .SV2 Transport Tycoon Deluxe (Patch) saved 2-player game
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   144
	 */
810
7c51ba5a4368 (svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents: 801
diff changeset
   145
	dir = my_opendir(_fios_path, "*.*");
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   146
	if (dir != NULL) {
1486
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   147
		while ((dirent = readdir(dir)) != NULL) {
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   148
			char *t;
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   149
810
7c51ba5a4368 (svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents: 801
diff changeset
   150
			append_path(filename, _fios_path, dirent->d_name);
1486
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   151
			if (stat(filename, &sb) || S_ISDIR(sb.st_mode)) continue;
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   152
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   153
			t = strrchr(dirent->d_name, '.');
1890
958234206caa (svn r2396) - Fix: Put strcasecmp back into os2.c, sorry Tron!
orudge
parents: 1888
diff changeset
   154
			if (t != NULL && strcasecmp(t, ".sav") == 0) { // OpenTTD
1486
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   155
				fios = FiosAlloc();
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   156
				fios->type = FIOS_TYPE_FILE;
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   157
				fios->mtime = sb.st_mtime;
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   158
				ttd_strlcpy(fios->name, dirent->d_name, lengthof(fios->name));
2099
22f535ad9eea (svn r2609) - Feature: remove extension from savegames/scenarios when browsing the folders.
Darkvater
parents: 1893
diff changeset
   159
22f535ad9eea (svn r2609) - Feature: remove extension from savegames/scenarios when browsing the folders.
Darkvater
parents: 1893
diff changeset
   160
				*t = '\0'; // strip extension
22f535ad9eea (svn r2609) - Feature: remove extension from savegames/scenarios when browsing the folders.
Darkvater
parents: 1893
diff changeset
   161
				ttd_strlcpy(fios->title, dirent->d_name, lengthof(fios->title));
1486
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   162
			} else if (mode == SLD_LOAD_GAME || mode == SLD_LOAD_SCENARIO) {
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   163
				if (t != NULL && (
1890
958234206caa (svn r2396) - Fix: Put strcasecmp back into os2.c, sorry Tron!
orudge
parents: 1888
diff changeset
   164
							strcasecmp(t, ".ss1") == 0 ||
958234206caa (svn r2396) - Fix: Put strcasecmp back into os2.c, sorry Tron!
orudge
parents: 1888
diff changeset
   165
							strcasecmp(t, ".sv1") == 0 ||
958234206caa (svn r2396) - Fix: Put strcasecmp back into os2.c, sorry Tron!
orudge
parents: 1888
diff changeset
   166
							strcasecmp(t, ".sv2") == 0
1486
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   167
						)) { // TTDLX(Patch)
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   168
					fios = FiosAlloc();
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   169
					fios->type = FIOS_TYPE_OLDFILE;
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   170
					fios->mtime = sb.st_mtime;
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   171
					ttd_strlcpy(fios->name, dirent->d_name, lengthof(fios->name));
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   172
					GetOldSaveGameName(fios->title, filename);
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   173
				}
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   174
			}
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   175
		}
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   176
		closedir(dir);
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   177
	}
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   178
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   179
	qsort(_fios_items + sort_start, _fios_count - sort_start, sizeof(FiosItem), compare_FiosItems);
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   180
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   181
	// Drives
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   182
	{
1486
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   183
		uint save;
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   184
		uint disk;
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   185
		uint total;
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   186
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   187
		/* save original drive */
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   188
		_dos_getdrive(&save);
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   189
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   190
		/* get available drive letters */
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   191
		for (disk = 1; disk < 27; ++disk)
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   192
		{
1486
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   193
			uint disk2;
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   194
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   195
			_dos_setdrive(disk, &total);
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   196
			_dos_getdrive(&disk2);
915
013cb2d74800 (svn r1402) Trim trailing whitespace
tron
parents: 818
diff changeset
   197
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   198
			if (disk == disk2)
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   199
			{
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   200
				fios = FiosAlloc();
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   201
				fios->type = FIOS_TYPE_DRIVE;
1580
0064c283b59b (svn r2084) Set the name for drive items
tron
parents: 1572
diff changeset
   202
				sprintf(fios->name, "%c:", 'A' + disk - 1);
1486
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   203
				sprintf(fios->title, "%c:", 'A' + disk - 1);
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   204
			}
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   205
		}
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   206
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   207
		_dos_setdrive(save, &total);
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   208
	}
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   209
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   210
	*num = _fios_count;
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   211
	return _fios_items;
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   212
}
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   213
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   214
// Get a list of scenarios
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   215
FiosItem *FiosGetScenarioList(int *num, int mode)
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   216
{
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   217
	FiosItem *fios;
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   218
	DIR *dir;
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   219
	struct dirent *dirent;
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   220
	struct stat sb;
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   221
	int sort_start;
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   222
	char filename[MAX_PATH];
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   223
2099
22f535ad9eea (svn r2609) - Feature: remove extension from savegames/scenarios when browsing the folders.
Darkvater
parents: 1893
diff changeset
   224
	if (_fios_scn_path == NULL) {
22f535ad9eea (svn r2609) - Feature: remove extension from savegames/scenarios when browsing the folders.
Darkvater
parents: 1893
diff changeset
   225
		_fios_scn_path = malloc(MAX_PATH);
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   226
		strcpy(_fios_scn_path, _path.scenario_dir);
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   227
	}
810
7c51ba5a4368 (svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents: 801
diff changeset
   228
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   229
	_fios_path = _fios_scn_path;
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   230
810
7c51ba5a4368 (svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents: 801
diff changeset
   231
	// Parent directory, only if not of the type C:\.
1486
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   232
	if (_fios_path[3] != '\0' && mode != SLD_NEW_GAME) {
810
7c51ba5a4368 (svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents: 801
diff changeset
   233
		fios = FiosAlloc();
7c51ba5a4368 (svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents: 801
diff changeset
   234
		fios->type = FIOS_TYPE_PARENT;
1486
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   235
		fios->mtime = 0;
810
7c51ba5a4368 (svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents: 801
diff changeset
   236
		strcpy(fios->title, ".. (Parent directory)");
7c51ba5a4368 (svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents: 801
diff changeset
   237
	}
7c51ba5a4368 (svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents: 801
diff changeset
   238
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   239
	// Show subdirectories first
810
7c51ba5a4368 (svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents: 801
diff changeset
   240
	dir = my_opendir(_fios_path, "*.*");
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   241
	if (dir != NULL) {
1486
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   242
		while ((dirent = readdir(dir)) != NULL) {
810
7c51ba5a4368 (svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents: 801
diff changeset
   243
			append_path(filename, _fios_path, dirent->d_name);
1506
c3985c29d018 (svn r2010) - Fix: [ 1162209 ] Fix OS/2 build (orudge)
darkvater
parents: 1495
diff changeset
   244
			if (!stat(filename, &sb) && S_ISDIR(sb.st_mode) &&
1817
1ee097a8da2d (svn r2321) - Fix: [ 1202286 ] On OS/2 you get a double backslash in your filename after browsing to the root dir of a drive and "." and ".." are incorrectly displayed. (orudge)
matthijs
parents: 1599
diff changeset
   245
					strcmp(dirent->d_name, ".") != 0 &&
1ee097a8da2d (svn r2321) - Fix: [ 1202286 ] On OS/2 you get a double backslash in your filename after browsing to the root dir of a drive and "." and ".." are incorrectly displayed. (orudge)
matthijs
parents: 1599
diff changeset
   246
					strcmp(dirent->d_name, "..") != 0) {
1486
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   247
				fios = FiosAlloc();
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   248
				fios->type = FIOS_TYPE_DIR;
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   249
				fios->mtime = 0;
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   250
				ttd_strlcpy(fios->name, dirent->d_name, lengthof(fios->name));
2099
22f535ad9eea (svn r2609) - Feature: remove extension from savegames/scenarios when browsing the folders.
Darkvater
parents: 1893
diff changeset
   251
				snprintf(fios->title, lengthof(fios->title), "%s\\ (Directory)", dirent->d_name);
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   252
			}
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   253
		}
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   254
		closedir(dir);
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   255
	}
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   256
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   257
	// this is where to start sorting
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   258
	sort_start = _fios_count;
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   259
1486
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   260
	/* Show scenario files
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   261
	 * .SCN OpenTTD style scenario file
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   262
	 * .SV0 Transport Tycoon Deluxe (Patch) scenario
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   263
	 * .SS0 Transport Tycoon Deluxe preset scenario
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   264
	 */
810
7c51ba5a4368 (svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents: 801
diff changeset
   265
	dir = my_opendir(_fios_path, "*.*");
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   266
	if (dir != NULL) {
1486
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   267
		while ((dirent = readdir(dir)) != NULL) {
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   268
			char *t;
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   269
810
7c51ba5a4368 (svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents: 801
diff changeset
   270
			append_path(filename, _fios_path, dirent->d_name);
1486
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   271
			if (stat(filename, &sb) || S_ISDIR(sb.st_mode)) continue;
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   272
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   273
			t = strrchr(dirent->d_name, '.');
1890
958234206caa (svn r2396) - Fix: Put strcasecmp back into os2.c, sorry Tron!
orudge
parents: 1888
diff changeset
   274
			if (t != NULL && strcasecmp(t, ".scn") == 0) { // OpenTTD
1486
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   275
				fios = FiosAlloc();
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   276
				fios->type = FIOS_TYPE_SCENARIO;
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   277
				fios->mtime = sb.st_mtime;
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   278
				ttd_strlcpy(fios->name, dirent->d_name, lengthof(fios->name));
2099
22f535ad9eea (svn r2609) - Feature: remove extension from savegames/scenarios when browsing the folders.
Darkvater
parents: 1893
diff changeset
   279
22f535ad9eea (svn r2609) - Feature: remove extension from savegames/scenarios when browsing the folders.
Darkvater
parents: 1893
diff changeset
   280
				*t = '\0'; // strip extension
22f535ad9eea (svn r2609) - Feature: remove extension from savegames/scenarios when browsing the folders.
Darkvater
parents: 1893
diff changeset
   281
				ttd_strlcpy(fios->title, dirent->d_name, lengthof(fios->title));
1486
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   282
			} else if (mode == SLD_LOAD_GAME || mode == SLD_LOAD_SCENARIO ||
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   283
					mode == SLD_NEW_GAME) {
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   284
				if (t != NULL && (
1890
958234206caa (svn r2396) - Fix: Put strcasecmp back into os2.c, sorry Tron!
orudge
parents: 1888
diff changeset
   285
							strcasecmp(t, ".sv0") == 0 ||
958234206caa (svn r2396) - Fix: Put strcasecmp back into os2.c, sorry Tron!
orudge
parents: 1888
diff changeset
   286
							strcasecmp(t, ".ss0") == 0
1486
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   287
						)) { // TTDLX(Patch)
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   288
					fios = FiosAlloc();
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   289
					fios->type = FIOS_TYPE_OLD_SCENARIO;
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   290
					fios->mtime = sb.st_mtime;
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   291
					GetOldScenarioGameName(fios->title, filename);
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   292
					ttd_strlcpy(fios->name, dirent->d_name, lengthof(fios->name));
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   293
				}
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   294
			}
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   295
		}
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   296
		closedir(dir);
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   297
	}
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   298
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   299
	qsort(_fios_items + sort_start, _fios_count - sort_start, sizeof(FiosItem), compare_FiosItems);
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   300
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   301
	// Drives
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   302
	if (mode != SLD_NEW_GAME)
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   303
	{
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   304
		unsigned save, disk, disk2, total;
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   305
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   306
		/* save original drive */
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   307
		_dos_getdrive(&save);
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   308
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   309
		/* get available drive letters */
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   310
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   311
		for (disk = 1; disk < 27; ++disk)
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   312
		{
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   313
			_dos_setdrive(disk, &total);
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   314
			_dos_getdrive(&disk2);
915
013cb2d74800 (svn r1402) Trim trailing whitespace
tron
parents: 818
diff changeset
   315
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   316
			if (disk == disk2)
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   317
			{
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   318
				fios = FiosAlloc();
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   319
				fios->type = FIOS_TYPE_DRIVE;
1580
0064c283b59b (svn r2084) Set the name for drive items
tron
parents: 1572
diff changeset
   320
				sprintf(fios->name, "%c:", 'A' + disk - 1);
0064c283b59b (svn r2084) Set the name for drive items
tron
parents: 1572
diff changeset
   321
				sprintf(fios->title, "%c:", 'A' + disk - 1);
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   322
			}
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   323
		}
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   324
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   325
		_dos_setdrive(save, &total);
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   326
	}
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   327
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   328
	*num = _fios_count;
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   329
	return _fios_items;
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   330
}
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   331
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   332
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   333
// Free the list of savegames
1486
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   334
void FiosFreeSavegameList(void)
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   335
{
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   336
	free(_fios_items);
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   337
	_fios_items = NULL;
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   338
	_fios_alloc = _fios_count = 0;
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   339
}
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   340
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   341
// Browse to
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   342
char *FiosBrowseTo(const FiosItem *item)
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   343
{
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   344
	char *path = _fios_path;
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   345
	char *s;
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   346
1486
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   347
	switch (item->type) {
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   348
		case FIOS_TYPE_DRIVE:
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   349
			sprintf(path, "%c:\\", item->title[0]);
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   350
			break;
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   351
1486
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   352
		case FIOS_TYPE_PARENT:
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   353
			s = strrchr(path, '\\');
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   354
			if (s != NULL) *s = '\0';
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   355
			break;
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   356
1486
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   357
		case FIOS_TYPE_DIR:
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   358
			s = strchr(item->name, '\\');
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   359
			if (s != NULL) *s = '\0';
1817
1ee097a8da2d (svn r2321) - Fix: [ 1202286 ] On OS/2 you get a double backslash in your filename after browsing to the root dir of a drive and "." and ".." are incorrectly displayed. (orudge)
matthijs
parents: 1599
diff changeset
   360
			if (path[3]!= '\0' ) strcat(path, "\\");
1486
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   361
			strcat(path, item->name);
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   362
			break;
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   363
1486
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   364
		case FIOS_TYPE_FILE:
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   365
		case FIOS_TYPE_OLDFILE:
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   366
		case FIOS_TYPE_SCENARIO:
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   367
		case FIOS_TYPE_OLD_SCENARIO: {
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   368
			static char str_buffr[512];
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   369
1486
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   370
			sprintf(str_buffr, "%s\\%s", path, item->name);
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   371
			return str_buffr;
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   372
		}
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   373
	}
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   374
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   375
	return NULL;
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   376
}
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   377
1596
c1c439a2d5b2 (svn r2100) - Fix: [1024703]: Infinite access for A:\ (win32). Patch [1171208]. Only requery drive(s) if the user changes a directory, also surpress the OS error box that pops up on some windows machines. Tron + glx (and me)
darkvater
parents: 1580
diff changeset
   378
/**
c1c439a2d5b2 (svn r2100) - Fix: [1024703]: Infinite access for A:\ (win32). Patch [1171208]. Only requery drive(s) if the user changes a directory, also surpress the OS error box that pops up on some windows machines. Tron + glx (and me)
darkvater
parents: 1580
diff changeset
   379
 * Get descriptive texts. Returns the path and free space
c1c439a2d5b2 (svn r2100) - Fix: [1024703]: Infinite access for A:\ (win32). Patch [1171208]. Only requery drive(s) if the user changes a directory, also surpress the OS error box that pops up on some windows machines. Tron + glx (and me)
darkvater
parents: 1580
diff changeset
   380
 * left on the device
c1c439a2d5b2 (svn r2100) - Fix: [1024703]: Infinite access for A:\ (win32). Patch [1171208]. Only requery drive(s) if the user changes a directory, also surpress the OS error box that pops up on some windows machines. Tron + glx (and me)
darkvater
parents: 1580
diff changeset
   381
 * @param path string describing the path
c1c439a2d5b2 (svn r2100) - Fix: [1024703]: Infinite access for A:\ (win32). Patch [1171208]. Only requery drive(s) if the user changes a directory, also surpress the OS error box that pops up on some windows machines. Tron + glx (and me)
darkvater
parents: 1580
diff changeset
   382
 * @param tfs total free space in megabytes, optional (can be NULL)
c1c439a2d5b2 (svn r2100) - Fix: [1024703]: Infinite access for A:\ (win32). Patch [1171208]. Only requery drive(s) if the user changes a directory, also surpress the OS error box that pops up on some windows machines. Tron + glx (and me)
darkvater
parents: 1580
diff changeset
   383
 * @return StringID describing the path (free space or failure)
c1c439a2d5b2 (svn r2100) - Fix: [1024703]: Infinite access for A:\ (win32). Patch [1171208]. Only requery drive(s) if the user changes a directory, also surpress the OS error box that pops up on some windows machines. Tron + glx (and me)
darkvater
parents: 1580
diff changeset
   384
 */
c1c439a2d5b2 (svn r2100) - Fix: [1024703]: Infinite access for A:\ (win32). Patch [1171208]. Only requery drive(s) if the user changes a directory, also surpress the OS error box that pops up on some windows machines. Tron + glx (and me)
darkvater
parents: 1580
diff changeset
   385
StringID FiosGetDescText(const char **path, uint32 *tot)
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   386
{
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   387
	struct diskfree_t free;
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   388
	char drive;
915
013cb2d74800 (svn r1402) Trim trailing whitespace
tron
parents: 818
diff changeset
   389
810
7c51ba5a4368 (svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents: 801
diff changeset
   390
	*path = _fios_path;
1486
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   391
	drive = *path[0] - 'A' + 1;
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   392
1596
c1c439a2d5b2 (svn r2100) - Fix: [1024703]: Infinite access for A:\ (win32). Patch [1171208]. Only requery drive(s) if the user changes a directory, also surpress the OS error box that pops up on some windows machines. Tron + glx (and me)
darkvater
parents: 1580
diff changeset
   393
	if (tot != NULL && _getdiskfree(drive, &free) == 0) {
c1c439a2d5b2 (svn r2100) - Fix: [1024703]: Infinite access for A:\ (win32). Patch [1171208]. Only requery drive(s) if the user changes a directory, also surpress the OS error box that pops up on some windows machines. Tron + glx (and me)
darkvater
parents: 1580
diff changeset
   394
		*tot = free.avail_clusters * free.sectors_per_cluster * free.bytes_per_sector;
c1c439a2d5b2 (svn r2100) - Fix: [1024703]: Infinite access for A:\ (win32). Patch [1171208]. Only requery drive(s) if the user changes a directory, also surpress the OS error box that pops up on some windows machines. Tron + glx (and me)
darkvater
parents: 1580
diff changeset
   395
		return STR_4005_BYTES_FREE;
c1c439a2d5b2 (svn r2100) - Fix: [1024703]: Infinite access for A:\ (win32). Patch [1171208]. Only requery drive(s) if the user changes a directory, also surpress the OS error box that pops up on some windows machines. Tron + glx (and me)
darkvater
parents: 1580
diff changeset
   396
	}
810
7c51ba5a4368 (svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents: 801
diff changeset
   397
1596
c1c439a2d5b2 (svn r2100) - Fix: [1024703]: Infinite access for A:\ (win32). Patch [1171208]. Only requery drive(s) if the user changes a directory, also surpress the OS error box that pops up on some windows machines. Tron + glx (and me)
darkvater
parents: 1580
diff changeset
   398
	return STR_4006_UNABLE_TO_READ_DRIVE;
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   399
}
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   400
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   401
void FiosMakeSavegameName(char *buf, const char *name)
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   402
{
1508
3f0d2f3147c2 (svn r2012) When making a savegame name, don't append the extension, if it is already there
tron
parents: 1506
diff changeset
   403
	const char* extension;
3f0d2f3147c2 (svn r2012) When making a savegame name, don't append the extension, if it is already there
tron
parents: 1506
diff changeset
   404
	const char* period;
3f0d2f3147c2 (svn r2012) When making a savegame name, don't append the extension, if it is already there
tron
parents: 1506
diff changeset
   405
1486
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   406
	if (_game_mode == GM_EDITOR)
1508
3f0d2f3147c2 (svn r2012) When making a savegame name, don't append the extension, if it is already there
tron
parents: 1506
diff changeset
   407
		extension = ".scn";
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   408
	else
1508
3f0d2f3147c2 (svn r2012) When making a savegame name, don't append the extension, if it is already there
tron
parents: 1506
diff changeset
   409
		extension = ".sav";
3f0d2f3147c2 (svn r2012) When making a savegame name, don't append the extension, if it is already there
tron
parents: 1506
diff changeset
   410
3f0d2f3147c2 (svn r2012) When making a savegame name, don't append the extension, if it is already there
tron
parents: 1506
diff changeset
   411
	// Don't append the extension, if it is already there
3f0d2f3147c2 (svn r2012) When making a savegame name, don't append the extension, if it is already there
tron
parents: 1506
diff changeset
   412
	period = strrchr(name, '.');
1890
958234206caa (svn r2396) - Fix: Put strcasecmp back into os2.c, sorry Tron!
orudge
parents: 1888
diff changeset
   413
	if (period != NULL && strcasecmp(period, extension) == 0) extension = "";
1508
3f0d2f3147c2 (svn r2012) When making a savegame name, don't append the extension, if it is already there
tron
parents: 1506
diff changeset
   414
3f0d2f3147c2 (svn r2012) When making a savegame name, don't append the extension, if it is already there
tron
parents: 1506
diff changeset
   415
	sprintf(buf, "%s\\%s%s", _fios_path, name, extension);
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   416
}
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   417
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   418
void FiosDelete(const char *name)
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   419
{
1336
c9e6b766bf21 (svn r1840) Repel str_buffr and use local buffers where possible
tron
parents: 1317
diff changeset
   420
	char path[512];
c9e6b766bf21 (svn r1840) Repel str_buffr and use local buffers where possible
tron
parents: 1317
diff changeset
   421
1495
c8a61d136f26 (svn r1999) r1990 broke savegame deletion, fix that [1161729]
tron
parents: 1486
diff changeset
   422
	snprintf(path, lengthof(path), "%s\\%s", _fios_path, name);
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   423
	unlink(path);
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   424
}
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   425
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   426
bool FileExists(const char *filename)
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   427
{
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   428
	return access(filename, 0) == 0;
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   429
}
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   430
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   431
static int LanguageCompareFunc(const void *a, const void *b)
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   432
{
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   433
	return strcmp(*(const char* const *)a, *(const char* const *)b);
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   434
}
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   435
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   436
int GetLanguageList(char **languages, int max)
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   437
{
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   438
	DIR *dir;
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   439
	struct dirent *dirent;
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   440
	int num = 0;
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   441
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   442
	dir = opendir(_path.lang_dir);
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   443
	if (dir != NULL) {
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   444
		while ((dirent = readdir(dir))) {
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   445
			char *t = strrchr(dirent->d_name, '.');
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   446
			if (t && !strcmp(t, ".lng")) {
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   447
				languages[num++] = strdup(dirent->d_name);
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   448
				if (num == max) break;
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   449
			}
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   450
		}
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   451
		closedir(dir);
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   452
	}
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   453
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   454
	qsort(languages, num, sizeof(char*), LanguageCompareFunc);
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   455
	return num;
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   456
}
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   457
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   458
static void ChangeWorkingDirectory(char *exe)
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   459
{
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   460
	char *s = strrchr(exe, '\\');
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   461
	if (s != NULL) {
1486
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   462
		*s = '\0';
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   463
		chdir(exe);
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   464
		*s = '\\';
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   465
	}
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   466
}
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   467
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   468
void ShowInfo(const char *str)
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   469
{
818
906f21e653b2 (svn r1289) -Fix: Minor fix for OS/2 message boxes (orudge)
truelight
parents: 810
diff changeset
   470
	HAB hab;
906f21e653b2 (svn r1289) -Fix: Minor fix for OS/2 message boxes (orudge)
truelight
parents: 810
diff changeset
   471
	HMQ hmq;
906f21e653b2 (svn r1289) -Fix: Minor fix for OS/2 message boxes (orudge)
truelight
parents: 810
diff changeset
   472
	ULONG rc;
915
013cb2d74800 (svn r1402) Trim trailing whitespace
tron
parents: 818
diff changeset
   473
818
906f21e653b2 (svn r1289) -Fix: Minor fix for OS/2 message boxes (orudge)
truelight
parents: 810
diff changeset
   474
	// init PM env.
906f21e653b2 (svn r1289) -Fix: Minor fix for OS/2 message boxes (orudge)
truelight
parents: 810
diff changeset
   475
	hmq = WinCreateMsgQueue((hab = WinInitialize(0)), 0);
906f21e653b2 (svn r1289) -Fix: Minor fix for OS/2 message boxes (orudge)
truelight
parents: 810
diff changeset
   476
906f21e653b2 (svn r1289) -Fix: Minor fix for OS/2 message boxes (orudge)
truelight
parents: 810
diff changeset
   477
	// display the box
906f21e653b2 (svn r1289) -Fix: Minor fix for OS/2 message boxes (orudge)
truelight
parents: 810
diff changeset
   478
	rc = WinMessageBox(HWND_DESKTOP, HWND_DESKTOP, str, "OpenTTD", 0, MB_OK | MB_MOVEABLE | MB_INFORMATION);
906f21e653b2 (svn r1289) -Fix: Minor fix for OS/2 message boxes (orudge)
truelight
parents: 810
diff changeset
   479
906f21e653b2 (svn r1289) -Fix: Minor fix for OS/2 message boxes (orudge)
truelight
parents: 810
diff changeset
   480
	// terminate PM env.
906f21e653b2 (svn r1289) -Fix: Minor fix for OS/2 message boxes (orudge)
truelight
parents: 810
diff changeset
   481
	WinDestroyMsgQueue(hmq);
906f21e653b2 (svn r1289) -Fix: Minor fix for OS/2 message boxes (orudge)
truelight
parents: 810
diff changeset
   482
	WinTerminate(hab);
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   483
}
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   484
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   485
void ShowOSErrorBox(const char *buf)
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   486
{
818
906f21e653b2 (svn r1289) -Fix: Minor fix for OS/2 message boxes (orudge)
truelight
parents: 810
diff changeset
   487
	HAB hab;
906f21e653b2 (svn r1289) -Fix: Minor fix for OS/2 message boxes (orudge)
truelight
parents: 810
diff changeset
   488
	HMQ hmq;
906f21e653b2 (svn r1289) -Fix: Minor fix for OS/2 message boxes (orudge)
truelight
parents: 810
diff changeset
   489
	ULONG rc;
915
013cb2d74800 (svn r1402) Trim trailing whitespace
tron
parents: 818
diff changeset
   490
818
906f21e653b2 (svn r1289) -Fix: Minor fix for OS/2 message boxes (orudge)
truelight
parents: 810
diff changeset
   491
	// init PM env.
906f21e653b2 (svn r1289) -Fix: Minor fix for OS/2 message boxes (orudge)
truelight
parents: 810
diff changeset
   492
	hmq = WinCreateMsgQueue((hab = WinInitialize(0)), 0);
906f21e653b2 (svn r1289) -Fix: Minor fix for OS/2 message boxes (orudge)
truelight
parents: 810
diff changeset
   493
906f21e653b2 (svn r1289) -Fix: Minor fix for OS/2 message boxes (orudge)
truelight
parents: 810
diff changeset
   494
	// display the box
906f21e653b2 (svn r1289) -Fix: Minor fix for OS/2 message boxes (orudge)
truelight
parents: 810
diff changeset
   495
	rc = WinMessageBox(HWND_DESKTOP, HWND_DESKTOP, buf, "OpenTTD", 0, MB_OK | MB_MOVEABLE | MB_ERROR);
906f21e653b2 (svn r1289) -Fix: Minor fix for OS/2 message boxes (orudge)
truelight
parents: 810
diff changeset
   496
906f21e653b2 (svn r1289) -Fix: Minor fix for OS/2 message boxes (orudge)
truelight
parents: 810
diff changeset
   497
	// terminate PM env.
906f21e653b2 (svn r1289) -Fix: Minor fix for OS/2 message boxes (orudge)
truelight
parents: 810
diff changeset
   498
	WinDestroyMsgQueue(hmq);
906f21e653b2 (svn r1289) -Fix: Minor fix for OS/2 message boxes (orudge)
truelight
parents: 810
diff changeset
   499
	WinTerminate(hab);
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   500
}
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   501
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   502
int CDECL main(int argc, char* argv[])
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   503
{
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   504
	// change the working directory to enable doubleclicking in UIs
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   505
	ChangeWorkingDirectory(argv[0]);
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   506
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   507
	_random_seeds[0][1] = _random_seeds[0][0] = time(NULL);
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   508
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   509
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   510
	return ttd_main(argc, argv);
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   511
}
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   512
1390
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1346
diff changeset
   513
void DeterminePaths(void)
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   514
{
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   515
	char *s;
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   516
1486
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   517
	_path.game_data_dir = malloc(MAX_PATH);
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   518
	ttd_strlcpy(_path.game_data_dir, GAME_DATA_DIR, MAX_PATH);
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   519
	#if defined SECOND_DATA_DIR
1486
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   520
	_path.second_data_dir = malloc(MAX_PATH);
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   521
	ttd_strlcpy(_path.second_data_dir, SECOND_DATA_DIR, MAX_PATH);
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   522
	#endif
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   523
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   524
#if defined(USE_HOMEDIR)
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   525
	{
1486
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   526
		const char *homedir = getenv("HOME");
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   527
1486
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   528
		if (homedir == NULL) {
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   529
			const struct passwd *pw = getpwuid(getuid());
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   530
			if (pw != NULL) homedir = pw->pw_dir;
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   531
		}
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   532
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   533
		_path.personal_dir = str_fmt("%s" PATHSEP "%s", homedir, PERSONAL_DIR);
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   534
	}
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   535
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   536
#else /* not defined(USE_HOMEDIR) */
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   537
1486
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   538
	_path.personal_dir = malloc(MAX_PATH);
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   539
	ttd_strlcpy(_path.personal_dir, PERSONAL_DIR, MAX_PATH);
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   540
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   541
	// check if absolute or relative path
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   542
	s = strchr(_path.personal_dir, '\\');
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   543
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   544
	// add absolute path
1486
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   545
	if (s == NULL || _path.personal_dir != s) {
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   546
		getcwd(_path.personal_dir, MAX_PATH);
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   547
		s = strchr(_path.personal_dir, 0);
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   548
		*s++ = '\\';
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   549
		ttd_strlcpy(s, PERSONAL_DIR, MAX_PATH);
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   550
	}
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   551
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   552
#endif /* defined(USE_HOMEDIR) */
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   553
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   554
	s = strchr(_path.personal_dir, 0);
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   555
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   556
	// append a / ?
1486
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   557
	if (s[-1] != '\\') strcpy(s, "\\");
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   558
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   559
	_path.save_dir = str_fmt("%ssave", _path.personal_dir);
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   560
	_path.autosave_dir = str_fmt("%s\\autosave", _path.save_dir);
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   561
	_path.scenario_dir = str_fmt("%sscenario", _path.personal_dir);
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   562
	_path.gm_dir = str_fmt("%sgm\\", _path.game_data_dir);
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   563
	_path.data_dir = str_fmt("%sdata\\", _path.game_data_dir);
1482
46a8146adecf (svn r1986) - Fix: free _config_file when shutting down openttd. Strange that Valgrind didn't catch this, kudos to TrueLight
Darkvater
parents: 1390
diff changeset
   564
46a8146adecf (svn r1986) - Fix: free _config_file when shutting down openttd. Strange that Valgrind didn't catch this, kudos to TrueLight
Darkvater
parents: 1390
diff changeset
   565
	if (_config_file == NULL)
46a8146adecf (svn r1986) - Fix: free _config_file when shutting down openttd. Strange that Valgrind didn't catch this, kudos to TrueLight
Darkvater
parents: 1390
diff changeset
   566
		_config_file = str_fmt("%sopenttd.cfg", _path.personal_dir);
915
013cb2d74800 (svn r1402) Trim trailing whitespace
tron
parents: 818
diff changeset
   567
1486
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   568
	_highscore_file = str_fmt("%shs.dat", _path.personal_dir);
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   569
	_log_file = str_fmt("%sopenttd.log", _path.personal_dir);
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   570
801
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   571
#if defined CUSTOM_LANG_DIR
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   572
	// sets the search path for lng files to the custom one
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   573
	_path.lang_dir = malloc( MAX_PATH );
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   574
	ttd_strlcpy( _path.lang_dir, CUSTOM_LANG_DIR, MAX_PATH);
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   575
#else
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   576
	_path.lang_dir = str_fmt("%slang\\", _path.game_data_dir);
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   577
#endif
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   578
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   579
	// create necessary folders
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   580
	mkdir(_path.personal_dir);
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   581
	mkdir(_path.save_dir);
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   582
	mkdir(_path.autosave_dir);
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   583
	mkdir(_path.scenario_dir);
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   584
}
bfa47ec110b0 (svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents: 782
diff changeset
   585
1888
5f0398340e05 (svn r2394) - Completed clipboard functions for OS/2 port
orudge
parents: 1887
diff changeset
   586
/**
5f0398340e05 (svn r2394) - Completed clipboard functions for OS/2 port
orudge
parents: 1887
diff changeset
   587
 * Insert a chunk of text from the clipboard onto the textbuffer. Get TEXT clipboard
5f0398340e05 (svn r2394) - Completed clipboard functions for OS/2 port
orudge
parents: 1887
diff changeset
   588
 * and append this up to the maximum length (either absolute or screenlength). If maxlength
5f0398340e05 (svn r2394) - Completed clipboard functions for OS/2 port
orudge
parents: 1887
diff changeset
   589
 * is zero, we don't care about the screenlength but only about the physical length of the string
5f0398340e05 (svn r2394) - Completed clipboard functions for OS/2 port
orudge
parents: 1887
diff changeset
   590
 * @param tb @Textbuf type to be changed
5f0398340e05 (svn r2394) - Completed clipboard functions for OS/2 port
orudge
parents: 1887
diff changeset
   591
 * @return Return true on successfull change of Textbuf, or false otherwise
5f0398340e05 (svn r2394) - Completed clipboard functions for OS/2 port
orudge
parents: 1887
diff changeset
   592
 */
1486
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   593
bool InsertTextBufferClipboard(Textbuf *tb)
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   594
{
1893
278bddd649be (svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents: 1892
diff changeset
   595
	HAB hab = 0;
1524
85efc2f52e2c (svn r2028) Added detection of SVN version (rev.c generation) for OS/2, updated readme, initial clipboard support (orudge)
celestar
parents: 1508
diff changeset
   596
85efc2f52e2c (svn r2028) Added detection of SVN version (rev.c generation) for OS/2, updated readme, initial clipboard support (orudge)
celestar
parents: 1508
diff changeset
   597
	if (WinOpenClipbrd(hab))
85efc2f52e2c (svn r2028) Added detection of SVN version (rev.c generation) for OS/2, updated readme, initial clipboard support (orudge)
celestar
parents: 1508
diff changeset
   598
	{
1893
278bddd649be (svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents: 1892
diff changeset
   599
		const char* text = (const char*)WinQueryClipbrdData(hab, CF_TEXT);
278bddd649be (svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents: 1892
diff changeset
   600
278bddd649be (svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents: 1892
diff changeset
   601
		if (text != NULL)
278bddd649be (svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents: 1892
diff changeset
   602
		{
278bddd649be (svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents: 1892
diff changeset
   603
			uint length = 0;
278bddd649be (svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents: 1892
diff changeset
   604
			uint width = 0;
278bddd649be (svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents: 1892
diff changeset
   605
			const char* i;
278bddd649be (svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents: 1892
diff changeset
   606
278bddd649be (svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents: 1892
diff changeset
   607
			for (i = text; IsValidAsciiChar(*i); i++)
278bddd649be (svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents: 1892
diff changeset
   608
			{
278bddd649be (svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents: 1892
diff changeset
   609
				uint w;
278bddd649be (svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents: 1892
diff changeset
   610
278bddd649be (svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents: 1892
diff changeset
   611
				if (tb->length + length >= tb->maxlength - 1) break;
278bddd649be (svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents: 1892
diff changeset
   612
278bddd649be (svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents: 1892
diff changeset
   613
				w = GetCharacterWidth((byte)*i);
278bddd649be (svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents: 1892
diff changeset
   614
				if (tb->maxwidth != 0 && width + tb->width + w > tb->maxwidth) break;
278bddd649be (svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents: 1892
diff changeset
   615
278bddd649be (svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents: 1892
diff changeset
   616
				width += w;
278bddd649be (svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents: 1892
diff changeset
   617
				length++;
278bddd649be (svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents: 1892
diff changeset
   618
			}
278bddd649be (svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents: 1892
diff changeset
   619
278bddd649be (svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents: 1892
diff changeset
   620
			memmove(tb->buf + tb->caretpos + length, tb->buf + tb->caretpos, tb->length - tb->caretpos + 1);
278bddd649be (svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents: 1892
diff changeset
   621
			memcpy(tb->buf + tb->caretpos, text, length);
278bddd649be (svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents: 1892
diff changeset
   622
			tb->width += width;
278bddd649be (svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents: 1892
diff changeset
   623
			tb->caretxoffs += width;
278bddd649be (svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents: 1892
diff changeset
   624
			tb->length += length;
278bddd649be (svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents: 1892
diff changeset
   625
			tb->caretpos += length;
278bddd649be (svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents: 1892
diff changeset
   626
278bddd649be (svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents: 1892
diff changeset
   627
			WinCloseClipbrd(hab);
278bddd649be (svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents: 1892
diff changeset
   628
			return true;
278bddd649be (svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents: 1892
diff changeset
   629
		}
1888
5f0398340e05 (svn r2394) - Completed clipboard functions for OS/2 port
orudge
parents: 1887
diff changeset
   630
1524
85efc2f52e2c (svn r2028) Added detection of SVN version (rev.c generation) for OS/2, updated readme, initial clipboard support (orudge)
celestar
parents: 1508
diff changeset
   631
		WinCloseClipbrd(hab);
85efc2f52e2c (svn r2028) Added detection of SVN version (rev.c generation) for OS/2, updated readme, initial clipboard support (orudge)
celestar
parents: 1508
diff changeset
   632
	}
85efc2f52e2c (svn r2028) Added detection of SVN version (rev.c generation) for OS/2, updated readme, initial clipboard support (orudge)
celestar
parents: 1508
diff changeset
   633
1893
278bddd649be (svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents: 1892
diff changeset
   634
	return false;
1486
6a31e3d7dfe3 (svn r1990) Reduce the diff between the OS specific files with respect to file handling and fix some inconsitencies (I hope I didn't break the OS/2 part, couldn't test it, feedback is welcome)
tron
parents: 1482
diff changeset
   635
}
1887
9f1af4f412d4 (svn r2393) - Implemented threaded saving for OS/2
orudge
parents: 1817
diff changeset
   636
9f1af4f412d4 (svn r2393) - Implemented threaded saving for OS/2
orudge
parents: 1817
diff changeset
   637
static TID thread1 = 0;
9f1af4f412d4 (svn r2393) - Implemented threaded saving for OS/2
orudge
parents: 1817
diff changeset
   638
9f1af4f412d4 (svn r2393) - Implemented threaded saving for OS/2
orudge
parents: 1817
diff changeset
   639
// The thread function must be declared and compiled using _Optlink linkage, apparently
9f1af4f412d4 (svn r2393) - Implemented threaded saving for OS/2
orudge
parents: 1817
diff changeset
   640
// It seems to work, though :)
9f1af4f412d4 (svn r2393) - Implemented threaded saving for OS/2
orudge
parents: 1817
diff changeset
   641
9f1af4f412d4 (svn r2393) - Implemented threaded saving for OS/2
orudge
parents: 1817
diff changeset
   642
bool CreateOTTDThread(void *func, void *param)
9f1af4f412d4 (svn r2393) - Implemented threaded saving for OS/2
orudge
parents: 1817
diff changeset
   643
{
9f1af4f412d4 (svn r2393) - Implemented threaded saving for OS/2
orudge
parents: 1817
diff changeset
   644
	thread1 = _beginthread(func, NULL, 32768, param);
9f1af4f412d4 (svn r2393) - Implemented threaded saving for OS/2
orudge
parents: 1817
diff changeset
   645
9f1af4f412d4 (svn r2393) - Implemented threaded saving for OS/2
orudge
parents: 1817
diff changeset
   646
	if (thread1 == -1)
9f1af4f412d4 (svn r2393) - Implemented threaded saving for OS/2
orudge
parents: 1817
diff changeset
   647
		return(false);
9f1af4f412d4 (svn r2393) - Implemented threaded saving for OS/2
orudge
parents: 1817
diff changeset
   648
9f1af4f412d4 (svn r2393) - Implemented threaded saving for OS/2
orudge
parents: 1817
diff changeset
   649
	return(true);
9f1af4f412d4 (svn r2393) - Implemented threaded saving for OS/2
orudge
parents: 1817
diff changeset
   650
}
9f1af4f412d4 (svn r2393) - Implemented threaded saving for OS/2
orudge
parents: 1817
diff changeset
   651
9f1af4f412d4 (svn r2393) - Implemented threaded saving for OS/2
orudge
parents: 1817
diff changeset
   652
void CloseOTTDThread(void)
9f1af4f412d4 (svn r2393) - Implemented threaded saving for OS/2
orudge
parents: 1817
diff changeset
   653
{
9f1af4f412d4 (svn r2393) - Implemented threaded saving for OS/2
orudge
parents: 1817
diff changeset
   654
	_endthread();
9f1af4f412d4 (svn r2393) - Implemented threaded saving for OS/2
orudge
parents: 1817
diff changeset
   655
	return;
9f1af4f412d4 (svn r2393) - Implemented threaded saving for OS/2
orudge
parents: 1817
diff changeset
   656
}
9f1af4f412d4 (svn r2393) - Implemented threaded saving for OS/2
orudge
parents: 1817
diff changeset
   657
9f1af4f412d4 (svn r2393) - Implemented threaded saving for OS/2
orudge
parents: 1817
diff changeset
   658
void JoinOTTDThread(void)
9f1af4f412d4 (svn r2393) - Implemented threaded saving for OS/2
orudge
parents: 1817
diff changeset
   659
{
9f1af4f412d4 (svn r2393) - Implemented threaded saving for OS/2
orudge
parents: 1817
diff changeset
   660
	if (thread1 == 0)
9f1af4f412d4 (svn r2393) - Implemented threaded saving for OS/2
orudge
parents: 1817
diff changeset
   661
		return;
9f1af4f412d4 (svn r2393) - Implemented threaded saving for OS/2
orudge
parents: 1817
diff changeset
   662
9f1af4f412d4 (svn r2393) - Implemented threaded saving for OS/2
orudge
parents: 1817
diff changeset
   663
	DosWaitThread(&thread1, DCWW_WAIT);
9f1af4f412d4 (svn r2393) - Implemented threaded saving for OS/2
orudge
parents: 1817
diff changeset
   664
}
2167
99d31f4eeb37 (svn r2681) - Fix OS/2 port, please do not modify openttd.wpj/tgt by hand unless you know what you're doing!
orudge
parents: 2099
diff changeset
   665
99d31f4eeb37 (svn r2681) - Fix OS/2 port, please do not modify openttd.wpj/tgt by hand unless you know what you're doing!
orudge
parents: 2099
diff changeset
   666
void CSleep(int milliseconds)
99d31f4eeb37 (svn r2681) - Fix OS/2 port, please do not modify openttd.wpj/tgt by hand unless you know what you're doing!
orudge
parents: 2099
diff changeset
   667
{
99d31f4eeb37 (svn r2681) - Fix OS/2 port, please do not modify openttd.wpj/tgt by hand unless you know what you're doing!
orudge
parents: 2099
diff changeset
   668
	delay(milliseconds);
99d31f4eeb37 (svn r2681) - Fix OS/2 port, please do not modify openttd.wpj/tgt by hand unless you know what you're doing!
orudge
parents: 2099
diff changeset
   669
}
99d31f4eeb37 (svn r2681) - Fix OS/2 port, please do not modify openttd.wpj/tgt by hand unless you know what you're doing!
orudge
parents: 2099
diff changeset
   670