diff options
author | Janne Hyvärinen <cse@sci.fi> | 2013-04-20 12:42:24 +0300 |
---|---|---|
committer | Erik de Castro Lopo <erikd@mega-nerd.com> | 2013-04-21 17:56:16 +1000 |
commit | e8ffe523f8b2703a27983d2717cb36f7ed02e7c9 (patch) | |
tree | d6c09cd6235659bb89139b5f2605c4a6994854ab /src | |
parent | 52fab8ba7e2a728e884a06fa80f9e0a0d4938e05 (diff) | |
download | flac-e8ffe523f8b2703a27983d2717cb36f7ed02e7c9.tar.gz |
Windows utf8 utime fix.
UTF-8 version of utime was completely broken and file timestamps were
not preserved.
Signed-off-by: Erik de Castro Lopo <erikd@mega-nerd.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/share/win_utf8_io/win_utf8_io.c | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/src/share/win_utf8_io/win_utf8_io.c b/src/share/win_utf8_io/win_utf8_io.c index d8736e16..26679c36 100644 --- a/src/share/win_utf8_io/win_utf8_io.c +++ b/src/share/win_utf8_io/win_utf8_io.c @@ -259,22 +259,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; } |