posix-mock.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. // Formatting library for C++ - mocks of POSIX functions
  2. //
  3. // Copyright (c) 2012 - present, Victor Zverovich
  4. // All rights reserved.
  5. //
  6. // For the license information refer to format.h.
  7. #ifndef FMT_POSIX_TEST_H
  8. #define FMT_POSIX_TEST_H
  9. #include <errno.h>
  10. #include <locale.h>
  11. #include <stdio.h>
  12. #ifdef __APPLE__
  13. # include <xlocale.h>
  14. #endif
  15. #ifdef _WIN32
  16. # include <windows.h>
  17. #else
  18. # include <sys/param.h> // for FreeBSD version
  19. # include <sys/types.h> // for ssize_t
  20. #endif
  21. #ifndef _MSC_VER
  22. struct stat;
  23. #endif
  24. namespace test {
  25. #ifndef _MSC_VER
  26. // Size type for read and write.
  27. typedef size_t size_t;
  28. typedef ssize_t ssize_t;
  29. int open(const char* path, int oflag, int mode);
  30. int fstat(int fd, struct stat* buf);
  31. #else
  32. typedef unsigned size_t;
  33. typedef int ssize_t;
  34. #endif
  35. #ifndef _WIN32
  36. long sysconf(int name);
  37. #else
  38. DWORD GetFileSize(HANDLE hFile, LPDWORD lpFileSizeHigh);
  39. #endif
  40. int close(int fildes);
  41. int dup(int fildes);
  42. int dup2(int fildes, int fildes2);
  43. FILE* fdopen(int fildes, const char* mode);
  44. ssize_t read(int fildes, void* buf, size_t nbyte);
  45. ssize_t write(int fildes, const void* buf, size_t nbyte);
  46. #ifndef _WIN32
  47. int pipe(int fildes[2]);
  48. #else
  49. int pipe(int* pfds, unsigned psize, int textmode);
  50. #endif
  51. FILE* fopen(const char* filename, const char* mode);
  52. int fclose(FILE* stream);
  53. int(fileno)(FILE* stream);
  54. #if defined(FMT_LOCALE) && !defined(_WIN32)
  55. locale_t newlocale(int category_mask, const char* locale, locale_t base);
  56. #endif
  57. } // namespace test
  58. #define FMT_SYSTEM(call) test::call
  59. #endif // FMT_POSIX_TEST_H