#include <vector>
|
|
#include <algorithm>
|
|
#include <string>
|
|
#include <sstream>
|
|
#include <rigid_paradise/systems/stdio.h>
|
|
#include <string.h>
|
|
|
|
#ifndef EXIT_FAILURE
|
|
#define EXIT_FAILURE -1
|
|
#endif
|
|
|
|
const char* help =
|
|
"RigidParadise Yes, no version number\n\
|
|
Archivist - 2019\n\
|
|
usage: yes [STRING]*\n\
|
|
Repeatedly output a line with all specified STRING(s), or 'y'.\n\
|
|
yes --help\n\
|
|
yes --version\n\
|
|
Display this text.\n";
|
|
const size_t help_len = strlen(help);
|
|
|
|
int main(int argc, char** argv)
|
|
{
|
|
std::string to_write = "y\n";
|
|
std::vector<char> str;
|
|
constexpr size_t target_size = 1 << 15;
|
|
str.reserve(target_size);
|
|
|
|
if(argc>1)
|
|
{
|
|
if(argv[1][0]=='-' && argv[1][1]=='-')
|
|
{
|
|
os::stdout_write(help, help_len);
|
|
return 0;
|
|
}
|
|
|
|
std::stringstream generator;
|
|
std::for_each(argv+1, argv+argc, [&](auto cstring)
|
|
{
|
|
generator << cstring << ' ';
|
|
});
|
|
to_write = generator.str();
|
|
to_write[to_write.size()-1]='\n';
|
|
}
|
|
|
|
do
|
|
{
|
|
for(auto a : to_write)
|
|
{
|
|
str.push_back(a);
|
|
}
|
|
}
|
|
while(str.size()<(target_size));
|
|
|
|
do
|
|
{
|
|
auto check = os::stdout_write(str.data() , str.size());
|
|
|
|
if(check<0)
|
|
{
|
|
return EXIT_FAILURE;
|
|
}
|
|
}
|
|
while(1);
|
|
|
|
return 0;
|
|
}
|