00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef ACE_OS_NS_STDIO_H
00018 # define ACE_OS_NS_STDIO_H
00019
00020 # include "ace/pre.h"
00021
00022 # include "ace/config-all.h"
00023
00024 # if !defined (ACE_LACKS_PRAGMA_ONCE)
00025 # pragma once
00026 # endif
00027
00028 #include "ace/os_include/os_stdio.h"
00029 #include "ace/os_include/os_fcntl.h"
00030 #include "ace/ACE_export.h"
00031
00032
00033 #if defined (CYGWIN32) || defined (ACE_OPENVMS)
00034 # include "ace/os_include/os_unistd.h"
00035 #endif
00036
00037 #if defined (ACE_WIN32) && !defined (ACE_HAS_WINCE)
00038 # include "io.h"
00039 #endif
00040
00041 #if defined (ACE_EXPORT_MACRO)
00042 # undef ACE_EXPORT_MACRO
00043 #endif
00044 #define ACE_EXPORT_MACRO ACE_Export
00045
00046
00047
00048
00049
00050
00051
00052
00053 #if !defined (ACE_LACKS_CLEARERR)
00054 inline void ace_clearerr_helper (FILE *stream)
00055 {
00056 # if defined (clearerr)
00057 clearerr (stream);
00058 # undef clearerr
00059 # else
00060 ACE_STD_NAMESPACE::clearerr (stream);
00061 # endif
00062 }
00063 #endif
00064
00065 inline int ace_fgetc_helper (FILE *fp)
00066 {
00067 #if defined (fgetc)
00068 return fgetc (fp);
00069 #undef fgetc
00070 #else
00071 return ACE_STD_NAMESPACE::fgetc (fp);
00072 #endif
00073 }
00074
00075 inline int ace_fputc_helper (int ch, FILE *fp)
00076 {
00077 #if defined (fputc)
00078 return fputc (ch, fp);
00079 #undef fputc
00080 #else
00081 return ACE_STD_NAMESPACE::fputc (ch, fp);
00082 #endif
00083 }
00084
00085 inline int ace_getc_helper (FILE *fp)
00086 {
00087 #if defined (getc)
00088 return getc (fp);
00089 #undef getc
00090 #else
00091 return ACE_STD_NAMESPACE::getc (fp);
00092 #endif
00093 }
00094
00095 inline int ace_putc_helper (int ch, FILE *fp)
00096 {
00097 #if defined (putc)
00098 return putc (ch, fp);
00099 #undef putc
00100 #else
00101 return ACE_STD_NAMESPACE::putc (ch, fp);
00102 #endif
00103 }
00104
00105 inline int ace_ungetc_helper (int ch, FILE *fp)
00106 {
00107 #if defined (ungetc)
00108 return ungetc (ch, fp);
00109 #undef ungetc
00110 #else
00111 return ACE_STD_NAMESPACE::ungetc (ch, fp);
00112 #endif
00113 }
00114
00115 #if !defined ACE_FILENO_EQUIVALENT
00116 inline ACE_HANDLE ace_fileno_helper (FILE *fp)
00117 {
00118 # if defined (fileno)
00119 return (ACE_HANDLE)fileno (fp);
00120 # undef fileno
00121 # else
00122 return (ACE_HANDLE)ACE_STD_NAMESPACE::fileno (fp);
00123 # endif
00124 }
00125 #endif
00126
00127 #if !defined (ACE_LACKS_CUSERID) && !defined(ACE_HAS_ALT_CUSERID) \
00128 && !defined(ACE_WIN32) && !defined (ACE_VXWORKS)
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143 inline char *ace_cuserid(char *user)
00144 {
00145 return cuserid(user);
00146 }
00147 #endif
00148
00149 # if defined (ACE_LACKS_FILELOCKS)
00150 # if ! defined (ACE_VXWORKS) && ! defined (ACE_HAS_RTEMS) && !defined (INTEGRITY)
00151
00152
00153
00154 struct flock
00155 {
00156 short l_type;
00157 short l_whence;
00158 ACE_OFF_T l_start;
00159 ACE_OFF_T l_len;
00160 long l_sysid;
00161 pid_t l_pid;
00162 long l_pad[4];
00163 };
00164 # endif
00165 # endif
00166
00167 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
00168
00169 namespace ACE_OS {
00170
00171
00172
00173
00174
00175
00176 class ACE_Export ace_flock_t
00177 {
00178 public:
00179
00180 void dump (void) const;
00181
00182 # if defined (ACE_WIN32)
00183 ACE_OVERLAPPED overlapped_;
00184 # else
00185 struct flock lock_;
00186 # endif
00187
00188
00189 const ACE_TCHAR *lockname_;
00190
00191
00192 ACE_HANDLE handle_;
00193 };
00194
00195 # if defined (ACE_USES_WCHAR)
00196
00197
00198 extern ACE_Export
00199 void checkUnicodeFormat (FILE* fp);
00200 # endif // ACE_USES_WCHAR
00201
00202 # if !defined (ACE_LACKS_CLEARERR)
00203 ACE_NAMESPACE_INLINE_FUNCTION
00204 void clearerr (FILE* fp);
00205 # endif
00206
00207
00208
00209 # if !defined (ACE_LACKS_CUSERID)
00210 # if defined(cuserid)
00211 # undef cuserid
00212 # endif
00213
00214 ACE_NAMESPACE_INLINE_FUNCTION
00215 char *cuserid (char *user,
00216 size_t maxlen = ACE_MAX_USERID);
00217
00218 # if defined (ACE_HAS_WCHAR)
00219 ACE_NAMESPACE_INLINE_FUNCTION
00220 wchar_t *cuserid (wchar_t *user,
00221 size_t maxlen = ACE_MAX_USERID);
00222 # endif
00223 # endif
00224
00225
00226 extern ACE_Export
00227 int asprintf (char **bufp, const char* format, ...);
00228
00229 # if defined (ACE_HAS_WCHAR)
00230 extern ACE_Export
00231 int asprintf (wchar_t **bufp, const wchar_t* format, ...);
00232 #endif
00233
00234 ACE_NAMESPACE_INLINE_FUNCTION
00235 int fclose (FILE *fp);
00236
00237 ACE_NAMESPACE_INLINE_FUNCTION
00238 FILE *fdopen (ACE_HANDLE handle, const ACE_TCHAR *mode);
00239
00240 ACE_NAMESPACE_INLINE_FUNCTION
00241 int fflush (FILE *fp);
00242
00243 ACE_NAMESPACE_INLINE_FUNCTION
00244 int fgetc (FILE* fp);
00245
00246 ACE_NAMESPACE_INLINE_FUNCTION
00247 int getc (FILE* fp);
00248
00249 ACE_NAMESPACE_INLINE_FUNCTION
00250 int fgetpos (FILE* fp, fpos_t* pos);
00251
00252 ACE_NAMESPACE_INLINE_FUNCTION
00253 char *fgets (char *buf, int size, FILE *fp);
00254
00255 # if defined (ACE_HAS_WCHAR) && !defined(ACE_LACKS_FGETWS)
00256 ACE_NAMESPACE_INLINE_FUNCTION
00257 wchar_t *fgets (wchar_t *buf, int size, FILE *fp);
00258 # endif
00259
00260
00261
00262 # if defined (ACE_WIN32)
00263 ACE_NAMESPACE_INLINE_FUNCTION
00264 void flock_adjust_params (ace_flock_t *lock,
00265 short whence,
00266 ACE_OFF_T &start,
00267 ACE_OFF_T &len);
00268 # endif
00269
00270 ACE_NAMESPACE_INLINE_FUNCTION
00271 int flock_init (ace_flock_t *lock,
00272 int flags = 0,
00273 const ACE_TCHAR *name = 0,
00274 mode_t perms = 0);
00275
00276 ACE_NAMESPACE_INLINE_FUNCTION
00277 int flock_destroy (ace_flock_t *lock,
00278 int unlink_file = 1);
00279
00280 ACE_NAMESPACE_INLINE_FUNCTION
00281 int flock_rdlock (ace_flock_t *lock,
00282 short whence = 0,
00283 ACE_OFF_T start = 0,
00284 ACE_OFF_T len = 0);
00285
00286 ACE_NAMESPACE_INLINE_FUNCTION
00287 int flock_tryrdlock (ace_flock_t *lock,
00288 short whence = 0,
00289 ACE_OFF_T start = 0,
00290 ACE_OFF_T len = 0);
00291
00292 ACE_NAMESPACE_INLINE_FUNCTION
00293 int flock_trywrlock (ace_flock_t *lock,
00294 short whence = 0,
00295 ACE_OFF_T start = 0,
00296 ACE_OFF_T len = 0);
00297
00298 ACE_NAMESPACE_INLINE_FUNCTION
00299 int flock_unlock (ace_flock_t *lock,
00300 short whence = 0,
00301 ACE_OFF_T start = 0,
00302 ACE_OFF_T len = 0);
00303
00304 ACE_NAMESPACE_INLINE_FUNCTION
00305 int flock_wrlock (ace_flock_t *lock,
00306 short whence = 0,
00307 ACE_OFF_T start = 0,
00308 ACE_OFF_T len = 0);
00309
00310
00311
00312
00313 ACE_NAMESPACE_INLINE_FUNCTION
00314 ACE_HANDLE fileno (FILE *stream);
00315
00316 #if defined (ACE_WIN32) && !defined (ACE_HAS_WINCE)
00317 extern ACE_Export
00318 #else
00319 ACE_NAMESPACE_INLINE_FUNCTION
00320 #endif
00321 FILE *fopen (const char *filename, const char *mode);
00322
00323 #if defined (ACE_HAS_WCHAR)
00324 #if defined (ACE_WIN32) && !defined (ACE_HAS_WINCE)
00325 extern ACE_Export
00326 #else
00327 ACE_NAMESPACE_INLINE_FUNCTION
00328 #endif
00329 FILE *fopen (const char *filename, const wchar_t *mode);
00330 # if defined (ACE_WIN32) && !defined (ACE_HAS_WINCE)
00331 extern ACE_Export
00332 # else
00333 ACE_NAMESPACE_INLINE_FUNCTION
00334 # endif
00335 FILE *fopen (const wchar_t *filename, const wchar_t *mode);
00336 # if defined (ACE_WIN32) && !defined (ACE_HAS_WINCE)
00337 extern ACE_Export
00338 # else
00339 ACE_NAMESPACE_INLINE_FUNCTION
00340 # endif
00341 FILE *fopen (const wchar_t *filename, const char *mode);
00342 #endif
00343
00344 #if defined (ACE_WIN32)
00345
00346 ACE_NAMESPACE_INLINE_FUNCTION
00347 LPSECURITY_ATTRIBUTES default_win32_security_attributes (LPSECURITY_ATTRIBUTES);
00348 ACE_NAMESPACE_INLINE_FUNCTION
00349 LPSECURITY_ATTRIBUTES default_win32_security_attributes_r (LPSECURITY_ATTRIBUTES,
00350 LPSECURITY_ATTRIBUTES,
00351 SECURITY_DESCRIPTOR*);
00352
00353
00354
00355 ACE_NAMESPACE_INLINE_FUNCTION
00356 const ACE_TEXT_OSVERSIONINFO &get_win32_versioninfo (void);
00357
00358
00359
00360
00361
00362 ACE_NAMESPACE_INLINE_FUNCTION
00363 HINSTANCE get_win32_resource_module (void);
00364
00365
00366
00367
00368 ACE_NAMESPACE_INLINE_FUNCTION
00369 void set_win32_resource_module (HINSTANCE);
00370
00371 extern ACE_Export ACE_TEXT_OSVERSIONINFO win32_versioninfo_;
00372
00373 extern ACE_Export HINSTANCE win32_resource_module_;
00374
00375 #endif
00376
00377 extern ACE_Export
00378 int fprintf (FILE *fp, const char *format, ...);
00379
00380 # if defined (ACE_HAS_WCHAR)
00381 extern ACE_Export
00382 int fprintf (FILE *fp, const wchar_t *format, ...);
00383 # endif
00384
00385 ACE_NAMESPACE_INLINE_FUNCTION
00386 int ungetc (int c,
00387 FILE *fp);
00388
00389 ACE_NAMESPACE_INLINE_FUNCTION
00390 int fputc (int c,
00391 FILE *fp);
00392
00393 ACE_NAMESPACE_INLINE_FUNCTION
00394 int putc (int c,
00395 FILE *fp);
00396
00397 ACE_NAMESPACE_INLINE_FUNCTION
00398 int fputs (const char *s,
00399 FILE *stream);
00400
00401 # if defined (ACE_HAS_WCHAR) && !defined(ACE_LACKS_FPUTWS)
00402 ACE_NAMESPACE_INLINE_FUNCTION
00403 int fputs (const wchar_t *s,
00404 FILE *stream);
00405 # endif
00406
00407 ACE_NAMESPACE_INLINE_FUNCTION
00408 size_t fread (void *ptr,
00409 size_t size,
00410 size_t nelems,
00411 FILE *fp);
00412
00413 ACE_NAMESPACE_INLINE_FUNCTION
00414 FILE *freopen (const ACE_TCHAR *filename,
00415 const ACE_TCHAR *mode,
00416 FILE* stream);
00417
00418 ACE_NAMESPACE_INLINE_FUNCTION
00419 int fseek (FILE *fp,
00420 long offset,
00421 int ptrname);
00422
00423 ACE_NAMESPACE_INLINE_FUNCTION
00424 int fsetpos (FILE* fp, fpos_t* pos);
00425
00426 ACE_NAMESPACE_INLINE_FUNCTION
00427 long ftell (FILE* fp);
00428
00429 ACE_NAMESPACE_INLINE_FUNCTION
00430 size_t fwrite (const void *ptr,
00431 size_t size,
00432 size_t nitems,
00433 FILE *fp);
00434
00435 ACE_NAMESPACE_INLINE_FUNCTION
00436 void perror (const char *s);
00437
00438 #if defined (ACE_HAS_WCHAR)
00439 ACE_NAMESPACE_INLINE_FUNCTION
00440 void perror (const wchar_t *s);
00441 #endif
00442
00443 extern ACE_Export
00444 int printf (const char *format, ...);
00445
00446 #if defined (ACE_HAS_WCHAR)
00447 extern ACE_Export
00448 int printf (const wchar_t *format, ...);
00449 #endif
00450
00451 ACE_NAMESPACE_INLINE_FUNCTION
00452 int puts (const char *s);
00453
00454 #if defined (ACE_HAS_WCHAR)
00455 ACE_NAMESPACE_INLINE_FUNCTION
00456 int puts (const wchar_t *s);
00457 #endif
00458
00459 ACE_NAMESPACE_INLINE_FUNCTION
00460 int rename (const char *old_name,
00461 const char *new_name,
00462 int flags = -1);
00463
00464 #if defined (ACE_HAS_WCHAR)
00465 ACE_NAMESPACE_INLINE_FUNCTION
00466 int rename (const wchar_t *old_name,
00467 const wchar_t *new_name,
00468 int flags = -1);
00469 #endif
00470
00471 ACE_NAMESPACE_INLINE_FUNCTION
00472 void rewind (FILE *fp);
00473
00474 extern ACE_Export
00475 int snprintf (char *buf, size_t maxlen, const char *format, ...);
00476
00477 # if defined (ACE_HAS_WCHAR)
00478 extern ACE_Export
00479 int snprintf (wchar_t *buf, size_t maxlen, const wchar_t *format, ...);
00480 # endif
00481
00482 extern ACE_Export
00483 int sprintf (char *buf, const char *format, ...);
00484
00485 # if defined (ACE_HAS_WCHAR)
00486 extern ACE_Export
00487 int sprintf (wchar_t *buf, const wchar_t *format, ...);
00488 # endif
00489
00490 ACE_NAMESPACE_INLINE_FUNCTION
00491 char *tempnam (const char *dir = 0,
00492 const char *pfx = 0);
00493
00494 #if defined (ACE_HAS_WCHAR)
00495 ACE_NAMESPACE_INLINE_FUNCTION
00496 wchar_t *tempnam (const wchar_t *dir,
00497 const wchar_t *pfx = 0);
00498 #endif
00499
00500 ACE_NAMESPACE_INLINE_FUNCTION
00501 int vasprintf (char **bufp, const char *format, va_list argptr);
00502
00503 ACE_NAMESPACE_INLINE_FUNCTION
00504 int vprintf (const char *format, va_list argptr);
00505
00506 ACE_NAMESPACE_INLINE_FUNCTION
00507 int vfprintf (FILE *fp, const char *format, va_list argptr);
00508
00509 ACE_NAMESPACE_INLINE_FUNCTION
00510 int vsprintf (char *buffer, const char *format, va_list argptr);
00511
00512 ACE_NAMESPACE_INLINE_FUNCTION
00513 int vsnprintf (char *buffer, size_t maxlen, const char *format, va_list argptr);
00514
00515 # if defined (ACE_HAS_WCHAR)
00516 ACE_NAMESPACE_INLINE_FUNCTION
00517 int vasprintf (wchar_t **bufp, const wchar_t *format, va_list argptr);
00518
00519 ACE_NAMESPACE_INLINE_FUNCTION
00520 int vprintf (const wchar_t *format, va_list argptr);
00521
00522 ACE_NAMESPACE_INLINE_FUNCTION
00523 int vfprintf (FILE *fp, const wchar_t *format, va_list argptr);
00524
00525 ACE_NAMESPACE_INLINE_FUNCTION
00526 int vsprintf (wchar_t *buffer, const wchar_t *format, va_list argptr);
00527
00528 ACE_NAMESPACE_INLINE_FUNCTION
00529 int vsnprintf (wchar_t *buffer, size_t maxlen, const wchar_t *format, va_list argptr);
00530 # endif
00531
00532 #if !defined (ACE_HAS_VASPRINTF)
00533 extern ACE_Export
00534 int vasprintf_emulation (char **bufp, const char *format, va_list argptr);
00535 #endif
00536
00537 #if defined (ACE_HAS_WCHAR)
00538 #if !defined (ACE_HAS_VASWPRINTF)
00539 extern ACE_Export
00540 int vaswprintf_emulation (wchar_t **bufp, const wchar_t *format, va_list argptr);
00541 #endif
00542 #endif
00543
00544 }
00545
00546 ACE_END_VERSIONED_NAMESPACE_DECL
00547
00548 # if defined (ACE_HAS_INLINED_OSCALLS)
00549 # if defined (ACE_INLINE)
00550 # undef ACE_INLINE
00551 # endif
00552 # define ACE_INLINE inline
00553 # include "ace/OS_NS_stdio.inl"
00554 # endif
00555
00556 # include "ace/post.h"
00557 #endif