Source File: tee.cpp
#include <iostream>
#include <fstream>
#include <string>
#include <fmt/core.h>
#include <unistd.h>
void dump_file(std::istream& in, std::ostream& out_file) {
std::string line;
while(in) {
getline(in, line);
line.append("\n", 1);
std::cout.write(line.c_str(), line.size());
out_file.write(line.c_str(), line.size());
}
}
int main(int argc, char* argv[]) {
int opt = 0;
auto open_mode = std::ios::trunc;
while((opt = getopt(argc, argv, "a")) != -1) {
switch(opt) {
case 'a':
open_mode = std::ios::app;
break;
default:
fmt::print("USAGE: tee -a file > otherfile");
return 1;
}
}
std::ofstream out_file{argv[optind], open_mode | std::ios::binary };
dump_file(std::cin, out_file);
}