}\r
else {\r
ret = _SysRead(fp->FD, ptr, size*num);\r
+ if( ret == (size_t)-1)\r
+ return -1;\r
+ if( ret == 0 && size*num > 0 ) {\r
+ fp->Flags |= FILE_FLAG_EOF;\r
+ return 0;\r
+ }\r
ret /= size;\r
}\r
\r
EXPORT int fgetc(FILE *fp)\r
{\r
char ret = 0;\r
- if( fread(&ret, 1, 1, fp) == (size_t)-1 )\r
+ if( fread(&ret, 1, 1, fp) != 1 )\r
return -1;\r
return ret;\r
}\r
return vsnprintf(__s, 0x7FFFFFFF, __format, __args);\r
}\r
\r
-//sprintfv\r
+\r
/**\r
* \fn EXPORT void vsnprintf(char *buf, const char *format, va_list args)\r
* \brief Prints a formatted string to a buffer\r
uint64_t arg;\r
int bLongLong, bPadLeft;\r
\r
- void _addchar(char ch)\r
- {\r
- if(buf && pos < __maxlen) buf[pos] = ch;\r
- pos ++;\r
- }\r
+ #define _addchar(ch) do { \\r
+ if(buf && pos < __maxlen) buf[pos] = (ch); \\r
+ else (void)(ch); \\r
+ pos ++; \\r
+ } while(0)\r
\r
tmp[32] = '\0';\r
\r
}\r
_addchar('\0');\r
pos --;\r
+ #undef _addchar\r
\r
//_SysDebug("vsnprintf: buf = '%s'", buf);\r
\r
va_end(args);\r
\r
// Send to stdout\r
- _SysWrite(_stdout, buf, size+1);\r
+ _SysWrite(_stdout, buf, size);\r
\r
// Free buffer\r
free(buf);\r