summaryrefslogtreecommitdiff
path: root/ACE/ace/OS_NS_sys_stat.h
blob: 4afae8c1be780eda0e0c9245e8c6b651ed2e00e8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
// -*- C++ -*-

//=============================================================================
/**
 *  @file   OS_NS_sys_stat.h
 *
 *  $Id$
 *
 *  @author Douglas C. Schmidt <schmidt@cs.wustl.edu>
 *  @author Jesper S. M|ller<stophph@diku.dk>
 *  @author and a cast of thousands...
 *
 *  Originally in OS.h.
 */
//=============================================================================

#ifndef ACE_OS_NS_SYS_STAT_H
# define ACE_OS_NS_SYS_STAT_H

# include /**/ "ace/pre.h"

# include "ace/config-all.h"

# if !defined (ACE_LACKS_PRAGMA_ONCE)
#  pragma once
# endif /* ACE_LACKS_PRAGMA_ONCE */

#include "ace/os_include/sys/os_stat.h"
#include "ace/Default_Constants.h" // for ACE_DEFAULT_DIR_PERMS
#include /**/ "ace/ACE_export.h"

#if defined (ACE_EXPORT_MACRO)
#  undef ACE_EXPORT_MACRO
#endif
#define ACE_EXPORT_MACRO ACE_Export

ACE_BEGIN_VERSIONED_NAMESPACE_DECL

# if defined (_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64  \
     && defined (ACE_WIN32)
#   if defined (__BORLANDC__)
typedef struct stati64 ACE_stat;
#       define ACE_STAT_FUNC_NAME ::_stati64
#       define ACE_WSTAT_FUNC_NAME ::_wstati64
#   elif !defined (ACE_HAS_WINCE) && defined (_MSC_VER)
#     if _MSC_VER >= 1400
//      For vc8 which has time_t as 64bit
//      64-bit file offsets, 64-bit time_t
#       if defined (ACE_MSVC_USES_DOUBLE_UNDERSCORE_STAT64)
typedef struct __stat64 ACE_stat;
#       else
typedef struct _stat64 ACE_stat;
#       endif
#       define ACE_STAT_FUNC_NAME ::_stat64
#       define ACE_WSTAT_FUNC_NAME ::_wstat64
#     else
//      For vc71 which has time_t as 32bit
typedef struct _stati64 ACE_stat;
#       define ACE_STAT_FUNC_NAME ::_stati64
#       define ACE_WSTAT_FUNC_NAME ::_wstati64
#     endif  /* _MSC_VER >= 1400 */
#   else
typedef struct stat ACE_stat;
#     define ACE_STAT_FUNC_NAME ::stat
#     define ACE_WSTAT_FUNC_NAME ACE_STAT_FUNC_NAME
#   endif  /**/
# else
//  Default file offset case.
#   if defined (ACE_WIN32) && !defined (ACE_HAS_WINCE)
typedef struct _stat ACE_stat;
#     define ACE_STAT_FUNC_NAME ::_stat
#     define ACE_WSTAT_FUNC_NAME ::_wstat
#   else
typedef struct stat ACE_stat;
#     define ACE_STAT_FUNC_NAME ::stat
#     define ACE_WSTAT_FUNC_NAME ACE_STAT_FUNC_NAME
#   endif /* ACE_WIN32 */
# endif  /* _FILE_OFFSET_BITS == 64 && ACE_WIN32 */

namespace ACE_OS
{

  ACE_NAMESPACE_INLINE_FUNCTION
  ACE_HANDLE creat (const ACE_TCHAR *filename,
                    mode_t mode);

  //@{ @name A set of wrappers for low-level file operations.

  // non-standard
  ACE_NAMESPACE_INLINE_FUNCTION
  ACE_OFF_T filesize (ACE_HANDLE handle);

  ACE_NAMESPACE_INLINE_FUNCTION
  ACE_OFF_T filesize (const ACE_TCHAR *handle);
  //@}

  ACE_NAMESPACE_INLINE_FUNCTION
  int fstat (ACE_HANDLE,
             ACE_stat *);

  ACE_NAMESPACE_INLINE_FUNCTION
  int lstat (const char *,
             ACE_stat *);

#if defined (ACE_HAS_WCHAR)
  ACE_NAMESPACE_INLINE_FUNCTION
  int lstat (const wchar_t *,
             ACE_stat *);
#endif /* ACE_HAS_WCHAR */

  ACE_NAMESPACE_INLINE_FUNCTION
  int mkdir (const char *path,
             mode_t mode = ACE_DEFAULT_DIR_PERMS);

#if defined (ACE_HAS_WCHAR)
  ACE_NAMESPACE_INLINE_FUNCTION
  int mkdir (const wchar_t *path,
             mode_t mode = ACE_DEFAULT_DIR_PERMS);
#endif /* ACE_HAS_WCHAR */

  ACE_NAMESPACE_INLINE_FUNCTION
  int mkfifo (const ACE_TCHAR *file,
              mode_t mode = ACE_DEFAULT_FILE_PERMS);

  ACE_NAMESPACE_INLINE_FUNCTION
  int stat (const char *file, ACE_stat *);

#if defined (ACE_HAS_WCHAR)
  ACE_NAMESPACE_INLINE_FUNCTION
  int stat (const wchar_t *file, ACE_stat *);
#endif /* ACE_HAS_WCHAR */

  ACE_NAMESPACE_INLINE_FUNCTION
  mode_t umask (mode_t cmask);

} /* namespace ACE_OS */

ACE_END_VERSIONED_NAMESPACE_DECL

# if defined (ACE_HAS_INLINED_OSCALLS)
#   if defined (ACE_INLINE)
#     undef ACE_INLINE
#   endif /* ACE_INLINE */
#   define ACE_INLINE inline
#   include "ace/OS_NS_sys_stat.inl"
# endif /* ACE_HAS_INLINED_OSCALLS */

# include /**/ "ace/post.h"
#endif /* ACE_OS_NS_SYS_STAT_H */