author | Tero Marttila <terom@fixme.fi> |
Fri, 18 Jul 2008 21:28:42 +0300 | |
changeset 11175 | 020c61e39c94 |
parent 10839 | a62547c31fdb |
permissions | -rw-r--r-- |
2186 | 1 |
/* $Id$ */ |
2 |
||
10429
1b99254f9607
(svn r12971) -Documentation: add @file in files that missed them and add something more than whitespace as description of files that don't have a description.
rubidium
parents:
8760
diff
changeset
|
3 |
/** @file os2.cpp OS2 related OS support. */ |
6677
0578c2e31ed1
(svn r9390) -Documentation : correct Doxygen of comments and @file inclusion. This time, brought to you by the letter O
belugas
parents:
6644
diff
changeset
|
4 |
|
801
bfa47ec110b0
(svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents:
782
diff
changeset
|
5 |
#include "stdafx.h" |
1892
45894b95a925
(svn r2398) - CodeChange: forgot to update unix and os2 specific files as well.
Darkvater
parents:
1890
diff
changeset
|
6 |
#include "openttd.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
|
7 |
#include "variables.h" |
1888
5f0398340e05
(svn r2394) - Completed clipboard functions for OS/2 port
orudge
parents:
1887
diff
changeset
|
8 |
#include "gui.h" |
6624
554e5aee6c3f
(svn r9129) -Codechange: unify parts of DeterminePaths.
rubidium
parents:
6573
diff
changeset
|
9 |
#include "fileio.h" |
7541
0b79c8fb5e7f
(svn r10310) -Fix: Trunk can now be built on OS/2 :)
orudge
parents:
6988
diff
changeset
|
10 |
#include "fios.h" // opendir/readdir/closedir |
8627
448ebf3a8291
(svn r11692) -Codechange: move some functions from 'functions.h' to a more logical place and remove about 50% of the includes of 'functions.h'
rubidium
parents:
8617
diff
changeset
|
11 |
#include "functions.h" |
448ebf3a8291
(svn r11692) -Codechange: move some functions from 'functions.h' to a more logical place and remove about 50% of the includes of 'functions.h'
rubidium
parents:
8617
diff
changeset
|
12 |
#include "core/random_func.hpp" |
8746
ac02a67d63df
(svn r11814) -Fix: Get OpenTTD compiling again on OS/2
orudge
parents:
8710
diff
changeset
|
13 |
#include "string_func.h" |
ac02a67d63df
(svn r11814) -Fix: Get OpenTTD compiling again on OS/2
orudge
parents:
8710
diff
changeset
|
14 |
#include "textbuf_gui.h" |
801
bfa47ec110b0
(svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents:
782
diff
changeset
|
15 |
|
8760
ce0891c412ce
(svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium
parents:
8746
diff
changeset
|
16 |
#include "table/strings.h" |
ce0891c412ce
(svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium
parents:
8746
diff
changeset
|
17 |
|
5842
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
18 |
#include <dirent.h> |
801
bfa47ec110b0
(svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents:
782
diff
changeset
|
19 |
#include <unistd.h> |
bfa47ec110b0
(svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents:
782
diff
changeset
|
20 |
#include <sys/stat.h> |
1887 | 21 |
#include <stdlib.h> |
801
bfa47ec110b0
(svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents:
782
diff
changeset
|
22 |
#include <time.h> |
5842
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
23 |
#ifndef __INNOTEK_LIBC__ |
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
24 |
#include <dos.h> |
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
25 |
#endif |
801
bfa47ec110b0
(svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents:
782
diff
changeset
|
26 |
|
818
906f21e653b2
(svn r1289) -Fix: Minor fix for OS/2 message boxes (orudge)
truelight
parents:
810
diff
changeset
|
27 |
#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
|
28 |
#define INCL_WINCLIPBOARD |
810
7c51ba5a4368
(svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents:
801
diff
changeset
|
29 |
|
801
bfa47ec110b0
(svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents:
782
diff
changeset
|
30 |
#include <os2.h> |
5842
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
31 |
#ifndef __INNOTEK_LIBC__ |
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
32 |
#include <i86.h> |
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
33 |
#endif |
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
|
34 |
|
4223
0f9535dda7ed
(svn r5767) - Cleanup: Improve upon the header file mess regarding fios. Move all relevant types from hal.h into fios.h, eliminate the unneccessary passing of a global variable, and extern variables in header files (declare in fios.c and misc_gui.c
Darkvater
parents:
4222
diff
changeset
|
35 |
bool FiosIsRoot(const char *file) |
810
7c51ba5a4368
(svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents:
801
diff
changeset
|
36 |
{ |
5842
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
37 |
return file[3] == '\0'; |
810
7c51ba5a4368
(svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents:
801
diff
changeset
|
38 |
} |
7c51ba5a4368
(svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents:
801
diff
changeset
|
39 |
|
6573 | 40 |
void FiosGetDrives() |
801
bfa47ec110b0
(svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents:
782
diff
changeset
|
41 |
{ |
4221
bb06fe8dcce2
(svn r5765) - Codechange: Fully unify the OS-specific FiosGet...List functions into fios.c, as well as FiosGetSavegameList and FiosGetScenarioList functions with the help of some callbacks.
Darkvater
parents:
4220
diff
changeset
|
42 |
unsigned disk, disk2, save, total; |
801
bfa47ec110b0
(svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents:
782
diff
changeset
|
43 |
|
5842
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
44 |
#ifndef __INNOTEK_LIBC__ |
4221
bb06fe8dcce2
(svn r5765) - Codechange: Fully unify the OS-specific FiosGet...List functions into fios.c, as well as FiosGetSavegameList and FiosGetScenarioList functions with the help of some callbacks.
Darkvater
parents:
4220
diff
changeset
|
45 |
_dos_getdrive(&save); // save original drive |
5842
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
46 |
#else |
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
47 |
save = _getdrive(); // save original drive |
7798
e80da98ed2c7
(svn r10651) -Fix: Fix chdir problem with open/save dialog on OS/2 (Paul Smedley)
orudge
parents:
7541
diff
changeset
|
48 |
char wd[MAX_PATH]; |
e80da98ed2c7
(svn r10651) -Fix: Fix chdir problem with open/save dialog on OS/2 (Paul Smedley)
orudge
parents:
7541
diff
changeset
|
49 |
getcwd(wd, MAX_PATH); |
5842
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
50 |
total = 'z'; |
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
51 |
#endif |
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 |
|
4221
bb06fe8dcce2
(svn r5765) - Codechange: Fully unify the OS-specific FiosGet...List functions into fios.c, as well as FiosGetSavegameList and FiosGetScenarioList functions with the help of some callbacks.
Darkvater
parents:
4220
diff
changeset
|
53 |
/* get an available drive letter */ |
5842
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
54 |
#ifndef __INNOTEK_LIBC__ |
4221
bb06fe8dcce2
(svn r5765) - Codechange: Fully unify the OS-specific FiosGet...List functions into fios.c, as well as FiosGetSavegameList and FiosGetScenarioList functions with the help of some callbacks.
Darkvater
parents:
4220
diff
changeset
|
55 |
for (disk = 1;; disk++) { |
bb06fe8dcce2
(svn r5765) - Codechange: Fully unify the OS-specific FiosGet...List functions into fios.c, as well as FiosGetSavegameList and FiosGetScenarioList functions with the help of some callbacks.
Darkvater
parents:
4220
diff
changeset
|
56 |
_dos_setdrive(disk, &total); |
5842
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
57 |
#else |
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
58 |
for (disk = 'A';; disk++) { |
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
59 |
_chdrive(disk); |
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
60 |
#endif |
7798
e80da98ed2c7
(svn r10651) -Fix: Fix chdir problem with open/save dialog on OS/2 (Paul Smedley)
orudge
parents:
7541
diff
changeset
|
61 |
if (disk >= total) break; |
5842
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
62 |
|
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
63 |
#ifndef __INNOTEK_LIBC__ |
4221
bb06fe8dcce2
(svn r5765) - Codechange: Fully unify the OS-specific FiosGet...List functions into fios.c, as well as FiosGetSavegameList and FiosGetScenarioList functions with the help of some callbacks.
Darkvater
parents:
4220
diff
changeset
|
64 |
_dos_getdrive(&disk2); |
5842
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
65 |
#else |
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
66 |
disk2 = _getdrive(); |
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
67 |
#endif |
2099
22f535ad9eea
(svn r2609) - Feature: remove extension from savegames/scenarios when browsing the folders.
Darkvater
parents:
1893
diff
changeset
|
68 |
|
4221
bb06fe8dcce2
(svn r5765) - Codechange: Fully unify the OS-specific FiosGet...List functions into fios.c, as well as FiosGetSavegameList and FiosGetScenarioList functions with the help of some callbacks.
Darkvater
parents:
4220
diff
changeset
|
69 |
if (disk == disk2) { |
10810 | 70 |
FiosItem *fios = _fios_items.Append(); |
4221
bb06fe8dcce2
(svn r5765) - Codechange: Fully unify the OS-specific FiosGet...List functions into fios.c, as well as FiosGetSavegameList and FiosGetScenarioList functions with the help of some callbacks.
Darkvater
parents:
4220
diff
changeset
|
71 |
fios->type = FIOS_TYPE_DRIVE; |
bb06fe8dcce2
(svn r5765) - Codechange: Fully unify the OS-specific FiosGet...List functions into fios.c, as well as FiosGetSavegameList and FiosGetScenarioList functions with the help of some callbacks.
Darkvater
parents:
4220
diff
changeset
|
72 |
fios->mtime = 0; |
5842
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
73 |
#ifndef __INNOTEK_LIBC__ |
4221
bb06fe8dcce2
(svn r5765) - Codechange: Fully unify the OS-specific FiosGet...List functions into fios.c, as well as FiosGetSavegameList and FiosGetScenarioList functions with the help of some callbacks.
Darkvater
parents:
4220
diff
changeset
|
74 |
snprintf(fios->name, lengthof(fios->name), "%c:", 'A' + disk - 1); |
5842
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
75 |
#else |
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
76 |
snprintf(fios->name, lengthof(fios->name), "%c:", disk); |
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
77 |
#endif |
4221
bb06fe8dcce2
(svn r5765) - Codechange: Fully unify the OS-specific FiosGet...List functions into fios.c, as well as FiosGetSavegameList and FiosGetScenarioList functions with the help of some callbacks.
Darkvater
parents:
4220
diff
changeset
|
78 |
ttd_strlcpy(fios->title, fios->name, lengthof(fios->title)); |
801
bfa47ec110b0
(svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents:
782
diff
changeset
|
79 |
} |
bfa47ec110b0
(svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents:
782
diff
changeset
|
80 |
} |
bfa47ec110b0
(svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents:
782
diff
changeset
|
81 |
|
5842
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
82 |
/* Restore the original drive */ |
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
83 |
#ifndef __INNOTEK_LIBC__ |
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
84 |
_dos_setdrive(save, &total); |
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
85 |
#else |
7798
e80da98ed2c7
(svn r10651) -Fix: Fix chdir problem with open/save dialog on OS/2 (Paul Smedley)
orudge
parents:
7541
diff
changeset
|
86 |
chdir(wd); |
5842
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
87 |
#endif |
801
bfa47ec110b0
(svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents:
782
diff
changeset
|
88 |
} |
bfa47ec110b0
(svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents:
782
diff
changeset
|
89 |
|
4222
951fbf19b1ad
(svn r5766) - Cleanup: Unify FiosBrowseTo and FiosGetDescText
Darkvater
parents:
4221
diff
changeset
|
90 |
bool FiosGetDiskFreeSpace(const char *path, uint32 *tot) |
951fbf19b1ad
(svn r5766) - Cleanup: Unify FiosBrowseTo and FiosGetDescText
Darkvater
parents:
4221
diff
changeset
|
91 |
{ |
5842
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
92 |
#ifndef __INNOTEK_LIBC__ |
4222
951fbf19b1ad
(svn r5766) - Cleanup: Unify FiosBrowseTo and FiosGetDescText
Darkvater
parents:
4221
diff
changeset
|
93 |
struct diskfree_t free; |
951fbf19b1ad
(svn r5766) - Cleanup: Unify FiosBrowseTo and FiosGetDescText
Darkvater
parents:
4221
diff
changeset
|
94 |
char drive = path[0] - 'A' + 1; |
951fbf19b1ad
(svn r5766) - Cleanup: Unify FiosBrowseTo and FiosGetDescText
Darkvater
parents:
4221
diff
changeset
|
95 |
|
951fbf19b1ad
(svn r5766) - Cleanup: Unify FiosBrowseTo and FiosGetDescText
Darkvater
parents:
4221
diff
changeset
|
96 |
if (tot != NULL && _getdiskfree(drive, &free) == 0) { |
951fbf19b1ad
(svn r5766) - Cleanup: Unify FiosBrowseTo and FiosGetDescText
Darkvater
parents:
4221
diff
changeset
|
97 |
*tot = free.avail_clusters * free.sectors_per_cluster * free.bytes_per_sector; |
951fbf19b1ad
(svn r5766) - Cleanup: Unify FiosBrowseTo and FiosGetDescText
Darkvater
parents:
4221
diff
changeset
|
98 |
return true; |
951fbf19b1ad
(svn r5766) - Cleanup: Unify FiosBrowseTo and FiosGetDescText
Darkvater
parents:
4221
diff
changeset
|
99 |
} |
951fbf19b1ad
(svn r5766) - Cleanup: Unify FiosBrowseTo and FiosGetDescText
Darkvater
parents:
4221
diff
changeset
|
100 |
|
951fbf19b1ad
(svn r5766) - Cleanup: Unify FiosBrowseTo and FiosGetDescText
Darkvater
parents:
4221
diff
changeset
|
101 |
return false; |
5842
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
102 |
#else |
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
103 |
uint32 free = 0; |
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
104 |
|
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
105 |
#ifdef HAS_STATVFS |
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
106 |
{ |
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
107 |
struct statvfs s; |
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
108 |
|
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
109 |
if (statvfs(path, &s) != 0) return false; |
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
110 |
free = (uint64)s.f_frsize * s.f_bavail >> 20; |
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
111 |
} |
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
112 |
#endif |
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
113 |
if (tot != NULL) *tot = free; |
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
114 |
return true; |
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
115 |
#endif |
4222
951fbf19b1ad
(svn r5766) - Cleanup: Unify FiosBrowseTo and FiosGetDescText
Darkvater
parents:
4221
diff
changeset
|
116 |
} |
951fbf19b1ad
(svn r5766) - Cleanup: Unify FiosBrowseTo and FiosGetDescText
Darkvater
parents:
4221
diff
changeset
|
117 |
|
4221
bb06fe8dcce2
(svn r5765) - Codechange: Fully unify the OS-specific FiosGet...List functions into fios.c, as well as FiosGetSavegameList and FiosGetScenarioList functions with the help of some callbacks.
Darkvater
parents:
4220
diff
changeset
|
118 |
bool FiosIsValidFile(const char *path, const struct dirent *ent, struct stat *sb) |
801
bfa47ec110b0
(svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents:
782
diff
changeset
|
119 |
{ |
bfa47ec110b0
(svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents:
782
diff
changeset
|
120 |
char filename[MAX_PATH]; |
bfa47ec110b0
(svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents:
782
diff
changeset
|
121 |
|
4221
bb06fe8dcce2
(svn r5765) - Codechange: Fully unify the OS-specific FiosGet...List functions into fios.c, as well as FiosGetSavegameList and FiosGetScenarioList functions with the help of some callbacks.
Darkvater
parents:
4220
diff
changeset
|
122 |
snprintf(filename, lengthof(filename), "%s" PATHSEP "%s", path, ent->d_name); |
6566
a780a47d6af3
(svn r9043) -Fix [FS#652]: the personal (.openttd) directories were hidden in the load/save directory listings (stepancheg).
rubidium
parents:
5842
diff
changeset
|
123 |
return stat(filename, sb) == 0; |
a780a47d6af3
(svn r9043) -Fix [FS#652]: the personal (.openttd) directories were hidden in the load/save directory listings (stepancheg).
rubidium
parents:
5842
diff
changeset
|
124 |
} |
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
|
125 |
|
6566
a780a47d6af3
(svn r9043) -Fix [FS#652]: the personal (.openttd) directories were hidden in the load/save directory listings (stepancheg).
rubidium
parents:
5842
diff
changeset
|
126 |
bool FiosIsHiddenFile(const struct dirent *ent) |
a780a47d6af3
(svn r9043) -Fix [FS#652]: the personal (.openttd) directories were hidden in the load/save directory listings (stepancheg).
rubidium
parents:
5842
diff
changeset
|
127 |
{ |
a780a47d6af3
(svn r9043) -Fix [FS#652]: the personal (.openttd) directories were hidden in the load/save directory listings (stepancheg).
rubidium
parents:
5842
diff
changeset
|
128 |
return ent->d_name[0] == '.'; |
801
bfa47ec110b0
(svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents:
782
diff
changeset
|
129 |
} |
bfa47ec110b0
(svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents:
782
diff
changeset
|
130 |
|
7541
0b79c8fb5e7f
(svn r10310) -Fix: Trunk can now be built on OS/2 :)
orudge
parents:
6988
diff
changeset
|
131 |
void ShowInfo(const char *str) |
801
bfa47ec110b0
(svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents:
782
diff
changeset
|
132 |
{ |
818
906f21e653b2
(svn r1289) -Fix: Minor fix for OS/2 message boxes (orudge)
truelight
parents:
810
diff
changeset
|
133 |
HAB hab; |
906f21e653b2
(svn r1289) -Fix: Minor fix for OS/2 message boxes (orudge)
truelight
parents:
810
diff
changeset
|
134 |
HMQ hmq; |
906f21e653b2
(svn r1289) -Fix: Minor fix for OS/2 message boxes (orudge)
truelight
parents:
810
diff
changeset
|
135 |
ULONG rc; |
915 | 136 |
|
818
906f21e653b2
(svn r1289) -Fix: Minor fix for OS/2 message boxes (orudge)
truelight
parents:
810
diff
changeset
|
137 |
// init PM env. |
906f21e653b2
(svn r1289) -Fix: Minor fix for OS/2 message boxes (orudge)
truelight
parents:
810
diff
changeset
|
138 |
hmq = WinCreateMsgQueue((hab = WinInitialize(0)), 0); |
906f21e653b2
(svn r1289) -Fix: Minor fix for OS/2 message boxes (orudge)
truelight
parents:
810
diff
changeset
|
139 |
|
906f21e653b2
(svn r1289) -Fix: Minor fix for OS/2 message boxes (orudge)
truelight
parents:
810
diff
changeset
|
140 |
// display the box |
7541
0b79c8fb5e7f
(svn r10310) -Fix: Trunk can now be built on OS/2 :)
orudge
parents:
6988
diff
changeset
|
141 |
rc = WinMessageBox(HWND_DESKTOP, HWND_DESKTOP, (const unsigned char *)str, (const unsigned char *)"OpenTTD", 0, MB_OK | MB_MOVEABLE | MB_INFORMATION); |
818
906f21e653b2
(svn r1289) -Fix: Minor fix for OS/2 message boxes (orudge)
truelight
parents:
810
diff
changeset
|
142 |
|
906f21e653b2
(svn r1289) -Fix: Minor fix for OS/2 message boxes (orudge)
truelight
parents:
810
diff
changeset
|
143 |
// terminate PM env. |
906f21e653b2
(svn r1289) -Fix: Minor fix for OS/2 message boxes (orudge)
truelight
parents:
810
diff
changeset
|
144 |
WinDestroyMsgQueue(hmq); |
906f21e653b2
(svn r1289) -Fix: Minor fix for OS/2 message boxes (orudge)
truelight
parents:
810
diff
changeset
|
145 |
WinTerminate(hab); |
801
bfa47ec110b0
(svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents:
782
diff
changeset
|
146 |
} |
bfa47ec110b0
(svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents:
782
diff
changeset
|
147 |
|
10839
a62547c31fdb
(svn r13390) -Codechange: introduce usererror() for fatal but not openttd related errors. Now all error() will 'crash' openttd after showing the message in win32 releases (MSVC), creating a crash.log and crash.dmp (like the '!' hack used before). On the other hand, usererror() will just close the game. So use error() only when it can be helpful to debugging, else use usererror().
glx
parents:
10810
diff
changeset
|
148 |
void ShowOSErrorBox(const char *buf, bool system) |
801
bfa47ec110b0
(svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents:
782
diff
changeset
|
149 |
{ |
818
906f21e653b2
(svn r1289) -Fix: Minor fix for OS/2 message boxes (orudge)
truelight
parents:
810
diff
changeset
|
150 |
HAB hab; |
906f21e653b2
(svn r1289) -Fix: Minor fix for OS/2 message boxes (orudge)
truelight
parents:
810
diff
changeset
|
151 |
HMQ hmq; |
906f21e653b2
(svn r1289) -Fix: Minor fix for OS/2 message boxes (orudge)
truelight
parents:
810
diff
changeset
|
152 |
ULONG rc; |
915 | 153 |
|
818
906f21e653b2
(svn r1289) -Fix: Minor fix for OS/2 message boxes (orudge)
truelight
parents:
810
diff
changeset
|
154 |
// init PM env. |
906f21e653b2
(svn r1289) -Fix: Minor fix for OS/2 message boxes (orudge)
truelight
parents:
810
diff
changeset
|
155 |
hmq = WinCreateMsgQueue((hab = WinInitialize(0)), 0); |
906f21e653b2
(svn r1289) -Fix: Minor fix for OS/2 message boxes (orudge)
truelight
parents:
810
diff
changeset
|
156 |
|
906f21e653b2
(svn r1289) -Fix: Minor fix for OS/2 message boxes (orudge)
truelight
parents:
810
diff
changeset
|
157 |
// display the box |
7541
0b79c8fb5e7f
(svn r10310) -Fix: Trunk can now be built on OS/2 :)
orudge
parents:
6988
diff
changeset
|
158 |
rc = WinMessageBox(HWND_DESKTOP, HWND_DESKTOP, (const unsigned char *)buf, (const unsigned char *)"OpenTTD", 0, MB_OK | MB_MOVEABLE | MB_ERROR); |
818
906f21e653b2
(svn r1289) -Fix: Minor fix for OS/2 message boxes (orudge)
truelight
parents:
810
diff
changeset
|
159 |
|
906f21e653b2
(svn r1289) -Fix: Minor fix for OS/2 message boxes (orudge)
truelight
parents:
810
diff
changeset
|
160 |
// terminate PM env. |
906f21e653b2
(svn r1289) -Fix: Minor fix for OS/2 message boxes (orudge)
truelight
parents:
810
diff
changeset
|
161 |
WinDestroyMsgQueue(hmq); |
906f21e653b2
(svn r1289) -Fix: Minor fix for OS/2 message boxes (orudge)
truelight
parents:
810
diff
changeset
|
162 |
WinTerminate(hab); |
801
bfa47ec110b0
(svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents:
782
diff
changeset
|
163 |
} |
bfa47ec110b0
(svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents:
782
diff
changeset
|
164 |
|
bfa47ec110b0
(svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents:
782
diff
changeset
|
165 |
int CDECL main(int argc, char* argv[]) |
bfa47ec110b0
(svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents:
782
diff
changeset
|
166 |
{ |
8431
68fb2ccbce06
(svn r11488) -Codechange: Spilt the random functions out to seperate file
skidd13
parents:
7868
diff
changeset
|
167 |
SetRandomSeed(time(NULL)); |
801
bfa47ec110b0
(svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents:
782
diff
changeset
|
168 |
|
bfa47ec110b0
(svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents:
782
diff
changeset
|
169 |
return ttd_main(argc, argv); |
bfa47ec110b0
(svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents:
782
diff
changeset
|
170 |
} |
bfa47ec110b0
(svn r1271) -Fix: set eol-style to native on missing files
darkvater
parents:
782
diff
changeset
|
171 |
|
1888
5f0398340e05
(svn r2394) - Completed clipboard functions for OS/2 port
orudge
parents:
1887
diff
changeset
|
172 |
/** |
5f0398340e05
(svn r2394) - Completed clipboard functions for OS/2 port
orudge
parents:
1887
diff
changeset
|
173 |
* 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
|
174 |
* 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
|
175 |
* is zero, we don't care about the screenlength but only about the physical length of the string |
6979
d194d25020e7
(svn r9664) -Documentation: Doxygen corrections,errors and omissions
belugas
parents:
6677
diff
changeset
|
176 |
* @param tb Textbuf type to be changed |
7868
25b9aad39e4a
(svn r10736) -Fix: Correct all mispellings of 'successful'.
peter1138
parents:
7798
diff
changeset
|
177 |
* @return Return true on successful change of Textbuf, or false otherwise |
1888
5f0398340e05
(svn r2394) - Completed clipboard functions for OS/2 port
orudge
parents:
1887
diff
changeset
|
178 |
*/ |
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
|
179 |
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
|
180 |
{ |
5842
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
181 |
/* XXX -- Currently no clipboard support implemented with GCC */ |
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
182 |
#ifndef __INNOTEK_LIBC__ |
1893
278bddd649be
(svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents:
1892
diff
changeset
|
183 |
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
|
184 |
|
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
|
185 |
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
|
186 |
{ |
1893
278bddd649be
(svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents:
1892
diff
changeset
|
187 |
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
|
188 |
|
278bddd649be
(svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents:
1892
diff
changeset
|
189 |
if (text != NULL) |
278bddd649be
(svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents:
1892
diff
changeset
|
190 |
{ |
278bddd649be
(svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents:
1892
diff
changeset
|
191 |
uint length = 0; |
278bddd649be
(svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents:
1892
diff
changeset
|
192 |
uint width = 0; |
278bddd649be
(svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents:
1892
diff
changeset
|
193 |
const char* i; |
278bddd649be
(svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents:
1892
diff
changeset
|
194 |
|
278bddd649be
(svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents:
1892
diff
changeset
|
195 |
for (i = text; IsValidAsciiChar(*i); i++) |
278bddd649be
(svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents:
1892
diff
changeset
|
196 |
{ |
278bddd649be
(svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents:
1892
diff
changeset
|
197 |
uint w; |
278bddd649be
(svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents:
1892
diff
changeset
|
198 |
|
278bddd649be
(svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents:
1892
diff
changeset
|
199 |
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
|
200 |
|
3800
6ea101b2464b
(svn r4808) - Fix GetCharacterWidth() change in os2.c missed in r4802.
peter1138
parents:
3329
diff
changeset
|
201 |
w = GetCharacterWidth(FS_NORMAL, (byte)*i); |
1893
278bddd649be
(svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents:
1892
diff
changeset
|
202 |
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
|
203 |
|
278bddd649be
(svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents:
1892
diff
changeset
|
204 |
width += w; |
278bddd649be
(svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents:
1892
diff
changeset
|
205 |
length++; |
278bddd649be
(svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents:
1892
diff
changeset
|
206 |
} |
278bddd649be
(svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents:
1892
diff
changeset
|
207 |
|
278bddd649be
(svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents:
1892
diff
changeset
|
208 |
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
|
209 |
memcpy(tb->buf + tb->caretpos, text, length); |
278bddd649be
(svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents:
1892
diff
changeset
|
210 |
tb->width += width; |
278bddd649be
(svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents:
1892
diff
changeset
|
211 |
tb->caretxoffs += width; |
278bddd649be
(svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents:
1892
diff
changeset
|
212 |
tb->length += length; |
278bddd649be
(svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents:
1892
diff
changeset
|
213 |
tb->caretpos += length; |
278bddd649be
(svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents:
1892
diff
changeset
|
214 |
|
278bddd649be
(svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents:
1892
diff
changeset
|
215 |
WinCloseClipbrd(hab); |
278bddd649be
(svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents:
1892
diff
changeset
|
216 |
return true; |
278bddd649be
(svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents:
1892
diff
changeset
|
217 |
} |
1888
5f0398340e05
(svn r2394) - Completed clipboard functions for OS/2 port
orudge
parents:
1887
diff
changeset
|
218 |
|
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
|
219 |
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
|
220 |
} |
5842
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
221 |
#endif |
1893
278bddd649be
(svn r2399) - Fix: Update OS/2 project file with filename changes
orudge
parents:
1892
diff
changeset
|
222 |
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
|
223 |
} |
1887 | 224 |
|
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
|
225 |
|
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
|
226 |
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
|
227 |
{ |
5842
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
228 |
#ifndef __INNOTEK_LIBC__ |
6988
76eba6a9cc6f
(svn r9673) -Cleanup: remove spaces before tabs and replace non-indenting tabs with spaces.
rubidium
parents:
6979
diff
changeset
|
229 |
delay(milliseconds); |
5842
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
230 |
#else |
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
231 |
usleep(milliseconds * 1000); |
180c71b8fc14
(svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents:
5835
diff
changeset
|
232 |
#endif |
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
|
233 |
} |
5167
2b9d61386688
(svn r7274) -Codechange [utf8]: Add input/output unicode support. This actually only changes win32
Darkvater
parents:
4369
diff
changeset
|
234 |
|
2b9d61386688
(svn r7274) -Codechange [utf8]: Add input/output unicode support. This actually only changes win32
Darkvater
parents:
4369
diff
changeset
|
235 |
const char *FS2OTTD(const char *name) {return name;} |
2b9d61386688
(svn r7274) -Codechange [utf8]: Add input/output unicode support. This actually only changes win32
Darkvater
parents:
4369
diff
changeset
|
236 |
const char *OTTD2FS(const char *name) {return name;} |