#include "test_utils.h" static int test_basic(const char *path) { printf("\n=== test_basic ===\n"); printf("open: %s\n", path); int fd = open(path, O_CREAT | O_RDWR | O_TRUNC, 0644); if (fd < 0) { perror("open"); return 1; } const char *msg = "ABCDEFGHIJKL"; ssize_t w = write(fd, msg, strlen(msg)); if (w < 0) { perror("write"); return 2; } printf("write: %zd\n", w); const char *msg2 = "MNOPQRSTUVWXYZ"; ssize_t w2 = write(fd, msg2, strlen(msg2)); if (w2 < 0) { perror("write"); return 2; } printf("write: %zd\n", w2); close(fd); fd = open(path, O_RDONLY); if (fd < 0) { perror("open R"); return 3; } char buf[10]; memset(buf, 0, sizeof(buf)); ssize_t r = read(fd, buf, sizeof(buf)); if (r < 0) { perror("read"); return 4; } printf("read: %zd bytes: %.*s\n", r, (int)r, buf); char buf2[512]; memset(buf2, 0, sizeof(buf2)); ssize_t r2 = read(fd, buf2, sizeof(buf2)); if (r2 < 0) { perror("read"); return 4; } printf("read: %zd bytes: %.*s\n", r2, (int)r2, buf2); close(fd); if (unlink(path) != 0) { perror("unlink"); return 5; } printf("unlink: ok\n"); return 0; } int main(int argc, char **argv) { char path[PATH_MAX]; make_path(path, sizeof(path), argc >= 2 ? argv[1] : NULL, "file.dat"); int rc = test_basic(path); return report_result("test_basic", rc); }