#include static char buf[1024]; void fillbuf(char c) { int i; for (i = 0; i < sizeof(buf); i++) buf[i] = c; } void chk(int fd, char c) { if (read(fd, buf, sizeof(buf)) != sizeof(buf)) errx(-1, "short read"); int i; for (i = 0; i < sizeof(buf); i++) if (buf[i] != c) errx(-1, "byte mismatch"); } int main(int argc, char **argv) { int fd; if ((fd = open("/newfile", O_RDWR|O_CREAT, 0755)) < 0) errx(fd, "create failed"); fillbuf('A'); if (write(fd, buf, sizeof(buf)) != sizeof(buf)) errx(-1, "short write"); if (unlink("/newfile") != 0) errx(-1, "should have succeeded"); printf("erased...\n"); if ((fd = open("/yetanother", O_RDWR|O_CREAT, 0755)) < 0) errx(fd, "create failed"); int fd2; if ((fd2 = open("/evenmore", O_RDWR|O_CREAT, 0755)) < 0) errx(fd2, "create failed"); printf("filing two...\n"); fillbuf('B'); if (write(fd, buf, sizeof(buf)) != sizeof(buf)) errx(-1, "short write"); printf("first fill...\n"); fillbuf('C'); if (write(fd2, buf, sizeof(buf)) != sizeof(buf)) errx(-1, "short write"); if (close(fd) != 0) errx(-1, "close"); if (close(fd2) != 0) errx(-1, "close"); printf("checking contents...\n"); if ((fd = open("/yetanother", O_RDONLY, 0)) < 0) errx(fd, "open original failed"); chk(fd, 'B'); if ((fd2 = open("/evenmore", O_RDONLY, 0755)) < 0) errx(fd2, "create failed"); chk(fd2, 'C'); printf("success\n"); return 0; }