diff --git a/lib/std_fixes.h b/lib/std_fixes.h index 58f6879d1d..9914582f7f 100644 --- a/lib/std_fixes.h +++ b/lib/std_fixes.h @@ -1,6 +1,7 @@ #ifndef _STD_FIXES_H_ #define _STD_FIXES_H_ +#ifndef CONFIG_TEST #ifndef HAVE_STD_MIN namespace std { @@ -50,5 +51,40 @@ o_iterator transform(i_iterator first, i_iterator last, o_iterator res, OP op) { } #endif +#endif + +#if defined(LARGEFILE_BREAKS_CXX) && (defined(_LARGE_FILES) || (_FILE_OFFSET_BITS==64)) + +#include + +#undef fopen +#undef freopen +#undef tmpfile +#undef fgetpos +#undef fsetpos +#undef fseeko +#undef ftello + +extern "C" { +FILE *fopen(const char *, const char *); +FILE *freopen(const char *, const char *, FILE *); +FILE *tmpfile(void); +int fgetpos(FILE *, fpos64_t *); +int fsetpos(FILE *, const fpos64_t *); +int fseeko(FILE *, const off64_t, int); +off64_t ftello(FILE *); +} + +inline FILE *fopen(const char *path, const char *mode) { return fopen64(path, + mode); } +inline FILE *freopen(const char *path, const char *mode, FILE *file) { return + freopen64(path,mode,file); } +inline FILE *tmpfile(void) {return tmpfile64();} +inline int fgetpos(FILE *file, fpos64_t *pos) { return fgetpos64(file,pos); } +inline int fsetpos(FILE *file, const fpos64_t *pos) { return fsetpos64(file,pos); } +inline int fseeko(FILE *file, const off64_t pos, int whence) {return fseeko64(file,pos,whence);} +inline off64_t ftello(FILE *file) {return ftello64(file);} + +#endif +#endif -#endif \ No newline at end of file