mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-06-03 11:12:27 +00:00
Make fread() more consistent with glibc
This commit is contained in:
parent
1d532ba3f8
commit
8e14b27749
3 changed files with 57 additions and 24 deletions
|
@ -17,6 +17,7 @@
|
|||
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/calls/calls.h"
|
||||
#include "libc/errno.h"
|
||||
#include "libc/stdio/stdio.h"
|
||||
#include "libc/testlib/testlib.h"
|
||||
|
||||
|
@ -45,7 +46,7 @@ TEST(fread, eofIsSticky) {
|
|||
}
|
||||
|
||||
TEST(fread, seekWithBuffer) {
|
||||
FILE *f;
|
||||
FILE* f;
|
||||
char b[8] = "hellosup";
|
||||
char c[8] = {0};
|
||||
char d[8] = {0};
|
||||
|
@ -60,3 +61,31 @@ TEST(fread, seekWithBuffer) {
|
|||
ASSERT_STREQ("ellos", d);
|
||||
ASSERT_EQ(0, fclose(f));
|
||||
}
|
||||
|
||||
TEST(fread, zero) {
|
||||
FILE* f;
|
||||
char buf[8] = {0};
|
||||
ASSERT_NE(NULL, (f = fopen("foo", "w")));
|
||||
ASSERT_EQ(2, fwrite("hi", 1, 2, f));
|
||||
ASSERT_EQ(0, fclose(f));
|
||||
ASSERT_NE(NULL, (f = fopen("foo", "r")));
|
||||
ASSERT_EQ(0, fread(buf, 0, 0, f));
|
||||
ASSERT_EQ(0, ferror(stdin));
|
||||
ASSERT_EQ(0, feof(stdin));
|
||||
ASSERT_STREQ("", buf);
|
||||
ASSERT_EQ(0, fclose(f));
|
||||
}
|
||||
|
||||
TEST(fread, partial) {
|
||||
FILE* f;
|
||||
char buf[8] = {0};
|
||||
ASSERT_NE(NULL, (f = fopen("foo", "w")));
|
||||
ASSERT_EQ(2, fwrite("hi", 1, 2, f));
|
||||
ASSERT_EQ(0, fclose(f));
|
||||
ASSERT_NE(NULL, (f = fopen("foo", "r")));
|
||||
ASSERT_EQ(0, fread(buf, 8, 1, f));
|
||||
ASSERT_EQ(0, ferror(stdin));
|
||||
ASSERT_EQ(0, feof(stdin));
|
||||
ASSERT_EQ(0, fclose(f));
|
||||
ASSERT_STREQ("hi", buf);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue