Commit WIP. Part 1 of ??
[reactos.git] / reactos / include / crt / sys / utime.h
index a6b1cd6..4722cb9 100644 (file)
-/*
- * utime.h
+/**
  * This file has no copyright assigned and is placed in the Public Domain.
- * This file is a part of the mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within the package.
- *
- * Support for the utime function.
- *
+ * This file is part of the w64 mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
  */
-#ifndef        _UTIME_H_
-#define        _UTIME_H_
+#ifndef _INC_UTIME
+#define _INC_UTIME
 
-/* All the headers include this file. */
-#include <_mingw.h>
+#ifndef _WIN32
+#error Only Win32 target is supported!
+#endif
 
-#define __need_wchar_t
-#define __need_size_t
-#ifndef RC_INVOKED
-#include <stddef.h>
-#endif /* Not RC_INVOKED */
-#include <sys/types.h>
+#include <_mingw.h>
 
-#ifndef        RC_INVOKED
+#pragma pack(push,_CRT_PACKING)
 
-/*
- * Structure used by _utime function.
- */
-struct _utimbuf
-{
-       time_t  actime;         /* Access time */
-       time_t  modtime;        /* Modification time */
-};
-
-
-#ifndef        _NO_OLDNAMES
-/* NOTE: Must be the same as _utimbuf above. */
-struct utimbuf
-{
-       time_t  actime;
-       time_t  modtime;
-};
-#endif /* Not _NO_OLDNAMES */
-
-struct __utimbuf64
-{
-       __time64_t actime;
-       __time64_t modtime;
-};
-
-
-#ifdef __cplusplus
+#ifdef __cplusplus
 extern "C" {
 #endif
 
-_CRTIMP int __cdecl __MINGW_NOTHROW    _utime (const char*, struct _utimbuf*);
+#ifndef _CRTIMP
+#define _CRTIMP __declspec(dllimport)
+#endif
+
+#ifndef _WCHAR_T_DEFINED
+  typedef unsigned short wchar_t;
+#define _WCHAR_T_DEFINED
+#endif
+
+#ifdef _USE_32BIT_TIME_T
+#ifdef _WIN64
+#undef _USE_32BIT_TIME_T
+#endif
+#else
+#if _INTEGRAL_MAX_BITS < 64
+#define _USE_32BIT_TIME_T
+#endif
+#endif
+
+#ifndef _TIME32_T_DEFINED
+#define _TIME32_T_DEFINED
+  typedef long __time32_t;
+#endif
+
+#ifndef _TIME64_T_DEFINED
+#define _TIME64_T_DEFINED
+#if _INTEGRAL_MAX_BITS >= 64
+  typedef __int64 __time64_t;
+#endif
+#endif
 
-#ifndef        _NO_OLDNAMES
-_CRTIMP int __cdecl __MINGW_NOTHROW    utime (const char*, struct utimbuf*);
-#endif /* Not _NO_OLDNAMES */
+#ifndef _TIME_T_DEFINED
+#define _TIME_T_DEFINED
+#ifdef _USE_32BIT_TIME_T
+  typedef __time32_t time_t;
+#else
+  typedef __time64_t time_t;
+#endif
+#endif
 
-_CRTIMP int __cdecl __MINGW_NOTHROW    _futime (int, struct _utimbuf*);
+#ifndef _UTIMBUF_DEFINED
+#define _UTIMBUF_DEFINED
+
+  struct _utimbuf {
+    time_t actime;
+    time_t modtime;
+  };
+
+  struct __utimbuf32 {
+    __time32_t actime;
+    __time32_t modtime;
+  };
+
+  struct __utimbuf64 {
+    __time64_t actime;
+    __time64_t modtime;
+  };
+
+#ifndef        NO_OLDNAMES
+  struct utimbuf {
+    time_t actime;
+    time_t modtime;
+  };
+
+  struct utimbuf32 {
+    __time32_t actime;
+    __time32_t modtime;
+  };
+#endif
+#endif
 
-/* The wide character version, only available for MSVCRT versions of the
- * C runtime library. */
-#ifdef __MSVCRT__
-_CRTIMP int __cdecl __MINGW_NOTHROW    _wutime (const wchar_t*, struct _utimbuf*);
-#endif /* MSVCRT runtime */
+  _CRTIMP int __cdecl _utime32(const char *_Filename,struct __utimbuf32 *_Time);
+  _CRTIMP int __cdecl _futime32(int _FileDes,struct __utimbuf32 *_Time);
+  _CRTIMP int __cdecl _wutime32(const wchar_t *_Filename,struct __utimbuf32 *_Time);
+  _CRTIMP int __cdecl _utime64(const char *_Filename,struct __utimbuf64 *_Time);
+  _CRTIMP int __cdecl _futime64(int _FileDes,struct __utimbuf64 *_Time);
+  _CRTIMP int __cdecl _wutime64(const wchar_t *_Filename,struct __utimbuf64 *_Time);
 
-/* These require newer versions of msvcrt.dll (6.10 or higher).  */
-#if __MSVCRT_VERSION__ >= 0x0601
-_CRTIMP int __cdecl __MINGW_NOTHROW    _utime64 (const char*, struct __utimbuf64*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _wutime64 (const wchar_t*, struct __utimbuf64*);
-_CRTIMP int __cdecl __MINGW_NOTHROW    _futime64 (int, struct __utimbuf64*);
-#endif /* __MSVCRT_VERSION__ >= 0x0601 */
+#ifndef RC_INVOKED
+__CRT_INLINE int __cdecl _utime(const char *_Filename,struct _utimbuf *_Utimbuf) {
+  return _utime32(_Filename,(struct __utimbuf32 *)_Utimbuf);
+}
+__CRT_INLINE int __cdecl _futime(int _Desc,struct _utimbuf *_Utimbuf) {
+  return _futime32(_Desc,(struct __utimbuf32 *)_Utimbuf);
+}
+__CRT_INLINE int __cdecl _wutime(const wchar_t *_Filename,struct _utimbuf *_Utimbuf) {
+  return _wutime32(_Filename,(struct __utimbuf32 *)_Utimbuf);
+}
+#elif defined(_USE_64BIT_TIME_T)
+__CRT_INLINE int __cdecl _utime(const char *_Filename,struct _utimbuf *_Utimbuf) {
+  return _utime64(_Filename,(struct __utimbuf64 *)_Utimbuf);
+}
+__CRT_INLINE int __cdecl _futime(int _Desc,struct _utimbuf *_Utimbuf) {
+  return _futime64(_Desc,(struct __utimbuf64 *)_Utimbuf);
+}
+__CRT_INLINE int __cdecl _wutime(const wchar_t *_Filename,struct _utimbuf *_Utimbuf) {
+  return _wutime64(_Filename,(struct __utimbuf64 *)_Utimbuf);
+}
 
-#ifdef __cplusplus
+#ifndef        NO_OLDNAMES
+#ifndef _WIN64
+__CRT_INLINE int __cdecl utime(const char *_Filename,struct utimbuf *_Utimbuf) {
+  return _utime32(_Filename,(struct __utimbuf32 *)_Utimbuf);
 }
+#else
+__CRT_INLINE int __cdecl utime(const char *_Filename,struct utimbuf *_Utimbuf) {
+  return _utime64(_Filename,(struct __utimbuf64 *)_Utimbuf);
+}
+#endif
+#endif
 #endif
 
-#endif /* Not RC_INVOKED */
+#ifdef __cplusplus
+}
+#endif
 
-#endif /* Not _UTIME_H_ */
+#pragma pack(pop)
+#endif