[flac-dev] One tiny Windows Unicode patch
Janne Hyvärinen
cse at sci.fi
Sat Apr 20 02:42:24 PDT 2013
On 20.4.2013 11:23, Janne Hyvärinen wrote:
> I have been doing some heavy testing with the new FLAC version, and I
> found that CreateFile function in grabbag had been left out of UTF-8
> treatment at some point. This causes re-encoding an existing flac to
> the same name to break the file if it contains non-ascii characters.
> Attached patch fixes this.
>
>
And another patch. UTF-8 version of utime was completely broken and file
timestamps were not preserved.
-------------- next part --------------
diff --git a/src/share/win_utf8_io/win_utf8_io.c b/src/share/win_utf8_io/win_utf8_io.c
index d7d1dbd..b10dbe3 100644
--- a/src/share/win_utf8_io/win_utf8_io.c
+++ b/src/share/win_utf8_io/win_utf8_io.c
@@ -214,22 +214,20 @@ int chmod_utf8(const char *filename, int pmode)
int utime_utf8(const char *filename, struct utimbuf *times)
{
wchar_t *wname;
- struct _utimbuf ut;
+ struct __utimbuf64 ut;
int ret;
+ if (sizeof(*times) == sizeof(ut)) {
+ memcpy(&ut, times, sizeof(ut));
+ } else {
+ ut.actime = times->actime;
+ ut.modtime = times->modtime;
+ }
+
if (!(wname = wchar_from_utf8(filename))) return -1;
- ret = _wutime(wname, &ut);
+ ret = _wutime64(wname, &ut);
free(wname);
- if (ret != -1) {
- if (sizeof(*times) == sizeof(ut)) {
- memcpy(times, &ut, sizeof(ut));
- } else {
- times->actime = ut.actime;
- times->modtime = ut.modtime;
- }
- }
-
return ret;
}
More information about the flac-dev
mailing list