xref: /aosp_15_r20/external/fmtlib/test/posix-mock.h (revision 5c90c05cd622c0a81b57953a4d343e0e489f2e08)
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