You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

67 lines
1.2 KiB

#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;
}