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