[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [46626] trunk/blender/source/blender/ blenlib/intern/fileops.c: Fix for BLI_gzopen to work with utf filenames in windows
Sv. Lockal
lockalsash at gmail.com
Mon May 14 15:28:37 CEST 2012
Revision: 46626
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=46626
Author: lockal
Date: 2012-05-14 13:28:36 +0000 (Mon, 14 May 2012)
Log Message:
-----------
Fix for BLI_gzopen to work with utf filenames in windows
Modified Paths:
--------------
trunk/blender/source/blender/blenlib/intern/fileops.c
Modified: trunk/blender/source/blender/blenlib/intern/fileops.c
===================================================================
--- trunk/blender/source/blender/blenlib/intern/fileops.c 2012-05-14 12:50:36 UTC (rev 46625)
+++ trunk/blender/source/blender/blenlib/intern/fileops.c 2012-05-14 13:28:36 UTC (rev 46626)
@@ -211,33 +211,31 @@
void *BLI_gzopen(const char *filename, const char *mode)
{
- gzFile gzfile;
+ FILE *file;
+ gzFile gzfile = NULL;
+ wchar_t short_name_16[256];
- if (!filename || !mode) {
+ if (!filename || !mode)
return 0;
- }
- else {
- wchar_t short_name_16[256];
- char short_name[256];
- int i = 0;
- /* xxx Creates file before transcribing the path */
- if (mode[0] == 'w')
- fclose(ufopen(filename, "a"));
+ /* xxx Creates file before transcribing the path */
+ if (mode[0] == 'w')
+ fclose(ufopen(filename, "a"));
- UTF16_ENCODE(filename);
+ UTF16_ENCODE(filename);
+ UTF16_ENCODE(mode);
- GetShortPathNameW(filename_16, short_name_16, 256);
+ GetShortPathNameW(filename_16, short_name_16, 256);
- for (i = 0; i < 256; i++) {
- short_name[i] = (char)short_name_16[i];
+ if ((file = _wfopen(short_name_16, mode_16))) {
+ if (!(gzfile = gzdopen(fileno(file), mode))) {
+ fclose(file);
}
-
- gzfile = gzopen(short_name, mode);
-
- UTF16_UN_ENCODE(filename);
}
+ UTF16_UN_ENCODE(mode);
+ UTF16_UN_ENCODE(filename);
+
return gzfile;
}
More information about the Bf-blender-cvs
mailing list