author | Tero Marttila <terom@fixme.fi> |
Fri, 18 Jul 2008 21:28:42 +0300 | |
changeset 11175 | 020c61e39c94 |
parent 11019 | 9c818b06c54d |
permissions | -rw-r--r-- |
4218
384c7451e3bb
(svn r5762) - Codechange: Implementation of POSIX-style opendir/readdir/closedir functions for windows using FindFirstFile/FindNextFile/FindClose.
Darkvater
parents:
diff
changeset
|
1 |
/* $Id$ */ |
384c7451e3bb
(svn r5762) - Codechange: Implementation of POSIX-style opendir/readdir/closedir functions for windows using FindFirstFile/FindNextFile/FindClose.
Darkvater
parents:
diff
changeset
|
2 |
|
6505
abcb0580d976
(svn r8950) -Cleanup: doxygen changes. Mostly @files missing tags and a few comments style.
belugas
parents:
6414
diff
changeset
|
3 |
/** @file fios.h Declarations for savegames operations */ |
abcb0580d976
(svn r8950) -Cleanup: doxygen changes. Mostly @files missing tags and a few comments style.
belugas
parents:
6414
diff
changeset
|
4 |
|
4218
384c7451e3bb
(svn r5762) - Codechange: Implementation of POSIX-style opendir/readdir/closedir functions for windows using FindFirstFile/FindNextFile/FindClose.
Darkvater
parents:
diff
changeset
|
5 |
#ifndef FIOS_H |
384c7451e3bb
(svn r5762) - Codechange: Implementation of POSIX-style opendir/readdir/closedir functions for windows using FindFirstFile/FindNextFile/FindClose.
Darkvater
parents:
diff
changeset
|
6 |
#define FIOS_H |
384c7451e3bb
(svn r5762) - Codechange: Implementation of POSIX-style opendir/readdir/closedir functions for windows using FindFirstFile/FindNextFile/FindClose.
Darkvater
parents:
diff
changeset
|
7 |
|
8760
ce0891c412ce
(svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium
parents:
8648
diff
changeset
|
8 |
#include "strings_type.h" |
11019
9c818b06c54d
(svn r13575) -Codechange: Move small vector to core since it fits better in there
skidd13
parents:
10809
diff
changeset
|
9 |
#include "core/smallvec_type.hpp" |
8760
ce0891c412ce
(svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium
parents:
8648
diff
changeset
|
10 |
|
8301
47e8f031a6ab
(svn r11355) -Fix [FS#1377]: loading too many GRFs was not handled gracefully causing crashes and such.
rubidium
parents:
6577
diff
changeset
|
11 |
enum { |
47e8f031a6ab
(svn r11355) -Fix [FS#1377]: loading too many GRFs was not handled gracefully causing crashes and such.
rubidium
parents:
6577
diff
changeset
|
12 |
/** |
47e8f031a6ab
(svn r11355) -Fix [FS#1377]: loading too many GRFs was not handled gracefully causing crashes and such.
rubidium
parents:
6577
diff
changeset
|
13 |
* Slot used for the GRF scanning and such. This slot cannot be reused |
47e8f031a6ab
(svn r11355) -Fix [FS#1377]: loading too many GRFs was not handled gracefully causing crashes and such.
rubidium
parents:
6577
diff
changeset
|
14 |
* as it will otherwise cause issues when pressing "rescan directories". |
47e8f031a6ab
(svn r11355) -Fix [FS#1377]: loading too many GRFs was not handled gracefully causing crashes and such.
rubidium
parents:
6577
diff
changeset
|
15 |
* It can furthermore not be larger than LAST_GRF_SLOT as that complicates |
47e8f031a6ab
(svn r11355) -Fix [FS#1377]: loading too many GRFs was not handled gracefully causing crashes and such.
rubidium
parents:
6577
diff
changeset
|
16 |
* the testing for "too much NewGRFs". |
47e8f031a6ab
(svn r11355) -Fix [FS#1377]: loading too many GRFs was not handled gracefully causing crashes and such.
rubidium
parents:
6577
diff
changeset
|
17 |
*/ |
47e8f031a6ab
(svn r11355) -Fix [FS#1377]: loading too many GRFs was not handled gracefully causing crashes and such.
rubidium
parents:
6577
diff
changeset
|
18 |
CONFIG_SLOT = 0, |
47e8f031a6ab
(svn r11355) -Fix [FS#1377]: loading too many GRFs was not handled gracefully causing crashes and such.
rubidium
parents:
6577
diff
changeset
|
19 |
/** Slot for the sound. */ |
47e8f031a6ab
(svn r11355) -Fix [FS#1377]: loading too many GRFs was not handled gracefully causing crashes and such.
rubidium
parents:
6577
diff
changeset
|
20 |
SOUND_SLOT = 1, |
47e8f031a6ab
(svn r11355) -Fix [FS#1377]: loading too many GRFs was not handled gracefully causing crashes and such.
rubidium
parents:
6577
diff
changeset
|
21 |
/** First slot useable for (New)GRFs used during the game. */ |
47e8f031a6ab
(svn r11355) -Fix [FS#1377]: loading too many GRFs was not handled gracefully causing crashes and such.
rubidium
parents:
6577
diff
changeset
|
22 |
FIRST_GRF_SLOT = 2, |
47e8f031a6ab
(svn r11355) -Fix [FS#1377]: loading too many GRFs was not handled gracefully causing crashes and such.
rubidium
parents:
6577
diff
changeset
|
23 |
/** Last slot useable for (New)GRFs used during the game. */ |
47e8f031a6ab
(svn r11355) -Fix [FS#1377]: loading too many GRFs was not handled gracefully causing crashes and such.
rubidium
parents:
6577
diff
changeset
|
24 |
LAST_GRF_SLOT = 63, |
47e8f031a6ab
(svn r11355) -Fix [FS#1377]: loading too many GRFs was not handled gracefully causing crashes and such.
rubidium
parents:
6577
diff
changeset
|
25 |
/** Maximum number of slots. */ |
47e8f031a6ab
(svn r11355) -Fix [FS#1377]: loading too many GRFs was not handled gracefully causing crashes and such.
rubidium
parents:
6577
diff
changeset
|
26 |
MAX_FILE_SLOTS = 64 |
47e8f031a6ab
(svn r11355) -Fix [FS#1377]: loading too many GRFs was not handled gracefully causing crashes and such.
rubidium
parents:
6577
diff
changeset
|
27 |
}; |
47e8f031a6ab
(svn r11355) -Fix [FS#1377]: loading too many GRFs was not handled gracefully causing crashes and such.
rubidium
parents:
6577
diff
changeset
|
28 |
|
8645
83500ad80b08
(svn r11711) -Codechange: Name the Save Load Dialog Mode enum
belugas
parents:
8301
diff
changeset
|
29 |
enum SaveLoadDialogMode{ |
83500ad80b08
(svn r11711) -Codechange: Name the Save Load Dialog Mode enum
belugas
parents:
8301
diff
changeset
|
30 |
SLD_LOAD_GAME, |
83500ad80b08
(svn r11711) -Codechange: Name the Save Load Dialog Mode enum
belugas
parents:
8301
diff
changeset
|
31 |
SLD_LOAD_SCENARIO, |
83500ad80b08
(svn r11711) -Codechange: Name the Save Load Dialog Mode enum
belugas
parents:
8301
diff
changeset
|
32 |
SLD_SAVE_GAME, |
83500ad80b08
(svn r11711) -Codechange: Name the Save Load Dialog Mode enum
belugas
parents:
8301
diff
changeset
|
33 |
SLD_SAVE_SCENARIO, |
83500ad80b08
(svn r11711) -Codechange: Name the Save Load Dialog Mode enum
belugas
parents:
8301
diff
changeset
|
34 |
SLD_LOAD_HEIGHTMAP, |
83500ad80b08
(svn r11711) -Codechange: Name the Save Load Dialog Mode enum
belugas
parents:
8301
diff
changeset
|
35 |
SLD_NEW_GAME, |
83500ad80b08
(svn r11711) -Codechange: Name the Save Load Dialog Mode enum
belugas
parents:
8301
diff
changeset
|
36 |
}; |
83500ad80b08
(svn r11711) -Codechange: Name the Save Load Dialog Mode enum
belugas
parents:
8301
diff
changeset
|
37 |
|
8648
daa3c9e931ab
(svn r11714) -Fix[FS#1569]: Do not allow player inauguration date on scenarios to be bigger than current year.
belugas
parents:
8647
diff
changeset
|
38 |
/* The different types of files been handled by the system */ |
daa3c9e931ab
(svn r11714) -Fix[FS#1569]: Do not allow player inauguration date on scenarios to be bigger than current year.
belugas
parents:
8647
diff
changeset
|
39 |
enum FileType { |
daa3c9e931ab
(svn r11714) -Fix[FS#1569]: Do not allow player inauguration date on scenarios to be bigger than current year.
belugas
parents:
8647
diff
changeset
|
40 |
FT_NONE, ///< nothing to do |
daa3c9e931ab
(svn r11714) -Fix[FS#1569]: Do not allow player inauguration date on scenarios to be bigger than current year.
belugas
parents:
8647
diff
changeset
|
41 |
FT_SAVEGAME, ///< old or new savegame |
daa3c9e931ab
(svn r11714) -Fix[FS#1569]: Do not allow player inauguration date on scenarios to be bigger than current year.
belugas
parents:
8647
diff
changeset
|
42 |
FT_SCENARIO, ///< old or new scenario |
daa3c9e931ab
(svn r11714) -Fix[FS#1569]: Do not allow player inauguration date on scenarios to be bigger than current year.
belugas
parents:
8647
diff
changeset
|
43 |
FT_HEIGHTMAP, ///< heightmap file |
daa3c9e931ab
(svn r11714) -Fix[FS#1569]: Do not allow player inauguration date on scenarios to be bigger than current year.
belugas
parents:
8647
diff
changeset
|
44 |
}; |
daa3c9e931ab
(svn r11714) -Fix[FS#1569]: Do not allow player inauguration date on scenarios to be bigger than current year.
belugas
parents:
8647
diff
changeset
|
45 |
|
10307
624bb10b4ca8
(svn r12848) -Cleanup/Codechange: Use correct variable types, don't prefix with _ for non-globals, and use implicit enum numbering.
peter1138
parents:
8760
diff
changeset
|
46 |
enum FiosType { |
624bb10b4ca8
(svn r12848) -Cleanup/Codechange: Use correct variable types, don't prefix with _ for non-globals, and use implicit enum numbering.
peter1138
parents:
8760
diff
changeset
|
47 |
FIOS_TYPE_DRIVE, |
624bb10b4ca8
(svn r12848) -Cleanup/Codechange: Use correct variable types, don't prefix with _ for non-globals, and use implicit enum numbering.
peter1138
parents:
8760
diff
changeset
|
48 |
FIOS_TYPE_PARENT, |
624bb10b4ca8
(svn r12848) -Cleanup/Codechange: Use correct variable types, don't prefix with _ for non-globals, and use implicit enum numbering.
peter1138
parents:
8760
diff
changeset
|
49 |
FIOS_TYPE_DIR, |
624bb10b4ca8
(svn r12848) -Cleanup/Codechange: Use correct variable types, don't prefix with _ for non-globals, and use implicit enum numbering.
peter1138
parents:
8760
diff
changeset
|
50 |
FIOS_TYPE_FILE, |
624bb10b4ca8
(svn r12848) -Cleanup/Codechange: Use correct variable types, don't prefix with _ for non-globals, and use implicit enum numbering.
peter1138
parents:
8760
diff
changeset
|
51 |
FIOS_TYPE_OLDFILE, |
624bb10b4ca8
(svn r12848) -Cleanup/Codechange: Use correct variable types, don't prefix with _ for non-globals, and use implicit enum numbering.
peter1138
parents:
8760
diff
changeset
|
52 |
FIOS_TYPE_SCENARIO, |
624bb10b4ca8
(svn r12848) -Cleanup/Codechange: Use correct variable types, don't prefix with _ for non-globals, and use implicit enum numbering.
peter1138
parents:
8760
diff
changeset
|
53 |
FIOS_TYPE_OLD_SCENARIO, |
624bb10b4ca8
(svn r12848) -Cleanup/Codechange: Use correct variable types, don't prefix with _ for non-globals, and use implicit enum numbering.
peter1138
parents:
8760
diff
changeset
|
54 |
FIOS_TYPE_DIRECT, |
624bb10b4ca8
(svn r12848) -Cleanup/Codechange: Use correct variable types, don't prefix with _ for non-globals, and use implicit enum numbering.
peter1138
parents:
8760
diff
changeset
|
55 |
FIOS_TYPE_PNG, |
624bb10b4ca8
(svn r12848) -Cleanup/Codechange: Use correct variable types, don't prefix with _ for non-globals, and use implicit enum numbering.
peter1138
parents:
8760
diff
changeset
|
56 |
FIOS_TYPE_BMP, |
624bb10b4ca8
(svn r12848) -Cleanup/Codechange: Use correct variable types, don't prefix with _ for non-globals, and use implicit enum numbering.
peter1138
parents:
8760
diff
changeset
|
57 |
FIOS_TYPE_INVALID = 255, |
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:
4218
diff
changeset
|
58 |
}; |
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:
4218
diff
changeset
|
59 |
|
8647
0709611186e0
(svn r11713) -Codechange: Move some declarations and definitions in a more logical disposition
belugas
parents:
8645
diff
changeset
|
60 |
/* Deals with finding savegames */ |
0709611186e0
(svn r11713) -Codechange: Move some declarations and definitions in a more logical disposition
belugas
parents:
8645
diff
changeset
|
61 |
struct FiosItem { |
10307
624bb10b4ca8
(svn r12848) -Cleanup/Codechange: Use correct variable types, don't prefix with _ for non-globals, and use implicit enum numbering.
peter1138
parents:
8760
diff
changeset
|
62 |
FiosType type; |
8647
0709611186e0
(svn r11713) -Codechange: Move some declarations and definitions in a more logical disposition
belugas
parents:
8645
diff
changeset
|
63 |
uint64 mtime; |
0709611186e0
(svn r11713) -Codechange: Move some declarations and definitions in a more logical disposition
belugas
parents:
8645
diff
changeset
|
64 |
char title[64]; |
0709611186e0
(svn r11713) -Codechange: Move some declarations and definitions in a more logical disposition
belugas
parents:
8645
diff
changeset
|
65 |
char name[256 - 12 - 64]; |
0709611186e0
(svn r11713) -Codechange: Move some declarations and definitions in a more logical disposition
belugas
parents:
8645
diff
changeset
|
66 |
}; |
0709611186e0
(svn r11713) -Codechange: Move some declarations and definitions in a more logical disposition
belugas
parents:
8645
diff
changeset
|
67 |
|
0709611186e0
(svn r11713) -Codechange: Move some declarations and definitions in a more logical disposition
belugas
parents:
8645
diff
changeset
|
68 |
/* Deals with the type of the savegame, independent of extension */ |
0709611186e0
(svn r11713) -Codechange: Move some declarations and definitions in a more logical disposition
belugas
parents:
8645
diff
changeset
|
69 |
struct SmallFiosItem { |
0709611186e0
(svn r11713) -Codechange: Move some declarations and definitions in a more logical disposition
belugas
parents:
8645
diff
changeset
|
70 |
int mode; ///< savegame/scenario type (old, new) |
8648
daa3c9e931ab
(svn r11714) -Fix[FS#1569]: Do not allow player inauguration date on scenarios to be bigger than current year.
belugas
parents:
8647
diff
changeset
|
71 |
FileType filetype; ///< what type of file are we dealing with |
8647
0709611186e0
(svn r11713) -Codechange: Move some declarations and definitions in a more logical disposition
belugas
parents:
8645
diff
changeset
|
72 |
char name[MAX_PATH]; ///< name |
0709611186e0
(svn r11713) -Codechange: Move some declarations and definitions in a more logical disposition
belugas
parents:
8645
diff
changeset
|
73 |
char title[255]; ///< internal name of the game |
0709611186e0
(svn r11713) -Codechange: Move some declarations and definitions in a more logical disposition
belugas
parents:
8645
diff
changeset
|
74 |
}; |
0709611186e0
(svn r11713) -Codechange: Move some declarations and definitions in a more logical disposition
belugas
parents:
8645
diff
changeset
|
75 |
|
10770
c1e1fb4bd561
(svn r13320) -Codechange: move some enums from openttd.h to more logical locations.
rubidium
parents:
10307
diff
changeset
|
76 |
enum { |
c1e1fb4bd561
(svn r13320) -Codechange: move some enums from openttd.h to more logical locations.
rubidium
parents:
10307
diff
changeset
|
77 |
SORT_ASCENDING = 0, |
c1e1fb4bd561
(svn r13320) -Codechange: move some enums from openttd.h to more logical locations.
rubidium
parents:
10307
diff
changeset
|
78 |
SORT_DESCENDING = 1, |
c1e1fb4bd561
(svn r13320) -Codechange: move some enums from openttd.h to more logical locations.
rubidium
parents:
10307
diff
changeset
|
79 |
SORT_BY_DATE = 0, |
c1e1fb4bd561
(svn r13320) -Codechange: move some enums from openttd.h to more logical locations.
rubidium
parents:
10307
diff
changeset
|
80 |
SORT_BY_NAME = 2 |
c1e1fb4bd561
(svn r13320) -Codechange: move some enums from openttd.h to more logical locations.
rubidium
parents:
10307
diff
changeset
|
81 |
}; |
c1e1fb4bd561
(svn r13320) -Codechange: move some enums from openttd.h to more logical locations.
rubidium
parents:
10307
diff
changeset
|
82 |
|
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:
4218
diff
changeset
|
83 |
/* Variables to display file lists */ |
10808
d42b140d24f2
(svn r13359) -Codechange: convert _fios_items to a SmallVector
skidd13
parents:
10770
diff
changeset
|
84 |
extern SmallVector<FiosItem, 32> _fios_items; ///< defined in fios.cpp |
8647
0709611186e0
(svn r11713) -Codechange: Move some declarations and definitions in a more logical disposition
belugas
parents:
8645
diff
changeset
|
85 |
extern SmallFiosItem _file_to_saveload; |
8645
83500ad80b08
(svn r11711) -Codechange: Name the Save Load Dialog Mode enum
belugas
parents:
8301
diff
changeset
|
86 |
extern SaveLoadDialogMode _saveload_mode; ///< defined in misc_gui.cpp |
10770
c1e1fb4bd561
(svn r13320) -Codechange: move some enums from openttd.h to more logical locations.
rubidium
parents:
10307
diff
changeset
|
87 |
extern byte _savegame_sort_order; |
8645
83500ad80b08
(svn r11711) -Codechange: Name the Save Load Dialog Mode enum
belugas
parents:
8301
diff
changeset
|
88 |
|
83500ad80b08
(svn r11711) -Codechange: Name the Save Load Dialog Mode enum
belugas
parents:
8301
diff
changeset
|
89 |
/* Launch save/load dialog */ |
83500ad80b08
(svn r11711) -Codechange: Name the Save Load Dialog Mode enum
belugas
parents:
8301
diff
changeset
|
90 |
void ShowSaveLoadDialog(SaveLoadDialogMode mode); |
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:
4218
diff
changeset
|
91 |
|
6505
abcb0580d976
(svn r8950) -Cleanup: doxygen changes. Mostly @files missing tags and a few comments style.
belugas
parents:
6414
diff
changeset
|
92 |
/* Get a list of savegames */ |
10808
d42b140d24f2
(svn r13359) -Codechange: convert _fios_items to a SmallVector
skidd13
parents:
10770
diff
changeset
|
93 |
void FiosGetSavegameList(SaveLoadDialogMode mode); |
6505
abcb0580d976
(svn r8950) -Cleanup: doxygen changes. Mostly @files missing tags and a few comments style.
belugas
parents:
6414
diff
changeset
|
94 |
/* Get a list of scenarios */ |
10808
d42b140d24f2
(svn r13359) -Codechange: convert _fios_items to a SmallVector
skidd13
parents:
10770
diff
changeset
|
95 |
void FiosGetScenarioList(SaveLoadDialogMode mode); |
6505
abcb0580d976
(svn r8950) -Cleanup: doxygen changes. Mostly @files missing tags and a few comments style.
belugas
parents:
6414
diff
changeset
|
96 |
/* Get a list of Heightmaps */ |
10808
d42b140d24f2
(svn r13359) -Codechange: convert _fios_items to a SmallVector
skidd13
parents:
10770
diff
changeset
|
97 |
void FiosGetHeightmapList(SaveLoadDialogMode mode); |
6505
abcb0580d976
(svn r8950) -Cleanup: doxygen changes. Mostly @files missing tags and a few comments style.
belugas
parents:
6414
diff
changeset
|
98 |
/* Free the list of savegames */ |
6573 | 99 |
void FiosFreeSavegameList(); |
6505
abcb0580d976
(svn r8950) -Cleanup: doxygen changes. Mostly @files missing tags and a few comments style.
belugas
parents:
6414
diff
changeset
|
100 |
/* Browse to. Returns a filename w/path if we reached a file. */ |
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:
4218
diff
changeset
|
101 |
char *FiosBrowseTo(const FiosItem *item); |
6505
abcb0580d976
(svn r8950) -Cleanup: doxygen changes. Mostly @files missing tags and a few comments style.
belugas
parents:
6414
diff
changeset
|
102 |
/* Return path, free space and stringID */ |
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:
4218
diff
changeset
|
103 |
StringID FiosGetDescText(const char **path, uint32 *total_free); |
6505
abcb0580d976
(svn r8950) -Cleanup: doxygen changes. Mostly @files missing tags and a few comments style.
belugas
parents:
6414
diff
changeset
|
104 |
/* Delete a name */ |
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:
4218
diff
changeset
|
105 |
bool FiosDelete(const char *name); |
6505
abcb0580d976
(svn r8950) -Cleanup: doxygen changes. Mostly @files missing tags and a few comments style.
belugas
parents:
6414
diff
changeset
|
106 |
/* Make a filename from a name */ |
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:
4218
diff
changeset
|
107 |
void FiosMakeSavegameName(char *buf, const char *name, size_t size); |
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:
4218
diff
changeset
|
108 |
|
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:
4218
diff
changeset
|
109 |
int CDECL compare_FiosItems(const void *a, const void *b); |
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:
4218
diff
changeset
|
110 |
|
4218
384c7451e3bb
(svn r5762) - Codechange: Implementation of POSIX-style opendir/readdir/closedir functions for windows using FindFirstFile/FindNextFile/FindClose.
Darkvater
parents:
diff
changeset
|
111 |
/* Implementation of opendir/readdir/closedir for Windows */ |
384c7451e3bb
(svn r5762) - Codechange: Implementation of POSIX-style opendir/readdir/closedir functions for windows using FindFirstFile/FindNextFile/FindClose.
Darkvater
parents:
diff
changeset
|
112 |
#if defined(WIN32) |
384c7451e3bb
(svn r5762) - Codechange: Implementation of POSIX-style opendir/readdir/closedir functions for windows using FindFirstFile/FindNextFile/FindClose.
Darkvater
parents:
diff
changeset
|
113 |
#include <windows.h> |
6574
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6573
diff
changeset
|
114 |
struct DIR; |
4218
384c7451e3bb
(svn r5762) - Codechange: Implementation of POSIX-style opendir/readdir/closedir functions for windows using FindFirstFile/FindNextFile/FindClose.
Darkvater
parents:
diff
changeset
|
115 |
|
6574
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6573
diff
changeset
|
116 |
struct dirent { // XXX - only d_name implemented |
6577
ee768d653dd0
(svn r9055) -Codechange: Change windows unicode handling and allow a pure non-unicode build to function. Win9x binaries will be possible with mingw/nightly system.
Darkvater
parents:
6574
diff
changeset
|
117 |
TCHAR *d_name; // name of found file |
4218
384c7451e3bb
(svn r5762) - Codechange: Implementation of POSIX-style opendir/readdir/closedir functions for windows using FindFirstFile/FindNextFile/FindClose.
Darkvater
parents:
diff
changeset
|
118 |
/* little hack which will point to parent DIR struct which will |
384c7451e3bb
(svn r5762) - Codechange: Implementation of POSIX-style opendir/readdir/closedir functions for windows using FindFirstFile/FindNextFile/FindClose.
Darkvater
parents:
diff
changeset
|
119 |
* save us a call to GetFileAttributes if we want information |
6505
abcb0580d976
(svn r8950) -Cleanup: doxygen changes. Mostly @files missing tags and a few comments style.
belugas
parents:
6414
diff
changeset
|
120 |
* about the file (for example in function fio_bla) */ |
4218
384c7451e3bb
(svn r5762) - Codechange: Implementation of POSIX-style opendir/readdir/closedir functions for windows using FindFirstFile/FindNextFile/FindClose.
Darkvater
parents:
diff
changeset
|
121 |
DIR *dir; |
6574
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6573
diff
changeset
|
122 |
}; |
4218
384c7451e3bb
(svn r5762) - Codechange: Implementation of POSIX-style opendir/readdir/closedir functions for windows using FindFirstFile/FindNextFile/FindClose.
Darkvater
parents:
diff
changeset
|
123 |
|
384c7451e3bb
(svn r5762) - Codechange: Implementation of POSIX-style opendir/readdir/closedir functions for windows using FindFirstFile/FindNextFile/FindClose.
Darkvater
parents:
diff
changeset
|
124 |
struct DIR { |
384c7451e3bb
(svn r5762) - Codechange: Implementation of POSIX-style opendir/readdir/closedir functions for windows using FindFirstFile/FindNextFile/FindClose.
Darkvater
parents:
diff
changeset
|
125 |
HANDLE hFind; |
384c7451e3bb
(svn r5762) - Codechange: Implementation of POSIX-style opendir/readdir/closedir functions for windows using FindFirstFile/FindNextFile/FindClose.
Darkvater
parents:
diff
changeset
|
126 |
/* the dirent returned by readdir. |
384c7451e3bb
(svn r5762) - Codechange: Implementation of POSIX-style opendir/readdir/closedir functions for windows using FindFirstFile/FindNextFile/FindClose.
Darkvater
parents:
diff
changeset
|
127 |
* note: having only one global instance is not possible because |
384c7451e3bb
(svn r5762) - Codechange: Implementation of POSIX-style opendir/readdir/closedir functions for windows using FindFirstFile/FindNextFile/FindClose.
Darkvater
parents:
diff
changeset
|
128 |
* multiple independent opendir/readdir sequences must be supported. */ |
384c7451e3bb
(svn r5762) - Codechange: Implementation of POSIX-style opendir/readdir/closedir functions for windows using FindFirstFile/FindNextFile/FindClose.
Darkvater
parents:
diff
changeset
|
129 |
dirent ent; |
6577
ee768d653dd0
(svn r9055) -Codechange: Change windows unicode handling and allow a pure non-unicode build to function. Win9x binaries will be possible with mingw/nightly system.
Darkvater
parents:
6574
diff
changeset
|
130 |
WIN32_FIND_DATA fd; |
4218
384c7451e3bb
(svn r5762) - Codechange: Implementation of POSIX-style opendir/readdir/closedir functions for windows using FindFirstFile/FindNextFile/FindClose.
Darkvater
parents:
diff
changeset
|
131 |
/* since opendir calls FindFirstFile, we need a means of telling the |
384c7451e3bb
(svn r5762) - Codechange: Implementation of POSIX-style opendir/readdir/closedir functions for windows using FindFirstFile/FindNextFile/FindClose.
Darkvater
parents:
diff
changeset
|
132 |
* first call to readdir that we already have a file. |
384c7451e3bb
(svn r5762) - Codechange: Implementation of POSIX-style opendir/readdir/closedir functions for windows using FindFirstFile/FindNextFile/FindClose.
Darkvater
parents:
diff
changeset
|
133 |
* that's the case iff this is true */ |
384c7451e3bb
(svn r5762) - Codechange: Implementation of POSIX-style opendir/readdir/closedir functions for windows using FindFirstFile/FindNextFile/FindClose.
Darkvater
parents:
diff
changeset
|
134 |
bool at_first_entry; |
384c7451e3bb
(svn r5762) - Codechange: Implementation of POSIX-style opendir/readdir/closedir functions for windows using FindFirstFile/FindNextFile/FindClose.
Darkvater
parents:
diff
changeset
|
135 |
}; |
384c7451e3bb
(svn r5762) - Codechange: Implementation of POSIX-style opendir/readdir/closedir functions for windows using FindFirstFile/FindNextFile/FindClose.
Darkvater
parents:
diff
changeset
|
136 |
|
6577
ee768d653dd0
(svn r9055) -Codechange: Change windows unicode handling and allow a pure non-unicode build to function. Win9x binaries will be possible with mingw/nightly system.
Darkvater
parents:
6574
diff
changeset
|
137 |
DIR *opendir(const TCHAR *path); |
4218
384c7451e3bb
(svn r5762) - Codechange: Implementation of POSIX-style opendir/readdir/closedir functions for windows using FindFirstFile/FindNextFile/FindClose.
Darkvater
parents:
diff
changeset
|
138 |
struct dirent *readdir(DIR *d); |
384c7451e3bb
(svn r5762) - Codechange: Implementation of POSIX-style opendir/readdir/closedir functions for windows using FindFirstFile/FindNextFile/FindClose.
Darkvater
parents:
diff
changeset
|
139 |
int closedir(DIR *d); |
6414
3a4b44cf00b1
(svn r8823) -Fix (r8821): wrapping opendir to ottd-specific function failed on non-windows because this wrapper was only active for win32 (thx Rubidium)
Darkvater
parents:
6412
diff
changeset
|
140 |
#else |
3a4b44cf00b1
(svn r8823) -Fix (r8821): wrapping opendir to ottd-specific function failed on non-windows because this wrapper was only active for win32 (thx Rubidium)
Darkvater
parents:
6412
diff
changeset
|
141 |
/* Use system-supplied opendir/readdir/closedir functions */ |
3a4b44cf00b1
(svn r8823) -Fix (r8821): wrapping opendir to ottd-specific function failed on non-windows because this wrapper was only active for win32 (thx Rubidium)
Darkvater
parents:
6412
diff
changeset
|
142 |
# include <sys/types.h> |
3a4b44cf00b1
(svn r8823) -Fix (r8821): wrapping opendir to ottd-specific function failed on non-windows because this wrapper was only active for win32 (thx Rubidium)
Darkvater
parents:
6412
diff
changeset
|
143 |
# include <dirent.h> |
4218
384c7451e3bb
(svn r5762) - Codechange: Implementation of POSIX-style opendir/readdir/closedir functions for windows using FindFirstFile/FindNextFile/FindClose.
Darkvater
parents:
diff
changeset
|
144 |
#endif /* defined(WIN32) */ |
384c7451e3bb
(svn r5762) - Codechange: Implementation of POSIX-style opendir/readdir/closedir functions for windows using FindFirstFile/FindNextFile/FindClose.
Darkvater
parents:
diff
changeset
|
145 |
|
6412
a77de25206bc
(svn r8821) -Regression: Unable to browse directories on *nix if the filesystem is not in UTF-8 charset and special characters are used. The string passed to opendir() which is UTF-8 was not parsed back to the filesystem format. Use a wrapper called ttd_opendir() instead of redefining opendir itself.
Darkvater
parents:
5726
diff
changeset
|
146 |
/** |
a77de25206bc
(svn r8821) -Regression: Unable to browse directories on *nix if the filesystem is not in UTF-8 charset and special characters are used. The string passed to opendir() which is UTF-8 was not parsed back to the filesystem format. Use a wrapper called ttd_opendir() instead of redefining opendir itself.
Darkvater
parents:
5726
diff
changeset
|
147 |
* A wrapper around opendir() which will convert the string from |
a77de25206bc
(svn r8821) -Regression: Unable to browse directories on *nix if the filesystem is not in UTF-8 charset and special characters are used. The string passed to opendir() which is UTF-8 was not parsed back to the filesystem format. Use a wrapper called ttd_opendir() instead of redefining opendir itself.
Darkvater
parents:
5726
diff
changeset
|
148 |
* OPENTTD encoding to that of the filesystem. For all purposes this |
a77de25206bc
(svn r8821) -Regression: Unable to browse directories on *nix if the filesystem is not in UTF-8 charset and special characters are used. The string passed to opendir() which is UTF-8 was not parsed back to the filesystem format. Use a wrapper called ttd_opendir() instead of redefining opendir itself.
Darkvater
parents:
5726
diff
changeset
|
149 |
* function behaves the same as the original opendir function |
a77de25206bc
(svn r8821) -Regression: Unable to browse directories on *nix if the filesystem is not in UTF-8 charset and special characters are used. The string passed to opendir() which is UTF-8 was not parsed back to the filesystem format. Use a wrapper called ttd_opendir() instead of redefining opendir itself.
Darkvater
parents:
5726
diff
changeset
|
150 |
* @param path string to open directory of |
a77de25206bc
(svn r8821) -Regression: Unable to browse directories on *nix if the filesystem is not in UTF-8 charset and special characters are used. The string passed to opendir() which is UTF-8 was not parsed back to the filesystem format. Use a wrapper called ttd_opendir() instead of redefining opendir itself.
Darkvater
parents:
5726
diff
changeset
|
151 |
* @return DIR pointer |
a77de25206bc
(svn r8821) -Regression: Unable to browse directories on *nix if the filesystem is not in UTF-8 charset and special characters are used. The string passed to opendir() which is UTF-8 was not parsed back to the filesystem format. Use a wrapper called ttd_opendir() instead of redefining opendir itself.
Darkvater
parents:
5726
diff
changeset
|
152 |
*/ |
a77de25206bc
(svn r8821) -Regression: Unable to browse directories on *nix if the filesystem is not in UTF-8 charset and special characters are used. The string passed to opendir() which is UTF-8 was not parsed back to the filesystem format. Use a wrapper called ttd_opendir() instead of redefining opendir itself.
Darkvater
parents:
5726
diff
changeset
|
153 |
static inline DIR *ttd_opendir(const char *path) |
a77de25206bc
(svn r8821) -Regression: Unable to browse directories on *nix if the filesystem is not in UTF-8 charset and special characters are used. The string passed to opendir() which is UTF-8 was not parsed back to the filesystem format. Use a wrapper called ttd_opendir() instead of redefining opendir itself.
Darkvater
parents:
5726
diff
changeset
|
154 |
{ |
a77de25206bc
(svn r8821) -Regression: Unable to browse directories on *nix if the filesystem is not in UTF-8 charset and special characters are used. The string passed to opendir() which is UTF-8 was not parsed back to the filesystem format. Use a wrapper called ttd_opendir() instead of redefining opendir itself.
Darkvater
parents:
5726
diff
changeset
|
155 |
return opendir(OTTD2FS(path)); |
a77de25206bc
(svn r8821) -Regression: Unable to browse directories on *nix if the filesystem is not in UTF-8 charset and special characters are used. The string passed to opendir() which is UTF-8 was not parsed back to the filesystem format. Use a wrapper called ttd_opendir() instead of redefining opendir itself.
Darkvater
parents:
5726
diff
changeset
|
156 |
} |
a77de25206bc
(svn r8821) -Regression: Unable to browse directories on *nix if the filesystem is not in UTF-8 charset and special characters are used. The string passed to opendir() which is UTF-8 was not parsed back to the filesystem format. Use a wrapper called ttd_opendir() instead of redefining opendir itself.
Darkvater
parents:
5726
diff
changeset
|
157 |
|
4218
384c7451e3bb
(svn r5762) - Codechange: Implementation of POSIX-style opendir/readdir/closedir functions for windows using FindFirstFile/FindNextFile/FindClose.
Darkvater
parents:
diff
changeset
|
158 |
#endif /* FIOS_H */ |