return ret;\r
}\r
\r
+EXPORT FILE *fdopen(int fd, const char *mode)\r
+{\r
+ FILE *ret;\r
+ \r
+ if( fd < 0 || !mode ) return NULL;\r
+ \r
+ ret = get_file_struct();\r
+ \r
+ ret->FD = fd;\r
+ ret->Flags = _fopen_modetoflags(mode);\r
+ if(ret->Flags == -1) {\r
+ ret->Flags = 0;\r
+ return NULL;\r
+ }\r
+ \r
+ ret->Buffer = NULL;\r
+ ret->BufferPos = 0;\r
+ ret->BufferSpace = 0;\r
+ \r
+ return ret;\r
+}\r
+\r
+EXPORT FILE *tmpfile(void)\r
+{\r
+ return NULL;\r
+}\r
+\r
EXPORT int fclose(FILE *fp)\r
{\r
if( !(fp->Flags & FILE_FLAG_ALLOC) )\r
return ret;\r
}\r
\r
-EXPORT void fflush(FILE *fp)\r
+EXPORT int fflush(FILE *fp)\r
{\r
if( !fp || fp->FD == FD_NOTOPEN )\r
- return ;\r
+ return EBADF;\r
\r
// Nothing to do for memory files\r
if( fp->FD == FD_MEMFILE )\r
- return ;\r
+ return 0;\r
// Memory streams, update pointers\r
if( fp->FD == FD_MEMSTREAM ) {\r
*fp->BufPtr = fp->Buffer;\r
*fp->LenPtr = fp->BufferPos;\r
- return ;\r
+ return 0;\r
}\r
\r
_fflush_int(fp);\r
+ return 0;\r
}\r
\r
EXPORT void clearerr(FILE *fp)\r
return 0;\r
}\r
\r
-EXPORT int fseek(FILE *fp, long int amt, int whence)\r
+EXPORT int fseeko(FILE *fp, off_t amt, int whence)\r
{\r
if(!fp || fp->FD == FD_NOTOPEN) {\r
errno = EBADF;\r
}\r
}\r
\r
+EXPORT int fseek(FILE *fp, long int amt, int whence)\r
+{\r
+ return fseeko(fp, amt, whence);\r
+}\r
+\r
size_t _fwrite_unbuffered(FILE *fp, size_t size, size_t num, const void *data)\r
{\r
size_t ret = 0, bytes;\r
\r
size_t _fread_buffered(void *ptr, size_t size, FILE *fp)\r
{\r
- _SysDebug("%p: %i-%i <= %i", fp,\r
- (int)fp->Pos, (int)fp->BufferOfs, (int)fp->BufferPos);\r
+ //_SysDebug("%p: %i-%i <= %i", fp,\r
+ // (int)fp->Pos, (int)fp->BufferOfs, (int)fp->BufferPos);\r
if( fp->BufferPos > 0 ) {\r
assert( fp->Pos - fp->BufferOfs <= (int)fp->BufferPos );\r
}\r
EXPORT int fputs(const char *s, FILE *fp)\r
{\r
int len = strlen(s);\r
- return fwrite(s, 1, len, fp);\r
+ return fwrite(s, len, 1, fp);\r
}\r
\r
/**\r
\r
EXPORT int getchar(void)\r
{\r
+ fflush(stdout);\r
return fgetc(stdin);\r
}\r
\r