int fgetc(FILE* f) { #ifndef _LINUX int c = __fgetc(f); if (f->flags & _IOBINARY) return c; for (;;) { if (c != '\r') // drop '\r' return c; c = __fgetc(f); } #else return __fgetc(f); #endif }
char* __fgets (char* str, int num, FILE* stream) { char* ptr = str; while (num-- > 1) { char c = __fgetc(stream); if (c == EOF) { break; } *ptr++ = c; } if (ptr != str) { *ptr = '\0'; return str; } else { return NULL; } }