blob: 4be9706a87603324e44fd495e4ccb031f0756218 [file] [log] [blame]
/**
* This file has no copyright assigned and is placed in the Public Domain.
* This file is part of the mingw-w64 runtime package.
* No warranty is given; refer to the file DISCLAIMER.PD within this package.
*/
#include <windows.h>
#include <errno.h>
#include <utime.h>
#include <time.h>
#include <io.h>
#include "filetime_to_time64.h"
static int __cdecl emu__futime64(int fd, struct __utimbuf64 *times)
{
struct __utimbuf64 utimbuf64;
FILETIME last_access_time;
FILETIME last_write_time;
HANDLE handle;
handle = (HANDLE)_get_osfhandle(fd);
if (handle == INVALID_HANDLE_VALUE)
return -1;
if (!times) {
utimbuf64.actime = utimbuf64.modtime = _time64(NULL);
times = &utimbuf64;
}
time64_to_filetime(times->actime, &last_access_time);
time64_to_filetime(times->modtime, &last_write_time);
if (!SetFileTime(handle, NULL, &last_access_time, &last_write_time)) {
errno = EINVAL;
return -1;
}
return 0;
}
#define RETT int
#define FUNC _futime64
#define ARGS int fd, struct __utimbuf64 *times
#define CALL fd, times
#include "msvcrt_or_emu_glue.h"