2013-02-02 03:50:01 +08:00
|
|
|
// Like the compiler, the static analyzer treats some functions differently if
|
|
|
|
// they come from a system header -- for example, it is assumed that system
|
|
|
|
// functions do not arbitrarily free() their parameters, and that some bugs
|
|
|
|
// found in system headers cannot be fixed by the user and should be
|
|
|
|
// suppressed.
|
2012-11-06 12:20:57 +08:00
|
|
|
#pragma clang system_header
|
|
|
|
|
|
|
|
typedef struct __sFILE {
|
|
|
|
unsigned char *_p;
|
|
|
|
} FILE;
|
|
|
|
FILE *fopen(const char * restrict, const char * restrict) __asm("_" "fopen" );
|
|
|
|
int fputc(int, FILE *);
|
|
|
|
int fputs(const char * restrict, FILE * restrict) __asm("_" "fputs" );
|
|
|
|
int fclose(FILE *);
|
|
|
|
void exit(int);
|
2013-02-08 07:05:43 +08:00
|
|
|
|
|
|
|
// The following is a fake system header function
|
|
|
|
typedef struct __FileStruct {
|
|
|
|
FILE * p;
|
|
|
|
} FileStruct;
|
|
|
|
void fakeSystemHeaderCall(FileStruct *);
|