#include #include #include #include #include #include int main(int argc, char **argv) { if (argc != 2) { fprintf(stderr, "Wrong argument count!\n"); return 1; } int src = open(argv[1], O_RDONLY); if (src == -1) { perror("Opening the source file failed"); return 1; } char *filename_buffer = malloc(strlen(argv[1]) + 3); sprintf(filename_buffer, "%s_l", argv[1]); int lower = open(filename_buffer, O_WRONLY | O_CREAT | O_TRUNC, 0644); if (lower == -1) perror("Creating the lowercase variant failed"); sprintf(filename_buffer, "%s_u", argv[1]); int upper = open(filename_buffer, O_WRONLY | O_CREAT | O_TRUNC, 0644); if (upper == -1) perror("Creating the uppercase variant failed"); free(filename_buffer); if (lower == -1 && upper == -1) { close(src); return 1; } char buf[256]; while (1) { int cnt = read(src, buf, 256); if (cnt <= 0) break; for (int i = 0; i < cnt; ++i) buf[i] = tolower(buf[i]); write(lower, buf, cnt); for (int i = 0; i < cnt; ++i) buf[i] = toupper(buf[i]); write(upper, buf, cnt); } close(src); close(lower); close(upper); return 0; }