summaryrefslogtreecommitdiff
path: root/src/common/file_util.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/common/file_util.h')
-rw-r--r--src/common/file_util.h186
1 files changed, 93 insertions, 93 deletions
diff --git a/src/common/file_util.h b/src/common/file_util.h
index 173ce6623..72b80be8a 100644
--- a/src/common/file_util.h
+++ b/src/common/file_util.h
@@ -16,33 +16,33 @@
16 16
17// User directory indices for GetUserPath 17// User directory indices for GetUserPath
18enum { 18enum {
19 D_USER_IDX, 19 D_USER_IDX,
20 D_ROOT_IDX, 20 D_ROOT_IDX,
21 D_CONFIG_IDX, 21 D_CONFIG_IDX,
22 D_GAMECONFIG_IDX, 22 D_GAMECONFIG_IDX,
23 D_MAPS_IDX, 23 D_MAPS_IDX,
24 D_CACHE_IDX, 24 D_CACHE_IDX,
25 D_SHADERCACHE_IDX, 25 D_SHADERCACHE_IDX,
26 D_SHADERS_IDX, 26 D_SHADERS_IDX,
27 D_STATESAVES_IDX, 27 D_STATESAVES_IDX,
28 D_SCREENSHOTS_IDX, 28 D_SCREENSHOTS_IDX,
29 D_SDMC_IDX, 29 D_SDMC_IDX,
30 D_HIRESTEXTURES_IDX, 30 D_HIRESTEXTURES_IDX,
31 D_DUMP_IDX, 31 D_DUMP_IDX,
32 D_DUMPFRAMES_IDX, 32 D_DUMPFRAMES_IDX,
33 D_DUMPAUDIO_IDX, 33 D_DUMPAUDIO_IDX,
34 D_DUMPTEXTURES_IDX, 34 D_DUMPTEXTURES_IDX,
35 D_DUMPDSP_IDX, 35 D_DUMPDSP_IDX,
36 D_LOGS_IDX, 36 D_LOGS_IDX,
37 D_SYSCONF_IDX, 37 D_SYSCONF_IDX,
38 F_EMUCONFIG_IDX, 38 F_EMUCONFIG_IDX,
39 F_DEBUGGERCONFIG_IDX, 39 F_DEBUGGERCONFIG_IDX,
40 F_LOGGERCONFIG_IDX, 40 F_LOGGERCONFIG_IDX,
41 F_MAINLOG_IDX, 41 F_MAINLOG_IDX,
42 F_RAMDUMP_IDX, 42 F_RAMDUMP_IDX,
43 F_ARAMDUMP_IDX, 43 F_ARAMDUMP_IDX,
44 F_SYSCONF_IDX, 44 F_SYSCONF_IDX,
45 NUM_PATH_INDICES 45 NUM_PATH_INDICES
46}; 46};
47 47
48namespace FileUtil 48namespace FileUtil
@@ -51,11 +51,11 @@ namespace FileUtil
51// FileSystem tree node/ 51// FileSystem tree node/
52struct FSTEntry 52struct FSTEntry
53{ 53{
54 bool isDirectory; 54 bool isDirectory;
55 u64 size; // file length or number of entries from children 55 u64 size; // file length or number of entries from children
56 std::string physicalName; // name on disk 56 std::string physicalName; // name on disk
57 std::string virtualName; // name in FST names table 57 std::string virtualName; // name in FST names table
58 std::vector<FSTEntry> children; 58 std::vector<FSTEntry> children;
59}; 59};
60 60
61// Returns true if file filename exists 61// Returns true if file filename exists
@@ -148,86 +148,86 @@ void SplitFilename83(const std::string& filename, std::array<char, 9>& short_nam
148class IOFile : public NonCopyable 148class IOFile : public NonCopyable
149{ 149{
150public: 150public:
151 IOFile(); 151 IOFile();
152 IOFile(std::FILE* file); 152 IOFile(std::FILE* file);
153 IOFile(const std::string& filename, const char openmode[]); 153 IOFile(const std::string& filename, const char openmode[]);
154 154
155 ~IOFile(); 155 ~IOFile();
156 156
157 IOFile(IOFile&& other); 157 IOFile(IOFile&& other);
158 IOFile& operator=(IOFile&& other); 158 IOFile& operator=(IOFile&& other);
159 159
160 void Swap(IOFile& other); 160 void Swap(IOFile& other);
161 161
162 bool Open(const std::string& filename, const char openmode[]); 162 bool Open(const std::string& filename, const char openmode[]);
163 bool Close(); 163 bool Close();
164 164
165 template <typename T> 165 template <typename T>
166 size_t ReadArray(T* data, size_t length) 166 size_t ReadArray(T* data, size_t length)
167 { 167 {
168 if (!IsOpen()) { 168 if (!IsOpen()) {
169 m_good = false; 169 m_good = false;
170 return -1; 170 return -1;
171 } 171 }
172 172
173 size_t items_read = std::fread(data, sizeof(T), length, m_file); 173 size_t items_read = std::fread(data, sizeof(T), length, m_file);
174 if (items_read != length) 174 if (items_read != length)
175 m_good = false; 175 m_good = false;
176 176
177 return items_read; 177 return items_read;
178 } 178 }
179 179
180 template <typename T> 180 template <typename T>
181 size_t WriteArray(const T* data, size_t length) 181 size_t WriteArray(const T* data, size_t length)
182 { 182 {
183 if (!IsOpen()) { 183 if (!IsOpen()) {
184 m_good = false; 184 m_good = false;
185 return -1; 185 return -1;
186 } 186 }
187 187
188 size_t items_written = std::fwrite(data, sizeof(T), length, m_file); 188 size_t items_written = std::fwrite(data, sizeof(T), length, m_file);
189 if (items_written != length) 189 if (items_written != length)
190 m_good = false; 190 m_good = false;
191 191
192 return items_written; 192 return items_written;
193 } 193 }
194 194
195 size_t ReadBytes(void* data, size_t length) 195 size_t ReadBytes(void* data, size_t length)
196 { 196 {
197 return ReadArray(reinterpret_cast<char*>(data), length); 197 return ReadArray(reinterpret_cast<char*>(data), length);
198 } 198 }
199 199
200 size_t WriteBytes(const void* data, size_t length) 200 size_t WriteBytes(const void* data, size_t length)
201 { 201 {
202 return WriteArray(reinterpret_cast<const char*>(data), length); 202 return WriteArray(reinterpret_cast<const char*>(data), length);
203 } 203 }
204 204
205 bool IsOpen() { return NULL != m_file; } 205 bool IsOpen() { return NULL != m_file; }
206 206
207 // m_good is set to false when a read, write or other function fails 207 // m_good is set to false when a read, write or other function fails
208 bool IsGood() { return m_good; } 208 bool IsGood() { return m_good; }
209 operator void*() { return m_good ? m_file : NULL; } 209 operator void*() { return m_good ? m_file : NULL; }
210 210
211 std::FILE* ReleaseHandle(); 211 std::FILE* ReleaseHandle();
212 212
213 std::FILE* GetHandle() { return m_file; } 213 std::FILE* GetHandle() { return m_file; }
214 214
215 void SetHandle(std::FILE* file); 215 void SetHandle(std::FILE* file);
216 216
217 bool Seek(s64 off, int origin); 217 bool Seek(s64 off, int origin);
218 u64 Tell(); 218 u64 Tell();
219 u64 GetSize(); 219 u64 GetSize();
220 bool Resize(u64 size); 220 bool Resize(u64 size);
221 bool Flush(); 221 bool Flush();
222 222
223 // clear error state 223 // clear error state
224 void Clear() { m_good = true; std::clearerr(m_file); } 224 void Clear() { m_good = true; std::clearerr(m_file); }
225 225
226 std::FILE* m_file; 226 std::FILE* m_file;
227 bool m_good; 227 bool m_good;
228private: 228private:
229 IOFile(IOFile&); 229 IOFile(IOFile&);
230 IOFile& operator=(IOFile& other); 230 IOFile& operator=(IOFile& other);
231}; 231};
232 232
233} // namespace 233} // namespace
@@ -237,8 +237,8 @@ template <typename T>
237void OpenFStream(T& fstream, const std::string& filename, std::ios_base::openmode openmode) 237void OpenFStream(T& fstream, const std::string& filename, std::ios_base::openmode openmode)
238{ 238{
239#ifdef _WIN32 239#ifdef _WIN32
240 fstream.open(Common::UTF8ToTStr(filename).c_str(), openmode); 240 fstream.open(Common::UTF8ToTStr(filename).c_str(), openmode);
241#else 241#else
242 fstream.open(filename.c_str(), openmode); 242 fstream.open(filename.c_str(), openmode);
243#endif 243#endif
244} 244}