#include #include #include #include #define TRUE 1 #define FALSE 0 int main(int argc, char **argv) { char buf1[1024]; char buf2[1024]; int n, fd1, fd2, index1 = 0, index2 = 0; if (argc != 3) { exit(EXIT_FAILURE); } fd1 = open(argv[1], O_RDONLY); if (fd1 < 0) { exit(EXIT_FAILURE); } fd2 = open(argv[2], O_RDONLY); if (fd2 < 0) { exit(EXIT_FAILURE); } while(TRUE) { index1 = 0; index2 = 0; memset(buf1, 0, 1024); memset(buf2, 0, 1024); while (n = (read(fd1, &buf1[index1], 1)) > 0) { if (buf1[index1] == '\n') { break; } index1++; } if (n == 0) { break; } while (n = (read(fd2, &buf2[index2], 1)) > 0) { if (buf2[index2] == '\n') { break; } index2++; } if (n == 0) { break; } if (index1 == index2) { printf("%s", buf1); } } }