[7297] Fixed profession spells sorting in trainer spell list at client.
[getmangos.git] / dep / ACE_wrappers / ace / OS_NS_dirent.inl
blob2f73e091a2455b6b0a0105b831c95c13669a165c
1 // -*- C++ -*-
2 //
3 // $Id: OS_NS_dirent.inl 80826 2008-03-04 14:51:23Z wotte $
5 #include "ace/OS_Memory.h"
7 #if defined (ACE_LACKS_ALPHASORT)
8 # include "ace/OS_NS_string.h"
9 #endif /* ACE_LACKS_ALPHASORT */
11 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
13 namespace ACE_OS
16 ACE_INLINE void
17 closedir (ACE_DIR *d)
19 #if defined (ACE_HAS_DIRENT)
20 # if defined (ACE_WIN32) && defined (ACE_LACKS_CLOSEDIR)
21   ACE_OS::closedir_emulation (d);
22   delete [] d->directory_name_;
23   delete d;
24 # elif defined (ACE_HAS_WCLOSEDIR) && defined (ACE_USES_WCHAR)
25   ::wclosedir (d);
26 # else /* ACE_WIN32 && ACE_LACKS_CLOSEDIR */
27   ::closedir (d);
28 # endif /* ACE_WIN32 && ACE_LACKS_CLOSEDIR */
30 #else /* ACE_HAS_DIRENT */
31   ACE_UNUSED_ARG (d);
32 #endif /* ACE_HAS_DIRENT */
35 ACE_INLINE ACE_DIR *
36 opendir (const ACE_TCHAR *filename)
38 #if defined (ACE_HAS_DIRENT)
39 #    if defined (ACE_WIN32) && defined (ACE_LACKS_OPENDIR)
40   return ::ACE_OS::opendir_emulation (filename);
41 #  elif defined (ACE_HAS_WOPENDIR) && defined (ACE_USES_WCHAR)
42   return ::wopendir (filename);
43 #    elif defined (ACE_HAS_NONCONST_OPENDIR)
44   return ::opendir (const_cast<char *> (filename));
45 #    else /* ! ACE_WIN32 && ACE_LACKS_OPENDIR */
46   return ::opendir (ACE_TEXT_ALWAYS_CHAR (filename));
47 #    endif /* ACE_WIN32 && ACE_LACKS_OPENDIR */
48 #else
49   ACE_UNUSED_ARG (filename);
50   ACE_NOTSUP_RETURN (0);
51 #endif /* ACE_HAS_DIRENT */
54 ACE_INLINE struct ACE_DIRENT *
55 readdir (ACE_DIR *d)
57 #if defined (ACE_HAS_DIRENT)
58 #  if defined (ACE_WIN32) && defined (ACE_LACKS_READDIR)
59      return ACE_OS::readdir_emulation (d);
60 #  elif defined (ACE_HAS_WREADDIR) && defined (ACE_USES_WCHAR)
61      return ::wreaddir (d);
62 #  else /* ACE_WIN32 && ACE_LACKS_READDIR */
63      return ::readdir (d);
64 #  endif /* ACE_WIN32 && ACE_LACKS_READDIR */
65 #else
66   ACE_UNUSED_ARG (d);
67   ACE_NOTSUP_RETURN (0);
68 #endif /* ACE_HAS_DIRENT */
71 ACE_INLINE int
72 readdir_r (ACE_DIR *dirp,
73            struct ACE_DIRENT *entry,
74            struct ACE_DIRENT **result)
76 #if !defined (ACE_HAS_REENTRANT_FUNCTIONS)
77   ACE_UNUSED_ARG (entry);
78   // <result> has better not be 0!
79   *result = ACE_OS::readdir (dirp);
80   if (*result)
81     return 0; // Keep iterating
82   else
83     return 1; // Oops, some type of error!
84 #elif defined (ACE_HAS_DIRENT) && !defined (ACE_LACKS_READDIR_R)
85 #  if defined (ACE_HAS_3_PARAM_READDIR_R)
86        return ::readdir_r (dirp, entry, result);
87 #  else
88        // <result> had better not be 0!
89        *result = ::readdir_r (dirp, entry);
90        return 0;
91 #  endif /* sun */
92 #else  /* ! ACE_HAS_DIRENT  ||  ACE_LACKS_READDIR_R */
93   ACE_UNUSED_ARG (dirp);
94   ACE_UNUSED_ARG (entry);
95   ACE_UNUSED_ARG (result);
96   ACE_NOTSUP_RETURN (0);
98 #endif /* ACE_HAS_REENTRANT_FUNCTIONS */
101 ACE_INLINE void
102 rewinddir (ACE_DIR *d)
104 #if defined (ACE_HAS_DIRENT)
105 #  if defined (ACE_HAS_WREWINDDIR) && defined (ACE_USES_WCHAR)
106   ::wrewinddir (d);
107 #  elif !defined (ACE_LACKS_REWINDDIR)
108   ace_rewinddir_helper (d);
109 #  else
110   ACE_UNUSED_ARG (d);
111 #  endif /* !defined (ACE_LACKS_REWINDDIR) */
112 #endif /* ACE_HAS_DIRENT */
115 ACE_INLINE int
116 scandir (const ACE_TCHAR *dirname,
117          struct ACE_DIRENT **namelist[],
118          ACE_SCANDIR_SELECTOR selector,
119          ACE_SCANDIR_COMPARATOR comparator)
121 #if defined (ACE_HAS_SCANDIR)
122   return ::scandir (ACE_TEXT_ALWAYS_CHAR (dirname),
123                     namelist,
124 #  if defined (ACE_SCANDIR_SEL_LACKS_CONST)
125                     reinterpret_cast<ACE_SCANDIR_OS_SELECTOR> (selector),
126 #  else
127                     selector,
128 #  endif /* ACE_SCANDIR_SEL_LACKS_CONST */
129 #  if defined (ACE_SCANDIR_CMP_USES_VOIDPTR) || \
130       defined (ACE_SCANDIR_CMP_USES_CONST_VOIDPTR)
131                     reinterpret_cast<ACE_SCANDIR_OS_COMPARATOR> (comparator));
132 #  else
133                     comparator);
134 #  endif /* ACE_SCANDIR_CMP_USES_VOIDPTR */
136 #else /* ! defined ( ACE_HAS_SCANDIR) */
137   return ACE_OS::scandir_emulation (dirname, namelist, selector, comparator);
138 #endif /* ACE_HAS_SCANDIR */
141 ACE_INLINE int
142 alphasort (const void *a, const void *b)
144 #if defined (ACE_LACKS_ALPHASORT)
145   return ACE_OS::strcmp ((*static_cast<const struct ACE_DIRENT * const *>(a))->d_name,
146                           (*static_cast<const struct ACE_DIRENT * const *>(b))->d_name);
147 #else
148 #  if defined (ACE_SCANDIR_CMP_USES_VOIDPTR)
149   return ::alphasort (const_cast<void *>(a),
150                       const_cast<void *>(b));
151 #  elif defined (ACE_SCANDIR_CMP_USES_CONST_VOIDPTR)
152   return ::alphasort (a, b);
153 #  else
154   return ::alphasort ((const struct ACE_DIRENT **)a,
155                       (const struct ACE_DIRENT **)b);
156 #  endif
157 #endif
160 ACE_INLINE void
161 seekdir (ACE_DIR *d, long loc)
163 #if defined (ACE_HAS_DIRENT) && !defined (ACE_LACKS_SEEKDIR)
164   ::seekdir (d, loc);
165 #else  /* ! ACE_HAS_DIRENT  ||  ACE_LACKS_SEEKDIR */
166   ACE_UNUSED_ARG (d);
167   ACE_UNUSED_ARG (loc);
168 #endif /* ! ACE_HAS_DIRENT  ||  ACE_LACKS_SEEKDIR */
171 ACE_INLINE long
172 telldir (ACE_DIR *d)
174 #if defined (ACE_HAS_DIRENT) && !defined (ACE_LACKS_TELLDIR)
175   return ::telldir (d);
176 #else  /* ! ACE_HAS_DIRENT  ||  ACE_LACKS_TELLDIR */
177   ACE_UNUSED_ARG (d);
178   ACE_NOTSUP_RETURN (-1);
179 #endif /* ! ACE_HAS_DIRENT  ||  ACE_LACKS_TELLDIR */
184 ACE_END_VERSIONED_NAMESPACE_DECL