\r
// === CODE ===\r
/**\r
- * \fn FILE *freopen(FILE *fp, char *file, char *mode)\r
+ * \fn FILE *freopen(char *file, char *mode, FILE *fp)\r
*/\r
-EXPORT FILE *freopen(FILE *fp, char *file, char *mode)\r
+EXPORT FILE *freopen(const char *file, const char *mode, FILE *fp)\r
{\r
int openFlags = 0;\r
int i;\r
\r
if(fp->Flags) {\r
fflush(fp);\r
- close(fp->FD);\r
- }\r
+ } else\r
+ fp->FD = -1;\r
\r
// Get main mode\r
switch(mode[0])\r
}\r
\r
//Open File\r
- fp->FD = reopen(fp->FD, file, openFlags);\r
+ if(fp->FD != -1)\r
+ fp->FD = reopen(fp->FD, file, openFlags);\r
+ else\r
+ fp->FD = open(file, openFlags);\r
if(fp->FD == -1) {\r
fp->Flags = 0;\r
return NULL;\r
return fp;\r
}\r
/**\r
- \fn FILE *fopen(char *file, char *mode)\r
+ \fn FILE *fopen(const char *file, const char *mode)\r
\brief Opens a file and returns the pointer\r
\param file String - Filename to open\r
\param mode Mode to open in\r
*/\r
-EXPORT FILE *fopen(char *file, char *mode)\r
+EXPORT FILE *fopen(const char *file, const char *mode)\r
{\r
FILE *retFile;\r
\r
// Create Return Structure\r
retFile = get_file_struct();\r
\r
- return freopen(retFile, file, mode);\r
+ return freopen(file, mode, retFile);\r
}\r
\r
EXPORT void fclose(FILE *fp)\r
///\todo Implement\r
}\r
\r
+EXPORT long int ftell(FILE *fp)\r
+{\r
+ if(!fp || !fp->FD) return -1;\r
+ \r
+ return tell(fp->FD);\r
+}\r
+\r
+EXPORT int fseek(FILE *fp, long int amt, int whence)\r
+{\r
+ if(!fp || !fp->FD) return -1;\r
+ \r
+ return seek(fp->FD, amt, whence);\r
+}\r
+\r
+\r
/**\r
* \fn EXPORT int vfprintf(FILE *fp, const char *format, va_list args)\r
* \brief Print to a file from a variable argument list\r
}\r
\r
/**\r
+ * \fn EXPORT size_t fwrite(void *ptr, size_t size, size_t num, FILE *fp)\r
+ * \brief Write to a stream\r
*/\r
EXPORT size_t fwrite(void *ptr, size_t size, size_t num, FILE *fp)\r
{\r
return ret;\r
}\r
\r
+/**\r
+ * \fn EXPORT size_t fread(void *ptr, size_t size, size_t num, FILE *fp)\r
+ * \brief Read from a stream\r
+ */\r
+EXPORT size_t fread(void *ptr, size_t size, size_t num, FILE *fp)\r
+{\r
+ int ret;\r
+ if(!fp || !fp->FD) return -1;\r
+ \r
+ ret = read(fp->FD, size*num, ptr);\r
+ \r
+ return ret;\r
+}\r
+\r
/**\r
* \fn EXPORT int fputc(int c, FILE *fp)\r
* \brief Write a single character to the stream\r