18c888b10fdd2846885e8582b131fa076ce1b77b1Jordan Rose// Like the compiler, the static analyzer treats some functions differently if
28c888b10fdd2846885e8582b131fa076ce1b77b1Jordan Rose// they come from a system header -- for example, it is assumed that system
38c888b10fdd2846885e8582b131fa076ce1b77b1Jordan Rose// functions do not arbitrarily free() their parameters, and that some bugs
48c888b10fdd2846885e8582b131fa076ce1b77b1Jordan Rose// found in system headers cannot be fixed by the user and should be
58c888b10fdd2846885e8582b131fa076ce1b77b1Jordan Rose// suppressed.
6eb31a76d1cdaaf8874c549dc6bd964ff270d3822Anna Zaks#pragma clang system_header
7eb31a76d1cdaaf8874c549dc6bd964ff270d3822Anna Zaks
8262e0d41e49c6b823d62743535e2accb117a6ea9Jordan Rose#ifdef __cplusplus
9262e0d41e49c6b823d62743535e2accb117a6ea9Jordan Rose#define restrict /*restrict*/
10262e0d41e49c6b823d62743535e2accb117a6ea9Jordan Rose#endif
11262e0d41e49c6b823d62743535e2accb117a6ea9Jordan Rose
12eb31a76d1cdaaf8874c549dc6bd964ff270d3822Anna Zakstypedef struct _FILE FILE;
13eb31a76d1cdaaf8874c549dc6bd964ff270d3822Anna Zaksextern FILE *stdin;
14ca23eb212c78ac5bc62d0881635579dbe7095639Anna Zaksextern FILE *stdout;
15ca23eb212c78ac5bc62d0881635579dbe7095639Anna Zaksextern FILE *stderr;
16ca23eb212c78ac5bc62d0881635579dbe7095639Anna Zaks// Include a variant of standard streams that occur in the pre-processed file.
17ca23eb212c78ac5bc62d0881635579dbe7095639Anna Zaksextern FILE *__stdinp;
18ca23eb212c78ac5bc62d0881635579dbe7095639Anna Zaksextern FILE *__stdoutp;
19ca23eb212c78ac5bc62d0881635579dbe7095639Anna Zaksextern FILE *__stderrp;
20ca23eb212c78ac5bc62d0881635579dbe7095639Anna Zaks
219a0b3c2f7c440c53b65bd1b085a7471d9f7ed490Jordan Roseint scanf(const char *restrict format, ...);
22ca23eb212c78ac5bc62d0881635579dbe7095639Anna Zaksint fscanf(FILE *restrict, const char *restrict, ...);
239a0b3c2f7c440c53b65bd1b085a7471d9f7ed490Jordan Roseint printf(const char *restrict format, ...);
249a0b3c2f7c440c53b65bd1b085a7471d9f7ed490Jordan Roseint fprintf(FILE *restrict, const char *restrict, ...);
259a0b3c2f7c440c53b65bd1b085a7471d9f7ed490Jordan Roseint getchar(void);
26eb31a76d1cdaaf8874c549dc6bd964ff270d3822Anna Zaks
27eb31a76d1cdaaf8874c549dc6bd964ff270d3822Anna Zaks// Note, on some platforms errno macro gets replaced with a function call.
28eb31a76d1cdaaf8874c549dc6bd964ff270d3822Anna Zaksextern int errno;
29eb31a76d1cdaaf8874c549dc6bd964ff270d3822Anna Zaks
309620aa8c6726330c0357799706aa51f64cc449daNAKAMURA Takumitypedef __typeof(sizeof(int)) size_t;
319620aa8c6726330c0357799706aa51f64cc449daNAKAMURA Takumi
329620aa8c6726330c0357799706aa51f64cc449daNAKAMURA Takumisize_t strlen(const char *);
3315d0ae170c2037815b6383c532253585fcd3d04eAnna Zaks
34ca23eb212c78ac5bc62d0881635579dbe7095639Anna Zakschar *strcpy(char *restrict, const char *restrict);
35b7a747b0c271faeeb8d0f886f0e691eb25f637d9Anton Yartsevvoid *memcpy(void *dst, const void *src, size_t n);
3615d0ae170c2037815b6383c532253585fcd3d04eAnna Zaks
370d389b819c33bdf0375694a8f141c8f02e002b18Anna Zakstypedef unsigned long __darwin_pthread_key_t;
380d389b819c33bdf0375694a8f141c8f02e002b18Anna Zakstypedef __darwin_pthread_key_t pthread_key_t;
39ca23eb212c78ac5bc62d0881635579dbe7095639Anna Zaksint pthread_setspecific(pthread_key_t, const void *);
40ca23eb212c78ac5bc62d0881635579dbe7095639Anna Zaks
41ca23eb212c78ac5bc62d0881635579dbe7095639Anna Zakstypedef long long __int64_t;
42ca23eb212c78ac5bc62d0881635579dbe7095639Anna Zakstypedef __int64_t __darwin_off_t;
43ca23eb212c78ac5bc62d0881635579dbe7095639Anna Zakstypedef __darwin_off_t fpos_t;
44ca23eb212c78ac5bc62d0881635579dbe7095639Anna Zaks
45ca23eb212c78ac5bc62d0881635579dbe7095639Anna Zaksvoid setbuf(FILE * restrict, char * restrict);
46ca23eb212c78ac5bc62d0881635579dbe7095639Anna Zaksint setvbuf(FILE * restrict, char * restrict, int, size_t);
47ca23eb212c78ac5bc62d0881635579dbe7095639Anna Zaks
489a0b3c2f7c440c53b65bd1b085a7471d9f7ed490Jordan RoseFILE *fopen(const char * restrict, const char * restrict);
499a0b3c2f7c440c53b65bd1b085a7471d9f7ed490Jordan Roseint fclose(FILE *);
50ca23eb212c78ac5bc62d0881635579dbe7095639Anna ZaksFILE *funopen(const void *,
51ca23eb212c78ac5bc62d0881635579dbe7095639Anna Zaks                 int (*)(void *, char *, int),
52ca23eb212c78ac5bc62d0881635579dbe7095639Anna Zaks                 int (*)(void *, const char *, int),
53ca23eb212c78ac5bc62d0881635579dbe7095639Anna Zaks                 fpos_t (*)(void *, fpos_t, int),
54ca23eb212c78ac5bc62d0881635579dbe7095639Anna Zaks                 int (*)(void *));
55ca23eb212c78ac5bc62d0881635579dbe7095639Anna Zaks
56aca0ac58d2ae80d764e3832456667d7322445e0cAnna Zaksint sqlite3_bind_text_my(int, const char*, int n, void(*)(void*));
57b79d862af66d8dd9d059863813b9a27d744bd990Anna Zaks
58b79d862af66d8dd9d059863813b9a27d744bd990Anna Zakstypedef void (*freeCallback) (void*);
59b79d862af66d8dd9d059863813b9a27d744bd990Anna Zakstypedef struct {
60b79d862af66d8dd9d059863813b9a27d744bd990Anna Zaks  int i;
61b79d862af66d8dd9d059863813b9a27d744bd990Anna Zaks  freeCallback fc;
62b79d862af66d8dd9d059863813b9a27d744bd990Anna Zaks} StWithCallback;
63b79d862af66d8dd9d059863813b9a27d744bd990Anna Zaks
64b79d862af66d8dd9d059863813b9a27d744bd990Anna Zaksint dealocateMemWhenDoneByVal(void*, StWithCallback);
65b79d862af66d8dd9d059863813b9a27d744bd990Anna Zaksint dealocateMemWhenDoneByRef(StWithCallback*, const void*);
661bf908df57cc43f3bc7296f4e51f5708bd323c6bJordan Rose
671bf908df57cc43f3bc7296f4e51f5708bd323c6bJordan Rosetypedef struct CGContext *CGContextRef;
681bf908df57cc43f3bc7296f4e51f5708bd323c6bJordan RoseCGContextRef CGBitmapContextCreate(void *data/*, size_t width, size_t height,
691bf908df57cc43f3bc7296f4e51f5708bd323c6bJordan Rose                                   size_t bitsPerComponent, size_t bytesPerRow,
701bf908df57cc43f3bc7296f4e51f5708bd323c6bJordan Rose                                   CGColorSpaceRef space,
711bf908df57cc43f3bc7296f4e51f5708bd323c6bJordan Rose                                   CGBitmapInfo bitmapInfo*/);
721bf908df57cc43f3bc7296f4e51f5708bd323c6bJordan Rosevoid *CGBitmapContextGetData(CGContextRef context);
7352a04812e5767dab68efb33ad044760b5b168941Anna Zaks
7452a04812e5767dab68efb33ad044760b5b168941Anna Zaks// Include xpc.
7552a04812e5767dab68efb33ad044760b5b168941Anna Zakstypedef struct _xpc_connection_s * xpc_connection_t;
7652a04812e5767dab68efb33ad044760b5b168941Anna Zakstypedef void (*xpc_finalizer_t)(void *value);
7752a04812e5767dab68efb33ad044760b5b168941Anna Zaksvoid xpc_connection_set_context(xpc_connection_t connection, void *context);
7852a04812e5767dab68efb33ad044760b5b168941Anna Zaksvoid xpc_connection_set_finalizer_f(xpc_connection_t connection, xpc_finalizer_t finalizer);
7952a04812e5767dab68efb33ad044760b5b168941Anna Zaksvoid xpc_connection_resume(xpc_connection_t connection);
80233e26acc0ff2a1098f4c813f69286fce840a422Anna Zaks
81374ae320b87c15b0262c40e5c46e8990111df5caJordan Rose//The following are fake system header functions for generic testing.
82233e26acc0ff2a1098f4c813f69286fce840a422Anna Zaksvoid fakeSystemHeaderCallInt(int *);
83374ae320b87c15b0262c40e5c46e8990111df5caJordan Rosevoid fakeSystemHeaderCallIntPtr(int **);
84233e26acc0ff2a1098f4c813f69286fce840a422Anna Zaks
85233e26acc0ff2a1098f4c813f69286fce840a422Anna Zakstypedef struct __SomeStruct {
86233e26acc0ff2a1098f4c813f69286fce840a422Anna Zaks  char * p;
87233e26acc0ff2a1098f4c813f69286fce840a422Anna Zaks} SomeStruct;
88233e26acc0ff2a1098f4c813f69286fce840a422Anna Zaksvoid fakeSystemHeaderCall(SomeStruct *);
89