87 lines
3.0 KiB
C
87 lines
3.0 KiB
C
/*****************************************************************************\
|
|
* *
|
|
* Filename: utime.h *
|
|
* *
|
|
* Description: DOS/WIN32 adaptation of standard C library's utime.h. *
|
|
* *
|
|
* Notes: The Unix standard now standardizes utime.h location in *
|
|
* the include directory itself. *
|
|
* Microsoft put it in the include/sys subdirectory. *
|
|
* *
|
|
* History: *
|
|
* 2014-12-13 JFL Created this file. *
|
|
* *
|
|
* Copyright 2016 Hewlett Packard Enterprise Development LP *
|
|
* Licensed under the Apache 2.0 license - www.apache.org/licenses/LICENSE-2.0 *
|
|
\*****************************************************************************/
|
|
|
|
#ifndef _MSVXLIBX_UTIME_H
|
|
#define _MSVXLIBX_UTIME_H
|
|
|
|
/* In MS-DOS, simply use MSVC's sys/utime.h. */
|
|
|
|
#ifdef _MSDOS
|
|
|
|
#include <sys/utime.h>
|
|
|
|
#define lutime utime /* There are no links in MS-DOS, so lutime() is the same as utime() */
|
|
|
|
#endif /* _MSDOS */
|
|
|
|
|
|
/* In Windows, we use MSVC's sys/utime.h, but redefine the utime*() functions. */
|
|
|
|
#ifdef _WIN32
|
|
|
|
#include "msvclibx.h" /* Generate a library search record to load MsvcLibX.lib. */
|
|
|
|
/* Save the initial definition and value of __STDC__ */
|
|
#ifdef __STDC__
|
|
#define _UTIME__STDC__WAS_DEFINED 1
|
|
#pragma push_macro("__STDC__")
|
|
#undef __STDC__
|
|
#else
|
|
#define _UTIME__STDC__WAS_DEFINED 0
|
|
#endif
|
|
|
|
#define __STDC__ 1 /* Prevents <sys/utime.h> from defining structures and functions without _ */
|
|
|
|
#include <sys/utime.h>
|
|
|
|
#ifdef _USE_32BIT_TIME_T
|
|
#define utimbuf __utimbuf32
|
|
#define utime _utime32x
|
|
#error "32-bits time_t not supported in MsvcLibX' utime."
|
|
#else
|
|
#define utimbuf __utimbuf64
|
|
#if defined(_UTF8_SOURCE) || defined(_BSD_SOURCE) || defined(_GNU_SOURCE)
|
|
#define utime utimeU
|
|
#define lutime lutimeU
|
|
#else /* _ANSI_SOURCE */
|
|
#define utime utimeA
|
|
#define lutime lutimeA
|
|
#endif
|
|
#endif
|
|
|
|
/* Our redefinition in utime.c */
|
|
int utimeA(const char * pszFilename, const struct utimbuf * pUtimbuf);
|
|
int lutimeA(const char * pszFilename, const struct utimbuf * pUtimbuf);
|
|
int utimeU(const char * pszFilename, const struct utimbuf * pUtimbuf);
|
|
int lutimeU(const char * pszFilename, const struct utimbuf * pUtimbuf);
|
|
int utimeW(const WCHAR * pszFilename, const struct utimbuf * pUtimbuf);
|
|
int lutimeW(const WCHAR * pszFilename, const struct utimbuf * pUtimbuf);
|
|
int futime(int fd, const struct utimbuf * pUtimbuf);
|
|
|
|
#undef __STDC__
|
|
|
|
/* Restore the initial definition and value of __STDC__ */
|
|
#if _UTIME__STDC__WAS_DEFINED
|
|
#pragma pop_macro("__STDC__")
|
|
#endif
|
|
#undef _UTIME__STDC__WAS_DEFINED
|
|
|
|
#endif /* _WIN32 */
|
|
|
|
#endif /* _MSVXLIBX_UTIME_H */
|
|
|