MCPcopy Create free account
hub / github.com/LASzip/LASzip / LASfopen

Function LASfopen

src/mydefs.cpp:244–290  ·  view source on GitHub ↗

Opens a file with the specified filename and mode, converting filename and mode to UTF-16 on Windows.

Source from the content-addressed store, hash-verified

242
243/// Opens a file with the specified filename and mode, converting filename and mode to UTF-16 on Windows.
244FILE* LASfopen(const char* const filename, const char* const mode) {
245 if (filename == nullptr || mode == nullptr || mode[0] == '\0') {
246 return nullptr;
247 }
248 FILE* file = nullptr;
249
250#ifdef _WIN32
251 wchar_t* utf16_file_name = nullptr;
252 wchar_t* utf16_mode = nullptr;
253
254#ifdef FORCE_UTF8_PATH
255 utf16_file_name = UTF8toUTF16(filename);
256#else
257 if (validate_utf8(filename)) {
258 utf16_file_name = UTF8toUTF16(filename);
259 } else {
260 utf16_file_name = ANSItoUTF16(filename);
261 }
262 // mode can be converted with UTF8toUTF16, as it contains only ASCII characters
263 utf16_mode = UTF8toUTF16(mode);
264
265 if (utf16_file_name && utf16_mode) {
266 file = _wfopen(utf16_file_name, utf16_mode);
267 }
268 delete[] utf16_file_name;
269 delete[] utf16_mode;
270#endif
271#else
272// The following block of code is deactivated as it is very unlikely to be needed under non-Windows systems.
273// To re-enable, change #if 0 to #if 1.
274#if 0
275 char* utf8_file_name = nullptr;
276
277 if (validate_utf8(filename)) {
278 file = fopen(filename, mode);
279 } else {
280 utf8_file_name = ANSItoUTF8(filename);
281 file = fopen(utf8_file_name, mode);
282 }
283 delete[] utf8_file_name;
284#else
285 file = fopen(filename, mode);
286#endif
287#endif
288
289 return file;
290}
291
292/// <summary>
293/// delete a file on common OS and report failure

Callers 5

readMethod · 0.85
appendMethod · 0.85
writeMethod · 0.85

Calls 4

UTF8toUTF16Function · 0.85
validate_utf8Function · 0.85
ANSItoUTF16Function · 0.85
ANSItoUTF8Function · 0.85

Tested by

no test coverage detected