#define _GNU_SOURCE #include #include #include int main (void) { char buf[36368]; char abuf[sizeof buf]; memset (abuf, 'a', sizeof abuf); char bbuf[sizeof buf]; memset (bbuf, 'b', sizeof bbuf); int src = open ("src", O_WRONLY | O_CREAT | O_TRUNC, 0666); if (src < 0) return 2; if (write (src, abuf, sizeof buf) != sizeof buf) return 3; if (close (src) != 0) return 4; int dst = open ("dst", O_WRONLY | O_CREAT | O_TRUNC, 0666); if (dst < 0) return 5; if (write (dst, bbuf, sizeof buf) != sizeof buf) return 6; if (close (dst) != 0) return 7; src = open ("src", O_RDONLY); if (src < 0) return 8; dst = open ("dst", O_WRONLY); if (dst < 0) return 9; if (copy_file_range (src, 0, dst, 0, sizeof buf, 0) != sizeof buf) return 10; if (close (src) != 0) return 11; if (close (dst) != 0) return 12; dst = open ("dst", O_RDONLY); if (dst < 0) return 13; if (read (dst, buf, sizeof buf) != sizeof buf) return 14; if (memcmp (buf, abuf, sizeof buf) != 0) return 15; return 0; }