- if (setvbuf (fp, NULL, _IONBF, 0))
- goto skip;
- ASSERT (fbufmode (fp) == _IONBF);
+ switch (mode)
+ {
+ case _IONBF:
+ ASSERT (setvbuf (fp, NULL, _IONBF, 0) == 0);
+ ASSERT (fbufmode (fp) == _IONBF);
+ break;
+
+ case _IOLBF:
+ ASSERT (setvbuf (fp, buf, _IOLBF, 5) == 0);
+ /* mingw's setvbuf implements _IOLBF the same way as _IOFBF. */
+ ASSERT (fbufmode (fp) == _IOLBF
+ || fbufmode (fp) == _IOFBF);
+ break;
+
+ case _IOFBF:
+ ASSERT (setvbuf (fp, buf, _IOFBF, 5) == 0);
+ ASSERT (fbufmode (fp) == _IOFBF);
+ break;
+
+ default:
+ break;
+ }