author | Tero Marttila <terom@fixme.fi> |
Tue, 22 Jul 2008 21:51:14 +0300 | |
changeset 11180 | 982e9f814f97 |
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:
10295
diff
changeset
|
3 |
/** @file unix.cpp Implementation of Unix specific file handling. */ |
6919
339210ecccd3
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6644
diff
changeset
|
4 |
|
0 | 5 |
#include "stdafx.h" |
1892
45894b95a925
(svn r2398) - CodeChange: forgot to update unix and os2 specific files as well.
Darkvater
parents:
1885
diff
changeset
|
6 |
#include "openttd.h" |
2159
3b634157c3b2
(svn r2669) Shuffle some more stuff around to reduce dependencies
tron
parents:
2099
diff
changeset
|
7 |
#include "variables.h" |
8603
88c5ce6a5215
(svn r11668) -Codechange: more refactoring aimed at reducing compile time and making it more logic where function definitions can be found.
rubidium
parents:
8602
diff
changeset
|
8 |
#include "textbuf_gui.h" |
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:
8603
diff
changeset
|
9 |
#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:
8603
diff
changeset
|
10 |
#include "core/random_func.hpp" |
0 | 11 |
|
8760
ce0891c412ce
(svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium
parents:
8711
diff
changeset
|
12 |
#include "table/strings.h" |
ce0891c412ce
(svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium
parents:
8711
diff
changeset
|
13 |
|
0 | 14 |
#include <dirent.h> |
15 |
#include <unistd.h> |
|
16 |
#include <sys/stat.h> |
|
17 |
#include <time.h> |
|
1509
2c232b7d2114
(svn r2013) Always ignore SIGPIPE, not only when SDL is used (ShadowJK)
tron
parents:
1508
diff
changeset
|
18 |
#include <signal.h> |
0 | 19 |
|
1850
7fa9e3ecb486
(svn r2356) Make check if statvfs() is availible a bit more sensible
tron
parents:
1687
diff
changeset
|
20 |
#if (defined(_POSIX_VERSION) && _POSIX_VERSION >= 200112L) || defined(__GLIBC__) |
1597
cc09dbccddac
(svn r2101) statvfs() is availible on POSIX.1 conformant systems.
tron
parents:
1596
diff
changeset
|
21 |
#define HAS_STATVFS |
cc09dbccddac
(svn r2101) statvfs() is availible on POSIX.1 conformant systems.
tron
parents:
1596
diff
changeset
|
22 |
#endif |
cc09dbccddac
(svn r2101) statvfs() is availible on POSIX.1 conformant systems.
tron
parents:
1596
diff
changeset
|
23 |
|
cc09dbccddac
(svn r2101) statvfs() is availible on POSIX.1 conformant systems.
tron
parents:
1596
diff
changeset
|
24 |
#ifdef HAS_STATVFS |
0 | 25 |
#include <sys/statvfs.h> |
26 |
#endif |
|
27 |
||
28 |
||
29 |
#ifdef __MORPHOS__ |
|
30 |
#include <exec/types.h> |
|
31 |
ULONG __stack = (1024*1024)*2; // maybe not that much is needed actually ;) |
|
2356 | 32 |
|
6919
339210ecccd3
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6644
diff
changeset
|
33 |
/* The system supplied definition of SIG_IGN does not match */ |
2356 | 34 |
#undef SIG_IGN |
35 |
#define SIG_IGN (void (*)(int))1 |
|
0 | 36 |
#endif /* __MORPHOS__ */ |
37 |
||
770
89dab23f04ca
(svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents:
704
diff
changeset
|
38 |
#ifdef __AMIGA__ |
89dab23f04ca
(svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents:
704
diff
changeset
|
39 |
#warning add stack symbol to avoid that user needs to set stack manually (tokai) |
915 | 40 |
// ULONG __stack = |
770
89dab23f04ca
(svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents:
704
diff
changeset
|
41 |
#endif |
89dab23f04ca
(svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents:
704
diff
changeset
|
42 |
|
2188
9acde6fcc645
(svn r2703) - Feature: [OSX] Added a native alert window to show whatever error() needs to print (Tobin made this, while I fixed some issued in it)
bjarni
parents:
2186
diff
changeset
|
43 |
#if defined(__APPLE__) |
2217
c3a8a3bbc81f
(svn r2735) -Fix: [OSX] fixed issue introduced in 2733 where dedicated servers on OSX included sdl.h even when WITH_SDL was not defined (oops)
bjarni
parents:
2215
diff
changeset
|
44 |
#if defined(WITH_SDL) |
6919
339210ecccd3
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6644
diff
changeset
|
45 |
/*the mac implementation needs this file included in the same file as main() */ |
2217
c3a8a3bbc81f
(svn r2735) -Fix: [OSX] fixed issue introduced in 2733 where dedicated servers on OSX included sdl.h even when WITH_SDL was not defined (oops)
bjarni
parents:
2215
diff
changeset
|
46 |
#include <SDL.h> |
c3a8a3bbc81f
(svn r2735) -Fix: [OSX] fixed issue introduced in 2733 where dedicated servers on OSX included sdl.h even when WITH_SDL was not defined (oops)
bjarni
parents:
2215
diff
changeset
|
47 |
#endif |
2188
9acde6fcc645
(svn r2703) - Feature: [OSX] Added a native alert window to show whatever error() needs to print (Tobin made this, while I fixed some issued in it)
bjarni
parents:
2186
diff
changeset
|
48 |
#endif |
0 | 49 |
|
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
|
50 |
bool FiosIsRoot(const char *path) |
0 | 51 |
{ |
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
|
52 |
#if !defined(__MORPHOS__) && !defined(__AMIGAOS__) |
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 |
return path[1] == '\0'; |
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
|
54 |
#else |
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 |
/* On MorphOS or AmigaOS paths look like: "Volume:directory/subdirectory" */ |
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 |
const char *s = strchr(path, ':'); |
7128
1f92a89c933e
(svn r9861) -Fix: null pointer derefence under MorphOS and AmigaOS.
rubidium
parents:
6919
diff
changeset
|
57 |
return s != NULL && s[1] == '\0'; |
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
|
58 |
#endif |
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
|
59 |
} |
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
|
60 |
|
6573 | 61 |
void FiosGetDrives() |
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
|
62 |
{ |
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
|
63 |
return; |
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 |
} |
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
|
65 |
|
4222
951fbf19b1ad
(svn r5766) - Cleanup: Unify FiosBrowseTo and FiosGetDescText
Darkvater
parents:
4221
diff
changeset
|
66 |
bool FiosGetDiskFreeSpace(const char *path, uint32 *tot) |
951fbf19b1ad
(svn r5766) - Cleanup: Unify FiosBrowseTo and FiosGetDescText
Darkvater
parents:
4221
diff
changeset
|
67 |
{ |
951fbf19b1ad
(svn r5766) - Cleanup: Unify FiosBrowseTo and FiosGetDescText
Darkvater
parents:
4221
diff
changeset
|
68 |
uint32 free = 0; |
951fbf19b1ad
(svn r5766) - Cleanup: Unify FiosBrowseTo and FiosGetDescText
Darkvater
parents:
4221
diff
changeset
|
69 |
|
951fbf19b1ad
(svn r5766) - Cleanup: Unify FiosBrowseTo and FiosGetDescText
Darkvater
parents:
4221
diff
changeset
|
70 |
#ifdef HAS_STATVFS |
8481
cf854106761d
(svn r11541) -Fix: [OSX] detect statvfs at runtime (based on OSX version) instead of compile time
bjarni
parents:
8431
diff
changeset
|
71 |
# ifdef __APPLE__ |
cf854106761d
(svn r11541) -Fix: [OSX] detect statvfs at runtime (based on OSX version) instead of compile time
bjarni
parents:
8431
diff
changeset
|
72 |
/* OSX 10.3 lacks statvfs so don't try to use it even though later versions of OSX has it. */ |
cf854106761d
(svn r11541) -Fix: [OSX] detect statvfs at runtime (based on OSX version) instead of compile time
bjarni
parents:
8431
diff
changeset
|
73 |
if (MacOSVersionIsAtLeast(10, 4, 0)) |
cf854106761d
(svn r11541) -Fix: [OSX] detect statvfs at runtime (based on OSX version) instead of compile time
bjarni
parents:
8431
diff
changeset
|
74 |
# endif |
4222
951fbf19b1ad
(svn r5766) - Cleanup: Unify FiosBrowseTo and FiosGetDescText
Darkvater
parents:
4221
diff
changeset
|
75 |
{ |
951fbf19b1ad
(svn r5766) - Cleanup: Unify FiosBrowseTo and FiosGetDescText
Darkvater
parents:
4221
diff
changeset
|
76 |
struct statvfs s; |
951fbf19b1ad
(svn r5766) - Cleanup: Unify FiosBrowseTo and FiosGetDescText
Darkvater
parents:
4221
diff
changeset
|
77 |
|
951fbf19b1ad
(svn r5766) - Cleanup: Unify FiosBrowseTo and FiosGetDescText
Darkvater
parents:
4221
diff
changeset
|
78 |
if (statvfs(path, &s) != 0) return false; |
951fbf19b1ad
(svn r5766) - Cleanup: Unify FiosBrowseTo and FiosGetDescText
Darkvater
parents:
4221
diff
changeset
|
79 |
free = (uint64)s.f_frsize * s.f_bavail >> 20; |
951fbf19b1ad
(svn r5766) - Cleanup: Unify FiosBrowseTo and FiosGetDescText
Darkvater
parents:
4221
diff
changeset
|
80 |
} |
951fbf19b1ad
(svn r5766) - Cleanup: Unify FiosBrowseTo and FiosGetDescText
Darkvater
parents:
4221
diff
changeset
|
81 |
#endif |
951fbf19b1ad
(svn r5766) - Cleanup: Unify FiosBrowseTo and FiosGetDescText
Darkvater
parents:
4221
diff
changeset
|
82 |
if (tot != NULL) *tot = free; |
951fbf19b1ad
(svn r5766) - Cleanup: Unify FiosBrowseTo and FiosGetDescText
Darkvater
parents:
4221
diff
changeset
|
83 |
return true; |
951fbf19b1ad
(svn r5766) - Cleanup: Unify FiosBrowseTo and FiosGetDescText
Darkvater
parents:
4221
diff
changeset
|
84 |
} |
951fbf19b1ad
(svn r5766) - Cleanup: Unify FiosBrowseTo and FiosGetDescText
Darkvater
parents:
4221
diff
changeset
|
85 |
|
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
|
86 |
bool FiosIsValidFile(const char *path, const struct dirent *ent, struct stat *sb) |
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
|
87 |
{ |
0 | 88 |
char filename[MAX_PATH]; |
89 |
||
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
|
90 |
#if defined(__MORPHOS__) || defined(__AMIGAOS__) |
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
|
91 |
/* On MorphOS or AmigaOS paths look like: "Volume:directory/subdirectory" */ |
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
|
92 |
if (FiosIsRoot(path)) { |
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
|
93 |
snprintf(filename, lengthof(filename), "%s:%s", path, ent->d_name); |
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
|
94 |
} else // XXX - only next line! |
7251
19f5ab36616e
(svn r9990) -Fix: MorphOS and AmigaOS do not like "//" in filenames as that means the same as "/../" in means in Unix.
rubidium
parents:
7128
diff
changeset
|
95 |
#else |
19f5ab36616e
(svn r9990) -Fix: MorphOS and AmigaOS do not like "//" in filenames as that means the same as "/../" in means in Unix.
rubidium
parents:
7128
diff
changeset
|
96 |
assert(path[strlen(path) - 1] == PATHSEPCHAR); |
19f5ab36616e
(svn r9990) -Fix: MorphOS and AmigaOS do not like "//" in filenames as that means the same as "/../" in means in Unix.
rubidium
parents:
7128
diff
changeset
|
97 |
if (strlen(path) > 2) assert(path[strlen(path) - 2] != PATHSEPCHAR); |
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
|
98 |
#endif |
7251
19f5ab36616e
(svn r9990) -Fix: MorphOS and AmigaOS do not like "//" in filenames as that means the same as "/../" in means in Unix.
rubidium
parents:
7128
diff
changeset
|
99 |
snprintf(filename, lengthof(filename), "%s%s", path, ent->d_name); |
0 | 100 |
|
6566
a780a47d6af3
(svn r9043) -Fix [FS#652]: the personal (.openttd) directories were hidden in the load/save directory listings (stepancheg).
rubidium
parents:
6348
diff
changeset
|
101 |
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:
6348
diff
changeset
|
102 |
} |
0 | 103 |
|
6566
a780a47d6af3
(svn r9043) -Fix [FS#652]: the personal (.openttd) directories were hidden in the load/save directory listings (stepancheg).
rubidium
parents:
6348
diff
changeset
|
104 |
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:
6348
diff
changeset
|
105 |
{ |
a780a47d6af3
(svn r9043) -Fix [FS#652]: the personal (.openttd) directories were hidden in the load/save directory listings (stepancheg).
rubidium
parents:
6348
diff
changeset
|
106 |
return ent->d_name[0] == '.'; |
0 | 107 |
} |
108 |
||
3329
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
109 |
#ifdef WITH_ICONV |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
110 |
|
3332
fd5624e59753
(svn r4109) - Fix (r4105) [iconv]: Only include the needed headers when ICONV is actually used. Thanks for noticing Bjarni
Darkvater
parents:
3330
diff
changeset
|
111 |
#include <iconv.h> |
fd5624e59753
(svn r4109) - Fix (r4105) [iconv]: Only include the needed headers when ICONV is actually used. Thanks for noticing Bjarni
Darkvater
parents:
3330
diff
changeset
|
112 |
#include <errno.h> |
fd5624e59753
(svn r4109) - Fix (r4105) [iconv]: Only include the needed headers when ICONV is actually used. Thanks for noticing Bjarni
Darkvater
parents:
3330
diff
changeset
|
113 |
#include "debug.h" |
8711 | 114 |
#include "string_func.h" |
3332
fd5624e59753
(svn r4109) - Fix (r4105) [iconv]: Only include the needed headers when ICONV is actually used. Thanks for noticing Bjarni
Darkvater
parents:
3330
diff
changeset
|
115 |
|
10295
78026adac8e1
(svn r12836) -Fix: SunOS non-dedicated server compilation.
rubidium
parents:
8760
diff
changeset
|
116 |
const char *GetCurrentLocale(const char *param); |
78026adac8e1
(svn r12836) -Fix: SunOS non-dedicated server compilation.
rubidium
parents:
8760
diff
changeset
|
117 |
|
5108
dc67d70b5a45
(svn r7182) -Feature: Merge utf8 branch. This brings us support for Unicode/UTF-8 and the option for fonts rendered by FreeType. Language changes to come.
peter1138
parents:
4369
diff
changeset
|
118 |
#define INTERNALCODE "UTF-8" |
3329
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
119 |
|
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
120 |
/** Try and try to decipher the current locale from environmental |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
121 |
* variables. MacOSX is hardcoded, other OS's are dynamic. If no suitable |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
122 |
* locale can be found, don't do any conversion "" */ |
6573 | 123 |
static const char *GetLocalCode() |
3260
7d22aa47de3b
(svn r3966) -Fix: [OSX and some linux] [ 1157244 ] Can't save game if name contains german umlauts
bjarni
parents:
2952
diff
changeset
|
124 |
{ |
3408
313f35564673
(svn r4219) - Add support for WITH_ICONV. It is enabled by default for OSX > 10.3 for all others set it with WITH_ICONV in Makefile.config or with --with-iconv with configure. --with-config=/somedir will search for iconv include files somewhere (or in Makefile.config with WITH_ICONV_PATH). Custom library loading is not (yet) supported
Darkvater
parents:
3332
diff
changeset
|
125 |
#if defined(__APPLE__) |
3329
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
126 |
return "UTF-8-MAC"; |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
127 |
#else |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
128 |
/* Strip locale (eg en_US.UTF-8) to only have UTF-8 */ |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
129 |
const char *locale = GetCurrentLocale("LC_CTYPE"); |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
130 |
if (locale != NULL) locale = strchr(locale, '.'); |
3260
7d22aa47de3b
(svn r3966) -Fix: [OSX and some linux] [ 1157244 ] Can't save game if name contains german umlauts
bjarni
parents:
2952
diff
changeset
|
131 |
|
3329
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
132 |
return (locale == NULL) ? "" : locale + 1; |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
133 |
#endif |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
134 |
} |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
135 |
|
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
136 |
/** FYI: This is not thread-safe. |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
137 |
* convert between locales, which from and which to is set in the calling |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
138 |
* functions OTTD2FS() and FS2OTTD(). You should NOT use this function directly |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
139 |
* NOTE: iconv was added in OSX 10.3. 10.2.x will still have the invalid char |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
140 |
* issues. There aren't any easy fix for this */ |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
141 |
static const char *convert_tofrom_fs(iconv_t convd, const char *name) |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
142 |
{ |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
143 |
static char buf[1024]; |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
144 |
/* Work around buggy iconv implementation where inbuf is wrongly typed as |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
145 |
* non-const. Correct implementation is at |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
146 |
* http://www.opengroup.org/onlinepubs/007908799/xsh/iconv.html */ |
8335
9ebc441dddde
(svn r11389) -Fix [FS#1386]: Replace calls to deprecated API with newer ones and handle broken iconv declaration in OSX 10.5.
egladil
parents:
7251
diff
changeset
|
147 |
#ifdef HAVE_BROKEN_ICONV |
3329
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
148 |
char *inbuf = (char*)name; |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
149 |
#else |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
150 |
const char *inbuf = name; |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
151 |
#endif |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
152 |
|
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
153 |
char *outbuf = buf; |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
154 |
size_t outlen = sizeof(buf) - 1; |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
155 |
size_t inlen = strlen(name); |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
156 |
|
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
157 |
ttd_strlcpy(outbuf, name, sizeof(buf)); |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
158 |
|
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
159 |
iconv(convd, NULL, NULL, NULL, NULL); |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
160 |
if (iconv(convd, &inbuf, &inlen, &outbuf, &outlen) == (size_t)(-1)) { |
5568
75f13d7bfaed
(svn r7565) -Codechange: Rework DEBUG functionality. Look for appropiate debugging levels to
Darkvater
parents:
5296
diff
changeset
|
161 |
DEBUG(misc, 0, "[iconv] error converting '%s'. Errno %d", name, errno); |
3260
7d22aa47de3b
(svn r3966) -Fix: [OSX and some linux] [ 1157244 ] Can't save game if name contains german umlauts
bjarni
parents:
2952
diff
changeset
|
162 |
} |
3329
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
163 |
|
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
164 |
*outbuf = '\0'; |
6919
339210ecccd3
(svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents:
6644
diff
changeset
|
165 |
/* FIX: invalid characters will abort conversion, but they shouldn't occur? */ |
3329
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
166 |
return buf; |
3260
7d22aa47de3b
(svn r3966) -Fix: [OSX and some linux] [ 1157244 ] Can't save game if name contains german umlauts
bjarni
parents:
2952
diff
changeset
|
167 |
} |
3329
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
168 |
|
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
169 |
/** Convert from OpenTTD's encoding to that of the local environment |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
170 |
* @param name pointer to a valid string that will be converted |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
171 |
* @return pointer to a new stringbuffer that contains the converted string */ |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
172 |
const char *OTTD2FS(const char *name) |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
173 |
{ |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
174 |
static iconv_t convd = (iconv_t)(-1); |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
175 |
|
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
176 |
if (convd == (iconv_t)(-1)) { |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
177 |
const char *env = GetLocalCode(); |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
178 |
convd = iconv_open(env, INTERNALCODE); |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
179 |
if (convd == (iconv_t)(-1)) { |
5568
75f13d7bfaed
(svn r7565) -Codechange: Rework DEBUG functionality. Look for appropiate debugging levels to
Darkvater
parents:
5296
diff
changeset
|
180 |
DEBUG(misc, 0, "[iconv] conversion from codeset '%s' to '%s' unsupported", INTERNALCODE, env); |
3329
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
181 |
return name; |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
182 |
} |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
183 |
} |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
184 |
|
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
185 |
return convert_tofrom_fs(convd, name); |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
186 |
} |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
187 |
|
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
188 |
/** Convert to OpenTTD's encoding from that of the local environment |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
189 |
* @param name pointer to a valid string that will be converted |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
190 |
* @return pointer to a new stringbuffer that contains the converted string */ |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
191 |
const char *FS2OTTD(const char *name) |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
192 |
{ |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
193 |
static iconv_t convd = (iconv_t)(-1); |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
194 |
|
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
195 |
if (convd == (iconv_t)(-1)) { |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
196 |
const char *env = GetLocalCode(); |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
197 |
convd = iconv_open(INTERNALCODE, env); |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
198 |
if (convd == (iconv_t)(-1)) { |
5568
75f13d7bfaed
(svn r7565) -Codechange: Rework DEBUG functionality. Look for appropiate debugging levels to
Darkvater
parents:
5296
diff
changeset
|
199 |
DEBUG(misc, 0, "[iconv] conversion from codeset '%s' to '%s' unsupported", env, INTERNALCODE); |
3329
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
200 |
return name; |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
201 |
} |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
202 |
} |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
203 |
|
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
204 |
return convert_tofrom_fs(convd, name); |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
205 |
} |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
206 |
|
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
207 |
#else |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
208 |
const char *FS2OTTD(const char *name) {return name;} |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
209 |
const char *OTTD2FS(const char *name) {return name;} |
992d1f7cb747
(svn r4105) - Feature: Add proper ISO-8859-15 <> LOCALCODE conversion. As the mess that is makefile can't properly support it at the moment, it is only available for MACOSX. Windows doesn't need FS conversion and I have no idea about OS/2 so it's disabled for them.
Darkvater
parents:
3294
diff
changeset
|
210 |
#endif /* WITH_ICONV */ |
10448
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
211 |
|
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
212 |
void ShowInfo(const char *str) |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
213 |
{ |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
214 |
fprintf(stderr, "%s\n", str); |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
215 |
} |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
216 |
|
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:
10448
diff
changeset
|
217 |
void ShowOSErrorBox(const char *buf, bool system) |
10448
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
218 |
{ |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
219 |
#if defined(__APPLE__) |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
220 |
/* this creates an NSAlertPanel with the contents of 'buf' |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
221 |
* this is the native and nicest way to do this on OSX */ |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
222 |
ShowMacDialog( buf, "See readme for more info\nMost likely you are missing files from the original TTD", "Quit" ); |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
223 |
#else |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
224 |
/* all systems, but OSX */ |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
225 |
fprintf(stderr, "\033[1;31mError: %s\033[0;39m\n", buf); |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
226 |
#endif |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
227 |
} |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
228 |
|
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
229 |
#ifdef WITH_COCOA |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
230 |
void cocoaSetupAutoreleasePool(); |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
231 |
void cocoaReleaseAutoreleasePool(); |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
232 |
#endif |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
233 |
|
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
234 |
int CDECL main(int argc, char* argv[]) |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
235 |
{ |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
236 |
int ret; |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
237 |
|
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
238 |
#ifdef WITH_COCOA |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
239 |
cocoaSetupAutoreleasePool(); |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
240 |
/* This is passed if we are launched by double-clicking */ |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
241 |
if (argc >= 2 && strncmp(argv[1], "-psn", 4) == 0) { |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
242 |
argv[1] = NULL; |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
243 |
argc = 1; |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
244 |
} |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
245 |
#endif |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
246 |
|
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
247 |
SetRandomSeed(time(NULL)); |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
248 |
|
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
249 |
signal(SIGPIPE, SIG_IGN); |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
250 |
|
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
251 |
ret = ttd_main(argc, argv); |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
252 |
|
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
253 |
#ifdef WITH_COCOA |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
254 |
cocoaReleaseAutoreleasePool(); |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
255 |
#endif |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
256 |
|
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
257 |
return ret; |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
258 |
} |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
259 |
|
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
260 |
bool InsertTextBufferClipboard(Textbuf *tb) |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
261 |
{ |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
262 |
return false; |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
263 |
} |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
264 |
|
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
265 |
|
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
266 |
/* multi os compatible sleep function */ |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
267 |
|
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
268 |
#ifdef __AMIGA__ |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
269 |
/* usleep() implementation */ |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
270 |
# include <devices/timer.h> |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
271 |
# include <dos/dos.h> |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
272 |
|
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
273 |
extern struct Device *TimerBase = NULL; |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
274 |
extern struct MsgPort *TimerPort = NULL; |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
275 |
extern struct timerequest *TimerRequest = NULL; |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
276 |
#endif // __AMIGA__ |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
277 |
|
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
278 |
void CSleep(int milliseconds) |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
279 |
{ |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
280 |
#if defined(PSP) |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
281 |
sceKernelDelayThread(milliseconds * 1000); |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
282 |
#elif defined(__BEOS__) |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
283 |
snooze(milliseconds * 1000); |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
284 |
#elif defined(__AMIGA__) |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
285 |
{ |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
286 |
ULONG signals; |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
287 |
ULONG TimerSigBit = 1 << TimerPort->mp_SigBit; |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
288 |
|
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
289 |
/* send IORequest */ |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
290 |
TimerRequest->tr_node.io_Command = TR_ADDREQUEST; |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
291 |
TimerRequest->tr_time.tv_secs = (milliseconds * 1000) / 1000000; |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
292 |
TimerRequest->tr_time.tv_micro = (milliseconds * 1000) % 1000000; |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
293 |
SendIO((struct IORequest *)TimerRequest); |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
294 |
|
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
295 |
if (!((signals = Wait(TimerSigBit | SIGBREAKF_CTRL_C)) & TimerSigBit) ) { |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
296 |
AbortIO((struct IORequest *)TimerRequest); |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
297 |
} |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
298 |
WaitIO((struct IORequest *)TimerRequest); |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
299 |
} |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
300 |
#else |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
301 |
usleep(milliseconds * 1000); |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
302 |
#endif |
6c45a7f6810b
(svn r12990) -Fix: silence the redundanct declaration warning when compiling with iconv.
rubidium
parents:
10429
diff
changeset
|
303 |
} |