aboutsummaryrefslogtreecommitdiff
path: root/src/include/plibc.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/plibc.h')
-rw-r--r--src/include/plibc.h1138
1 files changed, 626 insertions, 512 deletions
diff --git a/src/include/plibc.h b/src/include/plibc.h
index c8b6453..9199072 100644
--- a/src/include/plibc.h
+++ b/src/include/plibc.h
@@ -2,19 +2,19 @@
2 This file is part of PlibC. 2 This file is part of PlibC.
3 Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Nils Durner (and other contributing authors) 3 Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Nils Durner (and other contributing authors)
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public 6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version. 8 version 2.1 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details. 13 Lesser General Public License for more details.
14 14
15 You should have received a copy of the GNU Lesser General Public 15 You should have received a copy of the GNU Lesser General Public
16 License along with this library; if not, write to the Free Software 16 License along with this library; if not, write to the Free Software
17 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18*/ 18*/
19 19
20/** 20/**
@@ -68,27 +68,28 @@ extern "C" {
68#define __G_WIN32_H__ 68#define __G_WIN32_H__
69 69
70/* Convert LARGE_INTEGER to double */ 70/* Convert LARGE_INTEGER to double */
71#define Li2Double(x) ((double)((x).HighPart) * 4.294967296E9 + \ 71#define Li2Double(x) ((double) ((x).HighPart) * 4.294967296E9 \
72 (double)((x).LowPart)) 72 + (double) ((x).LowPart))
73#ifndef HAVE_DECL__STATI64 73#ifndef HAVE_DECL__STATI64
74struct _stati64 74struct _stati64
75{ 75{
76 _dev_t st_dev; 76 _dev_t st_dev;
77 _ino_t st_ino; 77 _ino_t st_ino;
78 _mode_t st_mode; 78 _mode_t st_mode;
79 short st_nlink; 79 short st_nlink;
80 short st_uid; 80 short st_uid;
81 short st_gid; 81 short st_gid;
82 _dev_t st_rdev; 82 _dev_t st_rdev;
83 __int64 st_size; 83 __int64 st_size;
84 time_t st_atime; 84 time_t st_atime;
85 time_t st_mtime; 85 time_t st_mtime;
86 time_t st_ctime; 86 time_t st_ctime;
87}; 87};
88#endif 88#endif
89typedef unsigned int sa_family_t; 89typedef unsigned int sa_family_t;
90 90
91struct sockaddr_un { 91struct sockaddr_un
92{
92 short sun_family; /*AF_UNIX*/ 93 short sun_family; /*AF_UNIX*/
93 char sun_path[108]; /*path name */ 94 char sun_path[108]; /*path name */
94}; 95};
@@ -102,7 +103,7 @@ struct sockaddr_un {
102#endif 103#endif
103 104
104#ifndef WEXITSTATUS 105#ifndef WEXITSTATUS
105 #define WEXITSTATUS(status) (((status) & 0xff00) >> 8) 106 #define WEXITSTATUS(status) (((status) & 0xff00) >> 8)
106#endif 107#endif
107 108
108#ifndef MSG_DONTWAIT 109#ifndef MSG_DONTWAIT
@@ -115,258 +116,258 @@ enum
115 _SC_PAGE_SIZE = 30 116 _SC_PAGE_SIZE = 30
116}; 117};
117 118
118#if !defined(EACCESS) 119#if ! defined(EACCESS)
119# define EACCESS EACCES 120# define EACCESS EACCES
120#endif 121#endif
121 122
122/* Thanks to the Cygwin project */ 123/* Thanks to the Cygwin project */
123#if !defined(ENOCSI) 124#if ! defined(ENOCSI)
124# define ENOCSI 43 /* No CSI structure available */ 125# define ENOCSI 43 /* No CSI structure available */
125#endif 126#endif
126#if !defined(EL2HLT) 127#if ! defined(EL2HLT)
127# define EL2HLT 44 /* Level 2 halted */ 128# define EL2HLT 44 /* Level 2 halted */
128#endif 129#endif
129#if !defined(EDEADLK) 130#if ! defined(EDEADLK)
130# define EDEADLK 45 /* Deadlock condition */ 131# define EDEADLK 45 /* Deadlock condition */
131#endif 132#endif
132#if !defined(ENOLCK) 133#if ! defined(ENOLCK)
133# define ENOLCK 46 /* No record locks available */ 134# define ENOLCK 46 /* No record locks available */
134#endif 135#endif
135#if !defined(EBADE) 136#if ! defined(EBADE)
136# define EBADE 50 /* Invalid exchange */ 137# define EBADE 50 /* Invalid exchange */
137#endif 138#endif
138#if !defined(EBADR) 139#if ! defined(EBADR)
139# define EBADR 51 /* Invalid request descriptor */ 140# define EBADR 51 /* Invalid request descriptor */
140#endif 141#endif
141#if !defined(EXFULL) 142#if ! defined(EXFULL)
142# define EXFULL 52 /* Exchange full */ 143# define EXFULL 52 /* Exchange full */
143#endif 144#endif
144#if !defined(ENOANO) 145#if ! defined(ENOANO)
145# define ENOANO 53 /* No anode */ 146# define ENOANO 53 /* No anode */
146#endif 147#endif
147#if !defined(EBADRQC) 148#if ! defined(EBADRQC)
148# define EBADRQC 54 /* Invalid request code */ 149# define EBADRQC 54 /* Invalid request code */
149#endif 150#endif
150#if !defined(EBADSLT) 151#if ! defined(EBADSLT)
151# define EBADSLT 55 /* Invalid slot */ 152# define EBADSLT 55 /* Invalid slot */
152#endif 153#endif
153#if !defined(EDEADLOCK) 154#if ! defined(EDEADLOCK)
154# define EDEADLOCK EDEADLK /* File locking deadlock error */ 155# define EDEADLOCK EDEADLK /* File locking deadlock error */
155#endif 156#endif
156#if !defined(EBFONT) 157#if ! defined(EBFONT)
157# define EBFONT 57 /* Bad font file fmt */ 158# define EBFONT 57 /* Bad font file fmt */
158#endif 159#endif
159#if !defined(ENOSTR) 160#if ! defined(ENOSTR)
160# define ENOSTR 60 /* Device not a stream */ 161# define ENOSTR 60 /* Device not a stream */
161#endif 162#endif
162#if !defined(ENODATA) 163#if ! defined(ENODATA)
163# define ENODATA 61 /* No data (for no delay io) */ 164# define ENODATA 61 /* No data (for no delay io) */
164#endif 165#endif
165#if !defined(ETIME) 166#if ! defined(ETIME)
166# define ETIME 62 /* Timer expired */ 167# define ETIME 62 /* Timer expired */
167#endif 168#endif
168#if !defined(ENOSR) 169#if ! defined(ENOSR)
169# define ENOSR 63 /* Out of streams resources */ 170# define ENOSR 63 /* Out of streams resources */
170#endif 171#endif
171#if !defined(ENONET) 172#if ! defined(ENONET)
172# define ENONET 64 /* Machine is not on the network */ 173# define ENONET 64 /* Machine is not on the network */
173#endif 174#endif
174#if !defined(ENOPKG) 175#if ! defined(ENOPKG)
175# define ENOPKG 65 /* Package not installed */ 176# define ENOPKG 65 /* Package not installed */
176#endif 177#endif
177#if !defined(EREMOTE) 178#if ! defined(EREMOTE)
178# define EREMOTE 66 /* The object is remote */ 179# define EREMOTE 66 /* The object is remote */
179#endif 180#endif
180#if !defined(ENOLINK) 181#if ! defined(ENOLINK)
181# define ENOLINK 67 /* The link has been severed */ 182# define ENOLINK 67 /* The link has been severed */
182#endif 183#endif
183#if !defined(EADV) 184#if ! defined(EADV)
184# define EADV 68 /* Advertise error */ 185# define EADV 68 /* Advertise error */
185#endif 186#endif
186#if !defined(ESRMNT) 187#if ! defined(ESRMNT)
187# define ESRMNT 69 /* Srmount error */ 188# define ESRMNT 69 /* Srmount error */
188#endif 189#endif
189#if !defined(ECOMM) 190#if ! defined(ECOMM)
190# define ECOMM 70 /* Communication error on send */ 191# define ECOMM 70 /* Communication error on send */
191#endif 192#endif
192#if !defined(EMULTIHOP) 193#if ! defined(EMULTIHOP)
193# define EMULTIHOP 74 /* Multihop attempted */ 194# define EMULTIHOP 74 /* Multihop attempted */
194#endif 195#endif
195#if !defined(ELBIN) 196#if ! defined(ELBIN)
196# define ELBIN 75 /* Inode is remote (not really error) */ 197# define ELBIN 75 /* Inode is remote (not really error) */
197#endif 198#endif
198#if !defined(EDOTDOT) 199#if ! defined(EDOTDOT)
199# define EDOTDOT 76 /* Cross mount point (not really error) */ 200# define EDOTDOT 76 /* Cross mount point (not really error) */
200#endif 201#endif
201#if !defined(EBADMSG) 202#if ! defined(EBADMSG)
202# define EBADMSG 77 /* Trying to read unreadable message */ 203# define EBADMSG 77 /* Trying to read unreadable message */
203#endif 204#endif
204#if !defined(ENOTUNIQ) 205#if ! defined(ENOTUNIQ)
205# define ENOTUNIQ 80 /* Given log. name not unique */ 206# define ENOTUNIQ 80 /* Given log. name not unique */
206#endif 207#endif
207#if !defined(EBADFD) 208#if ! defined(EBADFD)
208# define EBADFD 81 /* f.d. invalid for this operation */ 209# define EBADFD 81 /* f.d. invalid for this operation */
209#endif 210#endif
210#if !defined(EREMCHG) 211#if ! defined(EREMCHG)
211# define EREMCHG 82 /* Remote address changed */ 212# define EREMCHG 82 /* Remote address changed */
212#endif 213#endif
213#if !defined(ELIBACC) 214#if ! defined(ELIBACC)
214# define ELIBACC 83 /* Can't access a needed shared lib */ 215# define ELIBACC 83 /* Can't access a needed shared lib */
215#endif 216#endif
216#if !defined(ELIBBAD) 217#if ! defined(ELIBBAD)
217# define ELIBBAD 84 /* Accessing a corrupted shared lib */ 218# define ELIBBAD 84 /* Accessing a corrupted shared lib */
218#endif 219#endif
219#if !defined(ELIBSCN) 220#if ! defined(ELIBSCN)
220# define ELIBSCN 85 /* .lib section in a.out corrupted */ 221# define ELIBSCN 85 /* .lib section in a.out corrupted */
221#endif 222#endif
222#if !defined(ELIBMAX) 223#if ! defined(ELIBMAX)
223# define ELIBMAX 86 /* Attempting to link in too many libs */ 224# define ELIBMAX 86 /* Attempting to link in too many libs */
224#endif 225#endif
225#if !defined(ELIBEXEC) 226#if ! defined(ELIBEXEC)
226# define ELIBEXEC 87 /* Attempting to exec a shared library */ 227# define ELIBEXEC 87 /* Attempting to exec a shared library */
227#endif 228#endif
228#if !defined(ENOSYS) 229#if ! defined(ENOSYS)
229# define ENOSYS 88 /* Function not implemented */ 230# define ENOSYS 88 /* Function not implemented */
230#endif 231#endif
231#if !defined(ENMFILE) 232#if ! defined(ENMFILE)
232# define ENMFILE 89 /* No more files */ 233# define ENMFILE 89 /* No more files */
233#endif 234#endif
234#if !defined(ENOTEMPTY) 235#if ! defined(ENOTEMPTY)
235# define ENOTEMPTY 90 /* Directory not empty */ 236# define ENOTEMPTY 90 /* Directory not empty */
236#endif 237#endif
237#if !defined(ENAMETOOLONG) 238#if ! defined(ENAMETOOLONG)
238# define ENAMETOOLONG 91 /* File or path name too long */ 239# define ENAMETOOLONG 91 /* File or path name too long */
239#endif 240#endif
240#if !defined(EPFNOSUPPORT) 241#if ! defined(EPFNOSUPPORT)
241# define EPFNOSUPPORT 96 /* Protocol family not supported */ 242# define EPFNOSUPPORT 96 /* Protocol family not supported */
242#endif 243#endif
243#if !defined(ENOSHARE) 244#if ! defined(ENOSHARE)
244# define ENOSHARE 97 /* No such host or network path */ 245# define ENOSHARE 97 /* No such host or network path */
245#endif 246#endif
246#if !defined(ENOMEDIUM) 247#if ! defined(ENOMEDIUM)
247# define ENOMEDIUM 98 /* No medium (in tape drive) */ 248# define ENOMEDIUM 98 /* No medium (in tape drive) */
248#endif 249#endif
249#if !defined(ESHUTDOWN) 250#if ! defined(ESHUTDOWN)
250# define ESHUTDOWN 99 /* Can't send after socket shutdown */ 251# define ESHUTDOWN 99 /* Can't send after socket shutdown */
251#endif 252#endif
252#if !defined(EADDRINUSE) 253#if ! defined(EADDRINUSE)
253# define EADDRINUSE 100 /* Address already in use */ 254# define EADDRINUSE 100 /* Address already in use */
254#endif 255#endif
255#if !defined(EADDRNOTAVAIL) 256#if ! defined(EADDRNOTAVAIL)
256# define EADDRNOTAVAIL 101 /* Address not available */ 257# define EADDRNOTAVAIL 101 /* Address not available */
257#endif 258#endif
258#if !defined(EAFNOSUPPORT) 259#if ! defined(EAFNOSUPPORT)
259# define EAFNOSUPPORT 102 /* Address family not supported by protocol family */ 260# define EAFNOSUPPORT 102 /* Address family not supported by protocol family */
260#endif 261#endif
261#if !defined(EALREADY) 262#if ! defined(EALREADY)
262# define EALREADY 103 /* Socket already connected */ 263# define EALREADY 103 /* Socket already connected */
263#endif 264#endif
264#if !defined(ECANCELED) 265#if ! defined(ECANCELED)
265# define ECANCELED 105 /* Connection cancelled */ 266# define ECANCELED 105 /* Connection cancelled */
266#endif 267#endif
267#if !defined(ECONNABORTED) 268#if ! defined(ECONNABORTED)
268# define ECONNABORTED 106 /* Connection aborted */ 269# define ECONNABORTED 106 /* Connection aborted */
269#endif 270#endif
270#if !defined(ECONNREFUSED) 271#if ! defined(ECONNREFUSED)
271# define ECONNREFUSED 107 /* Connection refused */ 272# define ECONNREFUSED 107 /* Connection refused */
272#endif 273#endif
273#if !defined(ECONNRESET) 274#if ! defined(ECONNRESET)
274# define ECONNRESET 108 /* Connection reset by peer */ 275# define ECONNRESET 108 /* Connection reset by peer */
275#endif 276#endif
276#if !defined(EDESTADDRREQ) 277#if ! defined(EDESTADDRREQ)
277# define EDESTADDRREQ 109 /* Destination address required */ 278# define EDESTADDRREQ 109 /* Destination address required */
278#endif 279#endif
279#if !defined(EHOSTUNREACH) 280#if ! defined(EHOSTUNREACH)
280# define EHOSTUNREACH 110 /* Host is unreachable */ 281# define EHOSTUNREACH 110 /* Host is unreachable */
281#endif 282#endif
282#if !defined(ECONNABORTED) 283#if ! defined(ECONNABORTED)
283# define ECONNABORTED 111 /* Connection aborted */ 284# define ECONNABORTED 111 /* Connection aborted */
284#endif 285#endif
285#if !defined(EINPROGRESS) 286#if ! defined(EINPROGRESS)
286# define EINPROGRESS 112 /* Connection already in progress */ 287# define EINPROGRESS 112 /* Connection already in progress */
287#endif 288#endif
288#if !defined(EISCONN) 289#if ! defined(EISCONN)
289# define EISCONN 113 /* Socket is already connected */ 290# define EISCONN 113 /* Socket is already connected */
290#endif 291#endif
291#if !defined(ELOOP) 292#if ! defined(ELOOP)
292# define ELOOP 114 /* Too many symbolic links */ 293# define ELOOP 114 /* Too many symbolic links */
293#endif 294#endif
294#if !defined(EMSGSIZE) 295#if ! defined(EMSGSIZE)
295# define EMSGSIZE 115 /* Message too long */ 296# define EMSGSIZE 115 /* Message too long */
296#endif 297#endif
297#if !defined(ENETDOWN) 298#if ! defined(ENETDOWN)
298# define ENETDOWN 116 /* Network interface is not configured */ 299# define ENETDOWN 116 /* Network interface is not configured */
299#endif 300#endif
300#if !defined(ENETRESET) 301#if ! defined(ENETRESET)
301# define ENETRESET 117 /* Connection aborted by network */ 302# define ENETRESET 117 /* Connection aborted by network */
302#endif 303#endif
303#if !defined(ENETUNREACH) 304#if ! defined(ENETUNREACH)
304# define ENETUNREACH 118 /* Network is unreachable */ 305# define ENETUNREACH 118 /* Network is unreachable */
305#endif 306#endif
306#if !defined(ENOBUFS) 307#if ! defined(ENOBUFS)
307# define ENOBUFS 119 /* No buffer space available */ 308# define ENOBUFS 119 /* No buffer space available */
308#endif 309#endif
309#if !defined(EHOSTDOWN) 310#if ! defined(EHOSTDOWN)
310# define EHOSTDOWN 120 /* Host is down */ 311# define EHOSTDOWN 120 /* Host is down */
311#endif 312#endif
312#if !defined(EPROCLIM) 313#if ! defined(EPROCLIM)
313# define EPROCLIM 121 /* Too many processes */ 314# define EPROCLIM 121 /* Too many processes */
314#endif 315#endif
315#if !defined(EDQUOT) 316#if ! defined(EDQUOT)
316# define EDQUOT 122 /* Disk quota exceeded */ 317# define EDQUOT 122 /* Disk quota exceeded */
317#endif 318#endif
318#if !defined(ENOPROTOOPT) 319#if ! defined(ENOPROTOOPT)
319# define ENOPROTOOPT 123 /* Protocol not available */ 320# define ENOPROTOOPT 123 /* Protocol not available */
320#endif 321#endif
321#if !defined(ESOCKTNOSUPPORT) 322#if ! defined(ESOCKTNOSUPPORT)
322# define ESOCKTNOSUPPORT 124 /* Socket type not supported */ 323# define ESOCKTNOSUPPORT 124 /* Socket type not supported */
323#endif 324#endif
324#if !defined(ESTALE) 325#if ! defined(ESTALE)
325# define ESTALE 125 /* Unknown error */ 326# define ESTALE 125 /* Unknown error */
326#endif 327#endif
327#if !defined(ENOTCONN) 328#if ! defined(ENOTCONN)
328# define ENOTCONN 126 /* Socket is not connected */ 329# define ENOTCONN 126 /* Socket is not connected */
329#endif 330#endif
330#if !defined(ETOOMANYREFS) 331#if ! defined(ETOOMANYREFS)
331# define ETOOMANYREFS 127 /* Too many references: cannot splice */ 332# define ETOOMANYREFS 127 /* Too many references: cannot splice */
332#endif 333#endif
333#if !defined(ENOTSOCK) 334#if ! defined(ENOTSOCK)
334# define ENOTSOCK 128 /* Socket operation on non-socket */ 335# define ENOTSOCK 128 /* Socket operation on non-socket */
335#endif 336#endif
336#if !defined(ENOTSUP) 337#if ! defined(ENOTSUP)
337# define ENOTSUP 129 /* Not supported */ 338# define ENOTSUP 129 /* Not supported */
338#endif 339#endif
339#if !defined(EOPNOTSUPP) 340#if ! defined(EOPNOTSUPP)
340# define EOPNOTSUPP 130 /* Operation not supported on transport endpoint */ 341# define EOPNOTSUPP 130 /* Operation not supported on transport endpoint */
341#endif 342#endif
342#if !defined(EUSERS) 343#if ! defined(EUSERS)
343# define EUSERS 131 /* Too many users */ 344# define EUSERS 131 /* Too many users */
344#endif 345#endif
345#if !defined(EOVERFLOW) 346#if ! defined(EOVERFLOW)
346# define EOVERFLOW 132 /* Value too large for defined data type */ 347# define EOVERFLOW 132 /* Value too large for defined data type */
347#endif 348#endif
348#if !defined(EOWNERDEAD) 349#if ! defined(EOWNERDEAD)
349# define EOWNERDEAD 133 /* Unknown error */ 350# define EOWNERDEAD 133 /* Unknown error */
350#endif 351#endif
351#if !defined(EPROTO) 352#if ! defined(EPROTO)
352# define EPROTO 134 /* Protocol error */ 353# define EPROTO 134 /* Protocol error */
353#endif 354#endif
354#if !defined(EPROTONOSUPPORT) 355#if ! defined(EPROTONOSUPPORT)
355# define EPROTONOSUPPORT 135 /* Unknown protocol */ 356# define EPROTONOSUPPORT 135 /* Unknown protocol */
356#endif 357#endif
357#if !defined(EPROTOTYPE) 358#if ! defined(EPROTOTYPE)
358# define EPROTOTYPE 136 /* Protocol wrong type for socket */ 359# define EPROTOTYPE 136 /* Protocol wrong type for socket */
359#endif 360#endif
360#if !defined(ECASECLASH) 361#if ! defined(ECASECLASH)
361# define ECASECLASH 137 /* Filename exists with different case */ 362# define ECASECLASH 137 /* Filename exists with different case */
362#endif 363#endif
363#if !defined(ETIMEDOUT) 364#if ! defined(ETIMEDOUT)
364/* Make sure it's the same as WSATIMEDOUT */ 365/* Make sure it's the same as WSATIMEDOUT */
365# define ETIMEDOUT 138 /* Connection timed out */ 366# define ETIMEDOUT 138 /* Connection timed out */
366#endif 367#endif
367#if !defined(EWOULDBLOCK) || EWOULDBLOCK == 140 368#if ! defined(EWOULDBLOCK) || EWOULDBLOCK == 140
368# undef EWOULDBLOCK /* MinGW-w64 defines it as 140, but we want it as EAGAIN */ 369# undef EWOULDBLOCK /* MinGW-w64 defines it as 140, but we want it as EAGAIN */
369# define EWOULDBLOCK EAGAIN /* Operation would block */ 370# define EWOULDBLOCK EAGAIN /* Operation would block */
370#endif 371#endif
371 372
372#undef HOST_NOT_FOUND 373#undef HOST_NOT_FOUND
@@ -384,7 +385,7 @@ enum
384#define MAP_PRIVATE 0x2 /* unsupported */ 385#define MAP_PRIVATE 0x2 /* unsupported */
385#define MAP_FIXED 0x10 386#define MAP_FIXED 0x10
386#define MAP_ANONYMOUS 0x20 /* unsupported */ 387#define MAP_ANONYMOUS 0x20 /* unsupported */
387#define MAP_FAILED ((void *)-1) 388#define MAP_FAILED ((void *) -1)
388 389
389#define MS_ASYNC 1 /* sync memory asynchronously */ 390#define MS_ASYNC 1 /* sync memory asynchronously */
390#define MS_INVALIDATE 2 /* invalidate the caches */ 391#define MS_INVALIDATE 2 /* invalidate the caches */
@@ -403,7 +404,7 @@ struct statfs
403 long f_namelen; /* maximum length of filenames */ 404 long f_namelen; /* maximum length of filenames */
404 long f_spare[6]; /* spare for later */ 405 long f_spare[6]; /* spare for later */
405}; 406};
406#define sleep(secs) (Sleep(secs * 1000)) 407#define sleep(secs) (Sleep (secs * 1000))
407 408
408/*********************** statfs *****************************/ 409/*********************** statfs *****************************/
409/* fake block size */ 410/* fake block size */
@@ -466,159 +467,265 @@ struct statfs
466#define SIGKILL 9 467#define SIGKILL 9
467#define SIGTERM 15 468#define SIGTERM 15
468 469
469#define SetErrnoFromWinError(e) _SetErrnoFromWinError(e, __FILE__, __LINE__) 470#define SetErrnoFromWinError(e) _SetErrnoFromWinError (e, __FILE__, __LINE__)
471
472BOOL _plibc_CreateShortcut (const char *pszSrc, const char *pszDest);
473
474BOOL _plibc_CreateShortcutW (const wchar_t *pwszSrc, const wchar_t *pwszDest);
475
476BOOL _plibc_DereferenceShortcut (char *pszShortcut);
477
478BOOL _plibc_DereferenceShortcutW (wchar_t *pwszShortcut);
479
480char *plibc_ChooseDir (char *pszTitle, unsigned long ulFlags);
481
482wchar_t *plibc_ChooseDirW (wchar_t *pwszTitle, unsigned long ulFlags);
483
484char *plibc_ChooseFile (char *pszTitle, unsigned long ulFlags);
485
486wchar_t *plibc_ChooseFileW (wchar_t *pwszTitle, unsigned long ulFlags);
487
488long QueryRegistry (HKEY hMainKey, const char *pszKey, const char *pszSubKey,
489 char *pszBuffer, long *pdLength);
490
491long QueryRegistryW (HKEY hMainKey, const wchar_t *pszKey, const
492 wchar_t *pszSubKey,
493 wchar_t *pszBuffer, long *pdLength);
494
495BOOL __win_IsHandleMarkedAsBlocking (int hHandle);
496
497void __win_SetHandleBlockingMode (int s, BOOL bBlocking);
498
499void __win_DiscardHandleBlockingMode (int s);
500
501int _win_isSocketValid (int s);
470 502
471BOOL _plibc_CreateShortcut(const char *pszSrc, const char *pszDest); 503int plibc_conv_to_win_path (const char *pszUnix, char *pszWindows);
472BOOL _plibc_CreateShortcutW(const wchar_t *pwszSrc, const wchar_t *pwszDest);
473BOOL _plibc_DereferenceShortcut(char *pszShortcut);
474BOOL _plibc_DereferenceShortcutW(wchar_t *pwszShortcut);
475char *plibc_ChooseDir(char *pszTitle, unsigned long ulFlags);
476wchar_t *plibc_ChooseDirW(wchar_t *pwszTitle, unsigned long ulFlags);
477char *plibc_ChooseFile(char *pszTitle, unsigned long ulFlags);
478wchar_t *plibc_ChooseFileW(wchar_t *pwszTitle, unsigned long ulFlags);
479 504
480long QueryRegistry(HKEY hMainKey, const char *pszKey, const char *pszSubKey, 505int plibc_conv_to_win_pathw (const wchar_t *pszUnix, wchar_t *pwszWindows);
481 char *pszBuffer, long *pdLength);
482long QueryRegistryW(HKEY hMainKey, const wchar_t *pszKey, const wchar_t *pszSubKey,
483 wchar_t *pszBuffer, long *pdLength);
484 506
485BOOL __win_IsHandleMarkedAsBlocking(int hHandle); 507int plibc_conv_to_win_pathwconv (const char *pszUnix, wchar_t *pwszWindows);
486void __win_SetHandleBlockingMode(int s, BOOL bBlocking);
487void __win_DiscardHandleBlockingMode(int s);
488int _win_isSocketValid(int s);
489int plibc_conv_to_win_path(const char *pszUnix, char *pszWindows);
490int plibc_conv_to_win_pathw(const wchar_t *pszUnix, wchar_t *pwszWindows);
491 508
492int plibc_conv_to_win_pathwconv(const char *pszUnix, wchar_t *pwszWindows); 509int plibc_conv_to_win_pathwconv_ex (const char *pszUnix, wchar_t *pszWindows,
493int plibc_conv_to_win_pathwconv_ex(const char *pszUnix, wchar_t *pszWindows, int derefLinks); 510 int derefLinks);
494 511
495unsigned plibc_get_handle_count(); 512unsigned plibc_get_handle_count ();
496 513
497typedef void (*TPanicProc) (int, char *); 514typedef void (*TPanicProc) (int, char *);
498void plibc_set_panic_proc(TPanicProc proc); 515void plibc_set_panic_proc (TPanicProc proc);
499void plibc_set_stat_size_size(int iLength); 516
500void plibc_set_stat_time_size(int iLength); 517void plibc_set_stat_size_size (int iLength);
501 518
502int flock(int fd, int operation); 519void plibc_set_stat_time_size (int iLength);
503int fsync(int fildes); 520
504int inet_pton(int af, const char *src, void *dst); 521int flock (int fd, int operation);
505int inet_pton4(const char *src, u_char *dst, int pton); 522
523int fsync (int fildes);
524
525int inet_pton (int af, const char *src, void *dst);
526
527int inet_pton4 (const char *src, u_char *dst, int pton);
528
506#if USE_IPV6 529#if USE_IPV6
507int inet_pton6(const char *src, u_char *dst); 530int inet_pton6 (const char *src, u_char *dst);
531
508#endif 532#endif
509int statfs(const char *path, struct statfs *buf); 533int statfs (const char *path, struct statfs *buf);
510const char *hstrerror(int err); 534
511int mkstemp(char *tmplate); 535const char *hstrerror (int err);
536
537int mkstemp (char *tmplate);
538
512char *strptime (const char *buf, const char *format, struct tm *tm); 539char *strptime (const char *buf, const char *format, struct tm *tm);
513const char *inet_ntop(int af, const void *src, char *dst, size_t size); 540
541const char *inet_ntop (int af, const void *src, char *dst, size_t size);
542
514#ifndef gmtime_r 543#ifndef gmtime_r
515struct tm *gmtime_r(const time_t *clock, struct tm *result); 544struct tm *gmtime_r (const time_t *clock, struct tm *result);
516#endif 545
517 546#endif
518int plibc_init(char *pszOrg, char *pszApp); 547
519int plibc_init_utf8(char *pszOrg, char *pszApp, int utf8_mode); 548int plibc_init (char *pszOrg, char *pszApp);
520void plibc_shutdown(); 549
521int plibc_initialized(); 550int plibc_init_utf8 (char *pszOrg, char *pszApp, int utf8_mode);
522 551
523void _SetErrnoFromWinError(long lWinError, char *pszCaller, int iLine); 552void plibc_shutdown ();
524void SetErrnoFromWinsockError(long lWinError); 553
525void SetHErrnoFromWinError(long lWinError); 554int plibc_initialized ();
526void SetErrnoFromHRESULT(HRESULT hRes); 555
527int GetErrnoFromWinsockError(long lWinError); 556void _SetErrnoFromWinError (long lWinError, char *pszCaller, int iLine);
528FILE *_win_fopen(const char *filename, const char *mode); 557
529int _win_fclose(FILE *); 558void SetErrnoFromWinsockError (long lWinError);
530DIR *_win_opendir(const char *dirname); 559
531struct dirent *_win_readdir(DIR *dirp); 560void SetHErrnoFromWinError (long lWinError);
532int _win_closedir(DIR *dirp); 561
533int _win_open(const char *filename, int oflag, ...); 562void SetErrnoFromHRESULT (HRESULT hRes);
563
564int GetErrnoFromWinsockError (long lWinError);
565
566FILE *_win_fopen (const char *filename, const char *mode);
567
568int _win_fclose (FILE *);
569
570DIR *_win_opendir (const char *dirname);
571
572struct dirent *_win_readdir (DIR *dirp);
573
574int _win_closedir (DIR *dirp);
575
576int _win_open (const char *filename, int oflag, ...);
577
534#ifdef ENABLE_NLS 578#ifdef ENABLE_NLS
535char *_win_bindtextdomain(const char *domainname, const char *dirname); 579char *_win_bindtextdomain (const char *domainname, const char *dirname);
536#endif 580
537int _win_chdir(const char *path); 581#endif
538int _win_close(int fd); 582int _win_chdir (const char *path);
539int _win_creat(const char *path, mode_t mode); 583
540char *_win_ctime(const time_t *clock); 584int _win_close (int fd);
541char *_win_ctime_r(const time_t *clock, char *buf); 585
542int _win_fstat(int handle, struct stat *buffer); 586int _win_creat (const char *path, mode_t mode);
543int _win_ftruncate(int fildes, off_t length); 587
544int _win_truncate(const char *fname, int distance); 588char *_win_ctime (const time_t *clock);
545int _win_kill(pid_t pid, int sig); 589
546int _win_pipe(int *phandles); 590char *_win_ctime_r (const time_t *clock, char *buf);
547int _win_mkfifo(const char *path, mode_t mode); 591
548int _win_rmdir(const char *path); 592int _win_fstat (int handle, struct stat *buffer);
549int _win_access( const char *path, int mode ); 593
550int _win_chmod(const char *filename, int pmode); 594int _win_ftruncate (int fildes, off_t length);
551char *realpath(const char *file_name, char *resolved_name); 595
552long _win_random(void); 596int _win_truncate (const char *fname, int distance);
553void _win_srandom(unsigned int seed); 597
554int _win_remove(const char *path); 598int _win_kill (pid_t pid, int sig);
555int _win_rename(const char *oldname, const char *newname); 599
556int _win_stat(const char *path, struct stat *buffer); 600int _win_pipe (int *phandles);
557int _win_stati64(const char *path, struct _stati64 *buffer); 601
558long _win_sysconf(int name); 602int _win_mkfifo (const char *path, mode_t mode);
559int _win_unlink(const char *filename); 603
560int _win_write(int fildes, const void *buf, size_t nbyte); 604int _win_rmdir (const char *path);
561int _win_read(int fildes, void *buf, size_t nbyte); 605
562size_t _win_fwrite(const void *buffer, size_t size, size_t count, FILE *stream); 606int _win_access (const char *path, int mode);
563size_t _win_fread( void *buffer, size_t size, size_t count, FILE *stream ); 607
564int _win_symlink(const char *path1, const char *path2); 608int _win_chmod (const char *filename, int pmode);
565void *_win_mmap(void *start, size_t len, int access, int flags, int fd, 609
566 unsigned long long offset); 610char *realpath (const char *file_name, char *resolved_name);
567int _win_msync(void *start, size_t length, int flags); 611
568int _win_munmap(void *start, size_t length); 612long _win_random (void);
569int _win_lstat(const char *path, struct stat *buf); 613
570int _win_lstati64(const char *path, struct _stati64 *buf); 614void _win_srandom (unsigned int seed);
571int _win_readlink(const char *path, char *buf, size_t bufsize); 615
572int _win_accept(int s, struct sockaddr *addr, int *addrlen); 616int _win_remove (const char *path);
573 617
574pid_t _win_waitpid(pid_t pid, int *stat_loc, int options); 618int _win_rename (const char *oldname, const char *newname);
575int _win_bind(int s, const struct sockaddr *name, int namelen); 619
576int _win_connect(int s,const struct sockaddr *name, int namelen); 620int _win_stat (const char *path, struct stat *buffer);
577int _win_getpeername(int s, struct sockaddr *name, 621
578 int *namelen); 622int _win_stati64 (const char *path, struct _stati64 *buffer);
579int _win_getsockname(int s, struct sockaddr *name, 623
580 int *namelen); 624long _win_sysconf (int name);
581int _win_getsockopt(int s, int level, int optname, char *optval, 625
582 int *optlen); 626int _win_unlink (const char *filename);
583int _win_listen(int s, int backlog); 627
584int _win_recv(int s, char *buf, int len, int flags); 628int _win_write (int fildes, const void *buf, size_t nbyte);
585int _win_recvfrom(int s, void *buf, int len, int flags, 629
586 struct sockaddr *from, int *fromlen); 630int _win_read (int fildes, void *buf, size_t nbyte);
587int _win_select(int max_fd, fd_set * rfds, fd_set * wfds, fd_set * efds, 631
588 const struct timeval *tv); 632size_t _win_fwrite (const void *buffer, size_t size, size_t count,
589int _win_send(int s, const char *buf, int len, int flags); 633 FILE *stream);
590int _win_sendto(int s, const char *buf, int len, int flags, 634
591 const struct sockaddr *to, int tolen); 635size_t _win_fread (void *buffer, size_t size, size_t count, FILE *stream);
592int _win_setsockopt(int s, int level, int optname, const void *optval, 636
593 int optlen); 637int _win_symlink (const char *path1, const char *path2);
594int _win_shutdown(int s, int how); 638
595int _win_socket(int af, int type, int protocol); 639void *_win_mmap (void *start, size_t len, int access, int flags, int fd,
596int _win_socketpair(int af, int type, int protocol, int socket_vector[2]); 640 unsigned long long offset);
597struct hostent *_win_gethostbyaddr(const char *addr, int len, int type); 641
598struct hostent *_win_gethostbyname(const char *name); 642int _win_msync (void *start, size_t length, int flags);
599struct hostent *gethostbyname2(const char *name, int af); 643
600char *_win_strerror(int errnum); 644int _win_munmap (void *start, size_t length);
601int IsWinNT(); 645
602char *index(const char *s, int c); 646int _win_lstat (const char *path, struct stat *buf);
647
648int _win_lstati64 (const char *path, struct _stati64 *buf);
649
650int _win_readlink (const char *path, char *buf, size_t bufsize);
651
652int _win_accept (int s, struct sockaddr *addr, int *addrlen);
653
654pid_t _win_waitpid (pid_t pid, int *stat_loc, int options);
655
656int _win_bind (int s, const struct sockaddr *name, int namelen);
657
658int _win_connect (int s,const struct sockaddr *name, int namelen);
659
660int _win_getpeername (int s, struct sockaddr *name,
661 int *namelen);
662
663int _win_getsockname (int s, struct sockaddr *name,
664 int *namelen);
665
666int _win_getsockopt (int s, int level, int optname, char *optval,
667 int *optlen);
668
669int _win_listen (int s, int backlog);
670
671int _win_recv (int s, char *buf, int len, int flags);
672
673int _win_recvfrom (int s, void *buf, int len, int flags,
674 struct sockaddr *from, int *fromlen);
675
676int _win_select (int max_fd, fd_set *rfds, fd_set *wfds, fd_set *efds,
677 const struct timeval *tv);
678
679int _win_send (int s, const char *buf, int len, int flags);
680
681int _win_sendto (int s, const char *buf, int len, int flags,
682 const struct sockaddr *to, int tolen);
683
684int _win_setsockopt (int s, int level, int optname, const void *optval,
685 int optlen);
686
687int _win_shutdown (int s, int how);
688
689int _win_socket (int af, int type, int protocol);
690
691int _win_socketpair (int af, int type, int protocol, int socket_vector[2]);
692
693struct hostent *_win_gethostbyaddr (const char *addr, int len, int type);
694
695struct hostent *_win_gethostbyname (const char *name);
696
697struct hostent *gethostbyname2 (const char *name, int af);
698
699char *_win_strerror (int errnum);
700
701int IsWinNT ();
702
703char *index (const char *s, int c);
704
603char *_win_strtok_r (char *ptr, const char *sep, char **end); 705char *_win_strtok_r (char *ptr, const char *sep, char **end);
604 706
605#if !HAVE_STRNDUP 707#if ! HAVE_STRNDUP
606char *strndup (const char *s, size_t n); 708char *strndup (const char *s, size_t n);
709
607#endif 710#endif
608#if !HAVE_STRNLEN && (!defined(__MINGW64_VERSION_MAJOR) || !defined(_INC_STRING)) 711#if ! HAVE_STRNLEN && (! defined(__MINGW64_VERSION_MAJOR) || \
712 ! defined(_INC_STRING))
609size_t strnlen (const char *str, size_t maxlen); 713size_t strnlen (const char *str, size_t maxlen);
714
610#endif 715#endif
611char *stpcpy(char *dest, const char *src); 716char *stpcpy (char *dest, const char *src);
612char *strcasestr(const char *haystack_start, const char *needle_start); 717
718char *strcasestr (const char *haystack_start, const char *needle_start);
719
613#ifndef __MINGW64_VERSION_MAJOR 720#ifndef __MINGW64_VERSION_MAJOR
614#define strcasecmp(a, b) stricmp(a, b) 721#define strcasecmp(a, b) stricmp (a, b)
615#define strncasecmp(a, b, c) strnicmp(a, b, c) 722#define strncasecmp(a, b, c) strnicmp (a, b, c)
616#endif 723#endif
617#ifndef wcscasecmp 724#ifndef wcscasecmp
618#define wcscasecmp(a, b) wcsicmp(a, b) 725#define wcscasecmp(a, b) wcsicmp (a, b)
619#endif 726#endif
620#ifndef wcsncasecmp 727#ifndef wcsncasecmp
621#define wcsncasecmp(a, b, c) wcsnicmp(a, b, c) 728#define wcsncasecmp(a, b, c) wcsnicmp (a, b, c)
622#endif 729#endif
623#ifndef strtok_r /* winpthreads defines it in pthread.h */ 730#ifndef strtok_r /* winpthreads defines it in pthread.h */
624#define strtok_r _win_strtok_r 731#define strtok_r _win_strtok_r
@@ -633,99 +740,99 @@ char *strcasestr(const char *haystack_start, const char *needle_start);
633 #define NEWLINE "\n" 740 #define NEWLINE "\n"
634 741
635#ifdef ENABLE_NLS 742#ifdef ENABLE_NLS
636 #define BINDTEXTDOMAIN(d, n) bindtextdomain(d, n) 743 #define BINDTEXTDOMAIN(d, n) bindtextdomain (d, n)
637#endif 744#endif
638 #define CREAT(p, m) creat(p, m) 745 #define CREAT(p, m) creat (p, m)
639 #define PLIBC_CTIME(c) ctime(c) 746 #define PLIBC_CTIME(c) ctime (c)
640 #define CTIME_R(c, b) ctime_r(c, b) 747 #define CTIME_R(c, b) ctime_r (c, b)
641 #undef FOPEN 748 #undef FOPEN
642 #define FOPEN(f, m) fopen(f, m) 749 #define FOPEN(f, m) fopen (f, m)
643 #define FCLOSE(f) fclose(f) 750 #define FCLOSE(f) fclose (f)
644 #define FTRUNCATE(f, l) ftruncate(f, l) 751 #define FTRUNCATE(f, l) ftruncate (f, l)
645 #define TRUNCATE(f, l) truncate(f, l) 752 #define TRUNCATE(f, l) truncate (f, l)
646 #define OPENDIR(d) opendir(d) 753 #define OPENDIR(d) opendir (d)
647 #define CLOSEDIR(d) closedir(d) 754 #define CLOSEDIR(d) closedir (d)
648 #define READDIR(d) readdir(d) 755 #define READDIR(d) readdir (d)
649 #define OPEN open 756 #define OPEN open
650 #define CHDIR(d) chdir(d) 757 #define CHDIR(d) chdir (d)
651 #define CLOSE(f) close(f) 758 #define CLOSE(f) close (f)
652 #define LSEEK(f, o, w) lseek(f, o, w) 759 #define LSEEK(f, o, w) lseek (f, o, w)
653 #define RMDIR(f) rmdir(f) 760 #define RMDIR(f) rmdir (f)
654 #define ACCESS(p, m) access(p, m) 761 #define ACCESS(p, m) access (p, m)
655 #define CHMOD(f, p) chmod(f, p) 762 #define CHMOD(f, p) chmod (f, p)
656 #define FSTAT(h, b) fstat(h, b) 763 #define FSTAT(h, b) fstat (h, b)
657 #define PLIBC_KILL(p, s) kill(p, s) 764 #define PLIBC_KILL(p, s) kill (p, s)
658 #define PIPE(h) pipe(h) 765 #define PIPE(h) pipe (h)
659 #define REMOVE(p) remove(p) 766 #define REMOVE(p) remove (p)
660 #define RENAME(o, n) rename(o, n) 767 #define RENAME(o, n) rename (o, n)
661 #define STAT(p, b) stat(p, b) 768 #define STAT(p, b) stat (p, b)
662 #define STAT64(p, b) stat64(p, b) 769 #define STAT64(p, b) stat64 (p, b)
663 #define SYSCONF(n) sysconf(n) 770 #define SYSCONF(n) sysconf (n)
664 #define UNLINK(f) unlink(f) 771 #define UNLINK(f) unlink (f)
665 #define WRITE(f, b, n) write(f, b, n) 772 #define WRITE(f, b, n) write (f, b, n)
666 #define READ(f, b, n) read(f, b, n) 773 #define READ(f, b, n) read (f, b, n)
667 #define GN_FREAD(b, s, c, f) fread(b, s, c, f) 774 #define GN_FREAD(b, s, c, f) fread (b, s, c, f)
668 #define GN_FWRITE(b, s, c, f) fwrite(b, s, c, f) 775 #define GN_FWRITE(b, s, c, f) fwrite (b, s, c, f)
669 #define SYMLINK(a, b) symlink(a, b) 776 #define SYMLINK(a, b) symlink (a, b)
670 #define MMAP(s, l, p, f, d, o) mmap(s, l, p, f, d, o) 777 #define MMAP(s, l, p, f, d, o) mmap (s, l, p, f, d, o)
671 #define MKFIFO(p, m) mkfifo(p, m) 778 #define MKFIFO(p, m) mkfifo (p, m)
672 #define MSYNC(s, l, f) msync(s, l, f) 779 #define MSYNC(s, l, f) msync (s, l, f)
673 #define MUNMAP(s, l) munmap(s, l) 780 #define MUNMAP(s, l) munmap (s, l)
674 #define STRERROR(i) strerror(i) 781 #define STRERROR(i) strerror (i)
675 #define RANDOM() random() 782 #define RANDOM() random ()
676 #define SRANDOM(s) srandom(s) 783 #define SRANDOM(s) srandom (s)
677 #define READLINK(p, b, s) readlink(p, b, s) 784 #define READLINK(p, b, s) readlink (p, b, s)
678 #define LSTAT(p, b) lstat(p, b) 785 #define LSTAT(p, b) lstat (p, b)
679 #define LSTAT64(p, b) lstat64(p, b) 786 #define LSTAT64(p, b) lstat64 (p, b)
680 #define PRINTF printf 787 #define PRINTF printf
681 #define FPRINTF fprintf 788 #define FPRINTF fprintf
682 #define VPRINTF(f, a) vprintf(f, a) 789 #define VPRINTF(f, a) vprintf (f, a)
683 #define VFPRINTF(s, f, a) vfprintf(s, f, a) 790 #define VFPRINTF(s, f, a) vfprintf (s, f, a)
684 #define VSPRINTF(d, f, a) vsprintf(d, f, a) 791 #define VSPRINTF(d, f, a) vsprintf (d, f, a)
685 #define VSNPRINTF(str, size, fmt, a) vsnprintf(str, size, fmt, a) 792 #define VSNPRINTF(str, size, fmt, a) vsnprintf (str, size, fmt, a)
686 #define _REAL_SNPRINTF snprintf 793 #define _REAL_SNPRINTF snprintf
687 #define SPRINTF sprintf 794 #define SPRINTF sprintf
688 #define VSSCANF(s, f, a) vsscanf(s, f, a) 795 #define VSSCANF(s, f, a) vsscanf (s, f, a)
689 #define SSCANF sscanf 796 #define SSCANF sscanf
690 #define VFSCANF(s, f, a) vfscanf(s, f, a) 797 #define VFSCANF(s, f, a) vfscanf (s, f, a)
691 #define VSCANF(f, a) vscanf(f, a) 798 #define VSCANF(f, a) vscanf (f, a)
692 #define SCANF scanf 799 #define SCANF scanf
693 #define FSCANF fscanf 800 #define FSCANF fscanf
694 #define WAITPID(p, s, o) waitpid(p, s, o) 801 #define WAITPID(p, s, o) waitpid (p, s, o)
695 #define ACCEPT(s, a, l) accept(s, a, l) 802 #define ACCEPT(s, a, l) accept (s, a, l)
696 #define BIND(s, n, l) bind(s, n, l) 803 #define BIND(s, n, l) bind (s, n, l)
697 #define CONNECT(s, n, l) connect(s, n, l) 804 #define CONNECT(s, n, l) connect (s, n, l)
698 #define GETPEERNAME(s, n, l) getpeername(s, n, l) 805 #define GETPEERNAME(s, n, l) getpeername (s, n, l)
699 #define GETSOCKNAME(s, n, l) getsockname(s, n, l) 806 #define GETSOCKNAME(s, n, l) getsockname (s, n, l)
700 #define GETSOCKOPT(s, l, o, v, p) getsockopt(s, l, o, v, p) 807 #define GETSOCKOPT(s, l, o, v, p) getsockopt (s, l, o, v, p)
701 #define LISTEN(s, b) listen(s, b) 808 #define LISTEN(s, b) listen (s, b)
702 #define RECV(s, b, l, f) recv(s, b, l, f) 809 #define RECV(s, b, l, f) recv (s, b, l, f)
703 #define RECVFROM(s, b, l, f, r, o) recvfrom(s, b, l, f, r, o) 810 #define RECVFROM(s, b, l, f, r, o) recvfrom (s, b, l, f, r, o)
704 #define SELECT(n, r, w, e, t) select(n, r, w, e, t) 811 #define SELECT(n, r, w, e, t) select (n, r, w, e, t)
705 #define SEND(s, b, l, f) send(s, b, l, f) 812 #define SEND(s, b, l, f) send (s, b, l, f)
706 #define SENDTO(s, b, l, f, o, n) sendto(s, b, l, f, o, n) 813 #define SENDTO(s, b, l, f, o, n) sendto (s, b, l, f, o, n)
707 #define SETSOCKOPT(s, l, o, v, n) setsockopt(s, l, o, v, n) 814 #define SETSOCKOPT(s, l, o, v, n) setsockopt (s, l, o, v, n)
708 #define SHUTDOWN(s, h) shutdown(s, h) 815 #define SHUTDOWN(s, h) shutdown (s, h)
709 #define SOCKET(a, t, p) socket(a, t, p) 816 #define SOCKET(a, t, p) socket (a, t, p)
710 #define SOCKETPAIR(a, t, p, v) socketpair(a, t, p, v) 817 #define SOCKETPAIR(a, t, p, v) socketpair (a, t, p, v)
711 #define GETHOSTBYADDR(a, l, t) gethostbyaddr(a, l, t) 818 #define GETHOSTBYADDR(a, l, t) gethostbyaddr (a, l, t)
712 #define GETHOSTBYNAME(n) gethostbyname(n) 819 #define GETHOSTBYNAME(n) gethostbyname (n)
713 #define GETTIMEOFDAY(t, n) gettimeofday(t, n) 820 #define GETTIMEOFDAY(t, n) gettimeofday (t, n)
714 #define INSQUE(e, p) insque(e, p) 821 #define INSQUE(e, p) insque (e, p)
715 #define REMQUE(e) remque(e) 822 #define REMQUE(e) remque (e)
716 #define HSEARCH(i, a) hsearch(i, a) 823 #define HSEARCH(i, a) hsearch (i, a)
717 #define HCREATE(n) hcreate(n) 824 #define HCREATE(n) hcreate (n)
718 #define HDESTROY() hdestroy() 825 #define HDESTROY() hdestroy ()
719 #define HSEARCH_R(i, a, r, h) hsearch_r(i, a, r, h) 826 #define HSEARCH_R(i, a, r, h) hsearch_r (i, a, r, h)
720 #define HCREATE_R(n, h) hcreate_r(n, h) 827 #define HCREATE_R(n, h) hcreate_r (n, h)
721 #define HDESTROY_R(h) hdestroy_r(h) 828 #define HDESTROY_R(h) hdestroy_r (h)
722 #define TSEARCH(k, r, c) tsearch(k, r, c) 829 #define TSEARCH(k, r, c) tsearch (k, r, c)
723 #define TFIND(k, r, c) tfind(k, r, c) 830 #define TFIND(k, r, c) tfind (k, r, c)
724 #define TDELETE(k, r, c) tdelete(k, r, c) 831 #define TDELETE(k, r, c) tdelete (k, r, c)
725 #define TWALK(r, a) twalk(r, a) 832 #define TWALK(r, a) twalk (r, a)
726 #define TDESTROY(r, f) tdestroy(r, f) 833 #define TDESTROY(r, f) tdestroy (r, f)
727 #define LFIND(k, b, n, s, c) lfind(k, b, n, s, c) 834 #define LFIND(k, b, n, s, c) lfind (k, b, n, s, c)
728 #define LSEARCH(k, b, n, s, c) lsearch(k, b, n, s, c) 835 #define LSEARCH(k, b, n, s, c) lsearch (k, b, n, s, c)
729 #define STRUCT_STAT64 struct stat64 836 #define STRUCT_STAT64 struct stat64
730#else 837#else
731 #define DIR_SEPARATOR '\\' 838 #define DIR_SEPARATOR '\\'
@@ -735,98 +842,98 @@ char *strcasestr(const char *haystack_start, const char *needle_start);
735 #define NEWLINE "\r\n" 842 #define NEWLINE "\r\n"
736 843
737#ifdef ENABLE_NLS 844#ifdef ENABLE_NLS
738 #define BINDTEXTDOMAIN(d, n) _win_bindtextdomain(d, n) 845 #define BINDTEXTDOMAIN(d, n) _win_bindtextdomain (d, n)
739#endif 846#endif
740 #define CREAT(p, m) _win_creat(p, m) 847 #define CREAT(p, m) _win_creat (p, m)
741 #define PLIBC_CTIME(c) _win_ctime(c) 848 #define PLIBC_CTIME(c) _win_ctime (c)
742 #define CTIME_R(c, b) _win_ctime_r(c, b) 849 #define CTIME_R(c, b) _win_ctime_r (c, b)
743 #define FOPEN(f, m) _win_fopen(f, m) 850 #define FOPEN(f, m) _win_fopen (f, m)
744 #define FCLOSE(f) _win_fclose(f) 851 #define FCLOSE(f) _win_fclose (f)
745 #define FTRUNCATE(f, l) _win_ftruncate(f, l) 852 #define FTRUNCATE(f, l) _win_ftruncate (f, l)
746 #define TRUNCATE(f, l) _win_truncate(f, l) 853 #define TRUNCATE(f, l) _win_truncate (f, l)
747 #define OPENDIR(d) _win_opendir(d) 854 #define OPENDIR(d) _win_opendir (d)
748 #define CLOSEDIR(d) _win_closedir(d) 855 #define CLOSEDIR(d) _win_closedir (d)
749 #define READDIR(d) _win_readdir(d) 856 #define READDIR(d) _win_readdir (d)
750 #define OPEN _win_open 857 #define OPEN _win_open
751 #define CHDIR(d) _win_chdir(d) 858 #define CHDIR(d) _win_chdir (d)
752 #define CLOSE(f) _win_close(f) 859 #define CLOSE(f) _win_close (f)
753 #define PLIBC_KILL(p, s) _win_kill(p, s) 860 #define PLIBC_KILL(p, s) _win_kill (p, s)
754 #define LSEEK(f, o, w) lseek(f, o, w) 861 #define LSEEK(f, o, w) lseek (f, o, w)
755 #define FSTAT(h, b) _win_fstat(h, b) 862 #define FSTAT(h, b) _win_fstat (h, b)
756 #define RMDIR(f) _win_rmdir(f) 863 #define RMDIR(f) _win_rmdir (f)
757 #define ACCESS(p, m) _win_access(p, m) 864 #define ACCESS(p, m) _win_access (p, m)
758 #define CHMOD(f, p) _win_chmod(f, p) 865 #define CHMOD(f, p) _win_chmod (f, p)
759 #define PIPE(h) _win_pipe(h) 866 #define PIPE(h) _win_pipe (h)
760 #define RANDOM() _win_random() 867 #define RANDOM() _win_random ()
761 #define SRANDOM(s) _win_srandom(s) 868 #define SRANDOM(s) _win_srandom (s)
762 #define REMOVE(p) _win_remove(p) 869 #define REMOVE(p) _win_remove (p)
763 #define RENAME(o, n) _win_rename(o, n) 870 #define RENAME(o, n) _win_rename (o, n)
764 #define STAT(p, b) _win_stat(p, b) 871 #define STAT(p, b) _win_stat (p, b)
765 #define STAT64(p, b) _win_stati64(p, b) 872 #define STAT64(p, b) _win_stati64 (p, b)
766 #define SYSCONF(n) _win_sysconf(n) 873 #define SYSCONF(n) _win_sysconf (n)
767 #define UNLINK(f) _win_unlink(f) 874 #define UNLINK(f) _win_unlink (f)
768 #define WRITE(f, b, n) _win_write(f, b, n) 875 #define WRITE(f, b, n) _win_write (f, b, n)
769 #define READ(f, b, n) _win_read(f, b, n) 876 #define READ(f, b, n) _win_read (f, b, n)
770 #define GN_FREAD(b, s, c, f) _win_fread(b, s, c, f) 877 #define GN_FREAD(b, s, c, f) _win_fread (b, s, c, f)
771 #define GN_FWRITE(b, s, c, f) _win_fwrite(b, s, c, f) 878 #define GN_FWRITE(b, s, c, f) _win_fwrite (b, s, c, f)
772 #define SYMLINK(a, b) _win_symlink(a, b) 879 #define SYMLINK(a, b) _win_symlink (a, b)
773 #define MMAP(s, l, p, f, d, o) _win_mmap(s, l, p, f, d, o) 880 #define MMAP(s, l, p, f, d, o) _win_mmap (s, l, p, f, d, o)
774 #define MKFIFO(p, m) _win_mkfifo(p, m) 881 #define MKFIFO(p, m) _win_mkfifo (p, m)
775 #define MSYNC(s, l, f) _win_msync(s, l, f) 882 #define MSYNC(s, l, f) _win_msync (s, l, f)
776 #define MUNMAP(s, l) _win_munmap(s, l) 883 #define MUNMAP(s, l) _win_munmap (s, l)
777 #define STRERROR(i) _win_strerror(i) 884 #define STRERROR(i) _win_strerror (i)
778 #define READLINK(p, b, s) _win_readlink(p, b, s) 885 #define READLINK(p, b, s) _win_readlink (p, b, s)
779 #define LSTAT(p, b) _win_lstat(p, b) 886 #define LSTAT(p, b) _win_lstat (p, b)
780 #define LSTAT64(p, b) _win_lstati64(p, b) 887 #define LSTAT64(p, b) _win_lstati64 (p, b)
781 #define PRINTF printf 888 #define PRINTF printf
782 #define FPRINTF fprintf 889 #define FPRINTF fprintf
783 #define VPRINTF(f, a) vprintf(f, a) 890 #define VPRINTF(f, a) vprintf (f, a)
784 #define VFPRINTF(s, f, a) vfprintf(s, f, a) 891 #define VFPRINTF(s, f, a) vfprintf (s, f, a)
785 #define VSPRINTF(d, f, a) vsprintf(d, f, a) 892 #define VSPRINTF(d, f, a) vsprintf (d, f, a)
786 #define VSNPRINTF(str, size, fmt, a) vsnprintf(str, size, fmt, a) 893 #define VSNPRINTF(str, size, fmt, a) vsnprintf (str, size, fmt, a)
787 #define _REAL_SNPRINTF snprintf 894 #define _REAL_SNPRINTF snprintf
788 #define SPRINTF sprintf 895 #define SPRINTF sprintf
789 #define VSSCANF(s, f, a) vsscanf(s, f, a) 896 #define VSSCANF(s, f, a) vsscanf (s, f, a)
790 #define SSCANF sscanf 897 #define SSCANF sscanf
791 #define VFSCANF(s, f, a) vfscanf(s, f, a) 898 #define VFSCANF(s, f, a) vfscanf (s, f, a)
792 #define VSCANF(f, a) vscanf(f, a) 899 #define VSCANF(f, a) vscanf (f, a)
793 #define SCANF scanf 900 #define SCANF scanf
794 #define FSCANF fscanf 901 #define FSCANF fscanf
795 #define WAITPID(p, s, o) _win_waitpid(p, s, o) 902 #define WAITPID(p, s, o) _win_waitpid (p, s, o)
796 #define ACCEPT(s, a, l) _win_accept(s, a, l) 903 #define ACCEPT(s, a, l) _win_accept (s, a, l)
797 #define BIND(s, n, l) _win_bind(s, n, l) 904 #define BIND(s, n, l) _win_bind (s, n, l)
798 #define CONNECT(s, n, l) _win_connect(s, n, l) 905 #define CONNECT(s, n, l) _win_connect (s, n, l)
799 #define GETPEERNAME(s, n, l) _win_getpeername(s, n, l) 906 #define GETPEERNAME(s, n, l) _win_getpeername (s, n, l)
800 #define GETSOCKNAME(s, n, l) _win_getsockname(s, n, l) 907 #define GETSOCKNAME(s, n, l) _win_getsockname (s, n, l)
801 #define GETSOCKOPT(s, l, o, v, p) _win_getsockopt(s, l, o, v, p) 908 #define GETSOCKOPT(s, l, o, v, p) _win_getsockopt (s, l, o, v, p)
802 #define LISTEN(s, b) _win_listen(s, b) 909 #define LISTEN(s, b) _win_listen (s, b)
803 #define RECV(s, b, l, f) _win_recv(s, b, l, f) 910 #define RECV(s, b, l, f) _win_recv (s, b, l, f)
804 #define RECVFROM(s, b, l, f, r, o) _win_recvfrom(s, b, l, f, r, o) 911 #define RECVFROM(s, b, l, f, r, o) _win_recvfrom (s, b, l, f, r, o)
805 #define SELECT(n, r, w, e, t) _win_select(n, r, w, e, t) 912 #define SELECT(n, r, w, e, t) _win_select (n, r, w, e, t)
806 #define SEND(s, b, l, f) _win_send(s, b, l, f) 913 #define SEND(s, b, l, f) _win_send (s, b, l, f)
807 #define SENDTO(s, b, l, f, o, n) _win_sendto(s, b, l, f, o, n) 914 #define SENDTO(s, b, l, f, o, n) _win_sendto (s, b, l, f, o, n)
808 #define SETSOCKOPT(s, l, o, v, n) _win_setsockopt(s, l, o, v, n) 915 #define SETSOCKOPT(s, l, o, v, n) _win_setsockopt (s, l, o, v, n)
809 #define SHUTDOWN(s, h) _win_shutdown(s, h) 916 #define SHUTDOWN(s, h) _win_shutdown (s, h)
810 #define SOCKET(a, t, p) _win_socket(a, t, p) 917 #define SOCKET(a, t, p) _win_socket (a, t, p)
811 #define SOCKETPAIR(a, t, p, v) _win_socketpair(a, t, p, v) 918 #define SOCKETPAIR(a, t, p, v) _win_socketpair (a, t, p, v)
812 #define GETHOSTBYADDR(a, l, t) _win_gethostbyaddr(a, l, t) 919 #define GETHOSTBYADDR(a, l, t) _win_gethostbyaddr (a, l, t)
813 #define GETHOSTBYNAME(n) _win_gethostbyname(n) 920 #define GETHOSTBYNAME(n) _win_gethostbyname (n)
814 #define GETTIMEOFDAY(t, n) gettimeofday(t, n) 921 #define GETTIMEOFDAY(t, n) gettimeofday (t, n)
815 #define INSQUE(e, p) _win_insque(e, p) 922 #define INSQUE(e, p) _win_insque (e, p)
816 #define REMQUE(e) _win_remque(e) 923 #define REMQUE(e) _win_remque (e)
817 #define HSEARCH(i, a) _win_hsearch(i, a) 924 #define HSEARCH(i, a) _win_hsearch (i, a)
818 #define HCREATE(n) _win_hcreate(n) 925 #define HCREATE(n) _win_hcreate (n)
819 #define HDESTROY() _win_hdestroy() 926 #define HDESTROY() _win_hdestroy ()
820 #define HSEARCH_R(i, a, r, h) _win_hsearch_r(i, a, r, h) 927 #define HSEARCH_R(i, a, r, h) _win_hsearch_r (i, a, r, h)
821 #define HCREATE_R(n, h) _win_hcreate_r(n, h) 928 #define HCREATE_R(n, h) _win_hcreate_r (n, h)
822 #define HDESTROY_R(h) _win_hdestroy_r(h) 929 #define HDESTROY_R(h) _win_hdestroy_r (h)
823 #define TSEARCH(k, r, c) _win_tsearch(k, r, c) 930 #define TSEARCH(k, r, c) _win_tsearch (k, r, c)
824 #define TFIND(k, r, c) _win_tfind(k, r, c) 931 #define TFIND(k, r, c) _win_tfind (k, r, c)
825 #define TDELETE(k, r, c) _win_tdelete(k, r, c) 932 #define TDELETE(k, r, c) _win_tdelete (k, r, c)
826 #define TWALK(r, a) _win_twalk(r, a) 933 #define TWALK(r, a) _win_twalk (r, a)
827 #define TDESTROY(r, f) _win_tdestroy(r, f) 934 #define TDESTROY(r, f) _win_tdestroy (r, f)
828 #define LFIND(k, b, n, s, c) _win_lfind(k, b, n, s, c) 935 #define LFIND(k, b, n, s, c) _win_lfind (k, b, n, s, c)
829 #define LSEARCH(k, b, n, s, c) _win_lsearch(k, b, n, s, c) 936 #define LSEARCH(k, b, n, s, c) _win_lsearch (k, b, n, s, c)
830 #define STRUCT_STAT64 struct _stati64 937 #define STRUCT_STAT64 struct _stati64
831#endif 938#endif
832 939
@@ -836,11 +943,11 @@ char *strcasestr(const char *haystack_start, const char *needle_start);
836 This is the type used by the `insque' and `remque' functions. */ 943 This is the type used by the `insque' and `remque' functions. */
837 944
838struct PLIBC_SEARCH_QELEM 945struct PLIBC_SEARCH_QELEM
839 { 946{
840 struct qelem *q_forw; 947 struct qelem *q_forw;
841 struct qelem *q_back; 948 struct qelem *q_back;
842 char q_data[1]; 949 char q_data[1];
843 }; 950};
844 951
845 952
846/* Insert ELEM into a doubly-linked list, after PREV. */ 953/* Insert ELEM into a doubly-linked list, after PREV. */
@@ -857,17 +964,17 @@ typedef PLIBC_SEARCH__compar_fn_t _win_comparison_fn_t;
857 964
858/* Action which shall be performed in the call the hsearch. */ 965/* Action which shall be performed in the call the hsearch. */
859typedef enum 966typedef enum
860 { 967{
861 PLIBC_SEARCH_FIND, 968 PLIBC_SEARCH_FIND,
862 PLIBC_SEARCH_ENTER 969 PLIBC_SEARCH_ENTER
863 } 970}
864PLIBC_SEARCH_ACTION; 971PLIBC_SEARCH_ACTION;
865 972
866typedef struct PLIBC_SEARCH_entry 973typedef struct PLIBC_SEARCH_entry
867 { 974{
868 char *key; 975 char *key;
869 void *data; 976 void *data;
870 } 977}
871PLIBC_SEARCH_ENTRY; 978PLIBC_SEARCH_ENTRY;
872 979
873/* The reentrant version has no static variables to maintain the state. 980/* The reentrant version has no static variables to maintain the state.
@@ -889,7 +996,8 @@ _PLIBC_SEARCH_ENTRY;
889 ACTION is `FIND' return found entry or signal error by returning 996 ACTION is `FIND' return found entry or signal error by returning
890 NULL. If ACTION is `ENTER' replace existing data (if any) with 997 NULL. If ACTION is `ENTER' replace existing data (if any) with
891 ITEM.data. */ 998 ITEM.data. */
892PLIBC_SEARCH_ENTRY *_win_hsearch (PLIBC_SEARCH_ENTRY __item, PLIBC_SEARCH_ACTION __action); 999PLIBC_SEARCH_ENTRY *_win_hsearch (PLIBC_SEARCH_ENTRY __item, PLIBC_SEARCH_ACTION
1000 __action);
893 1001
894/* Create a new hashing table which will at most contain NEL elements. */ 1002/* Create a new hashing table which will at most contain NEL elements. */
895int _win_hcreate (size_t __nel); 1003int _win_hcreate (size_t __nel);
@@ -899,17 +1007,20 @@ void _win_hdestroy (void);
899 1007
900/* Data type for reentrant functions. */ 1008/* Data type for reentrant functions. */
901struct PLIBC_SEARCH_hsearch_data 1009struct PLIBC_SEARCH_hsearch_data
902 { 1010{
903 struct _PLIBC_SEARCH_ENTRY *table; 1011 struct _PLIBC_SEARCH_ENTRY *table;
904 unsigned int size; 1012 unsigned int size;
905 unsigned int filled; 1013 unsigned int filled;
906 }; 1014};
907 1015
908/* Reentrant versions which can handle multiple hashing tables at the 1016/* Reentrant versions which can handle multiple hashing tables at the
909 same time. */ 1017 same time. */
910int _win_hsearch_r (PLIBC_SEARCH_ENTRY __item, PLIBC_SEARCH_ACTION __action, PLIBC_SEARCH_ENTRY **__retval, 1018int _win_hsearch_r (PLIBC_SEARCH_ENTRY __item, PLIBC_SEARCH_ACTION __action,
911 struct PLIBC_SEARCH_hsearch_data *__htab); 1019 PLIBC_SEARCH_ENTRY **__retval,
1020 struct PLIBC_SEARCH_hsearch_data *__htab);
1021
912int _win_hcreate_r (size_t __nel, struct PLIBC_SEARCH_hsearch_data *__htab); 1022int _win_hcreate_r (size_t __nel, struct PLIBC_SEARCH_hsearch_data *__htab);
1023
913void _win_hdestroy_r (struct PLIBC_SEARCH_hsearch_data *__htab); 1024void _win_hdestroy_r (struct PLIBC_SEARCH_hsearch_data *__htab);
914 1025
915 1026
@@ -930,20 +1041,21 @@ PLIBC_SEARCH_VISIT;
930/* Search for an entry matching the given KEY in the tree pointed to 1041/* Search for an entry matching the given KEY in the tree pointed to
931 by *ROOTP and insert a new element if not found. */ 1042 by *ROOTP and insert a new element if not found. */
932void *_win_tsearch (__const void *__key, void **__rootp, 1043void *_win_tsearch (__const void *__key, void **__rootp,
933 PLIBC_SEARCH__compar_fn_t __compar); 1044 PLIBC_SEARCH__compar_fn_t __compar);
934 1045
935/* Search for an entry matching the given KEY in the tree pointed to 1046/* Search for an entry matching the given KEY in the tree pointed to
936 by *ROOTP. If no matching entry is available return NULL. */ 1047 by *ROOTP. If no matching entry is available return NULL. */
937void *_win_tfind (__const void *__key, void *__const *__rootp, 1048void *_win_tfind (__const void *__key, void *__const *__rootp,
938 PLIBC_SEARCH__compar_fn_t __compar); 1049 PLIBC_SEARCH__compar_fn_t __compar);
939 1050
940/* Remove the element matching KEY from the tree pointed to by *ROOTP. */ 1051/* Remove the element matching KEY from the tree pointed to by *ROOTP. */
941void *_win_tdelete (__const void *__restrict __key, 1052void *_win_tdelete (__const void *__restrict __key,
942 void **__restrict __rootp, 1053 void **__restrict __rootp,
943 PLIBC_SEARCH__compar_fn_t __compar); 1054 PLIBC_SEARCH__compar_fn_t __compar);
944 1055
945typedef void (*PLIBC_SEARCH__action_fn_t) (__const void *__nodep, PLIBC_SEARCH_VISIT __value, 1056typedef void (*PLIBC_SEARCH__action_fn_t) (__const void *__nodep,
946 int __level); 1057 PLIBC_SEARCH_VISIT __value,
1058 int __level);
947 1059
948/* Walk through the whole tree and call the ACTION callback for every node 1060/* Walk through the whole tree and call the ACTION callback for every node
949 or leaf. */ 1061 or leaf. */
@@ -960,12 +1072,14 @@ void _win_tdestroy (void *__root, PLIBC_SEARCH__free_fn_t __freefct);
960/* Perform linear search for KEY by comparing by COMPAR in an array 1072/* Perform linear search for KEY by comparing by COMPAR in an array
961 [BASE,BASE+NMEMB*SIZE). */ 1073 [BASE,BASE+NMEMB*SIZE). */
962void *_win_lfind (__const void *__key, __const void *__base, 1074void *_win_lfind (__const void *__key, __const void *__base,
963 size_t *__nmemb, size_t __size, PLIBC_SEARCH__compar_fn_t __compar); 1075 size_t *__nmemb, size_t __size, PLIBC_SEARCH__compar_fn_t
1076 __compar);
964 1077
965/* Perform linear search for KEY by comparing by COMPAR function in 1078/* Perform linear search for KEY by comparing by COMPAR function in
966 array [BASE,BASE+NMEMB*SIZE) and insert entry if not found. */ 1079 array [BASE,BASE+NMEMB*SIZE) and insert entry if not found. */
967void *_win_lsearch (__const void *__key, void *__base, 1080void *_win_lsearch (__const void *__key, void *__base,
968 size_t *__nmemb, size_t __size, PLIBC_SEARCH__compar_fn_t __compar); 1081 size_t *__nmemb, size_t __size, PLIBC_SEARCH__compar_fn_t
1082 __compar);
969 1083
970 1084
971#ifdef __cplusplus 1085#ifdef __cplusplus
@@ -973,6 +1087,6 @@ void *_win_lsearch (__const void *__key, void *__base,
973#endif 1087#endif
974 1088
975 1089
976#endif //_PLIBC_H_ 1090#endif // _PLIBC_H_
977 1091
978/* end of plibc.h */ 1092/* end of plibc.h */