summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJanne Hyvärinen <cse@sci.fi>2013-04-20 12:42:24 +0300
committerErik de Castro Lopo <erikd@mega-nerd.com>2013-04-21 17:56:16 +1000
commite8ffe523f8b2703a27983d2717cb36f7ed02e7c9 (patch)
treed6c09cd6235659bb89139b5f2605c4a6994854ab /src
parent52fab8ba7e2a728e884a06fa80f9e0a0d4938e05 (diff)
downloadflac-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.c20
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;
}