#include <string>
#include <algorithm>
#include <iostream>
#include <iterator>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <vector>
using namespace std;
const string PROMPT = "prompt> ";
const string PIPE_DEL = "||";
bool checkInput(char []);
bool checkInput(string command){
transform(command.begin(), command.end(), command.begin(), ::tolower);
if (command == "q" || command == "quit")
return true;
else
return false;
}
int main(){
int iteration = 0;
while (true){
string command;
pid_t pid;
cout << '\n' << iteration << '\n';
cout << PROMPT;
if (getline(cin, command) && ! checkInput(command) ) {
size_t pos=0, nxt=0;
vector<string> commands;
do {
nxt=command.find(PIPE_DEL,pos);
commands.push_back(command.substr(pos, nxt-pos));
if (nxt!=string::npos)
nxt+=PIPE_DEL.length();
pos = nxt;
} while (pos!=string::npos);
cout<<"Commands:";
copy(commands.begin(), commands.end(), ostream_iterator<string>(cout,"\n\t"));
iteration ++;
}
else
break;
}
return 0;
}
I2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aXRlcmF0b3I+CiNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KI2luY2x1ZGUgPHN5cy93YWl0Lmg+CiNpbmNsdWRlIDx1bmlzdGQuaD4KI2luY2x1ZGUgPHZlY3Rvcj4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBzdHJpbmcgUFJPTVBUID0gInByb21wdD4gIjsKY29uc3Qgc3RyaW5nIFBJUEVfREVMID0gInx8IjsKCmJvb2wgY2hlY2tJbnB1dChjaGFyIFtdKTsKCgpib29sIGNoZWNrSW5wdXQoc3RyaW5nIGNvbW1hbmQpewogICAgdHJhbnNmb3JtKGNvbW1hbmQuYmVnaW4oKSwgY29tbWFuZC5lbmQoKSwgY29tbWFuZC5iZWdpbigpLCA6OnRvbG93ZXIpOwogICAgaWYgKGNvbW1hbmQgPT0gInEiIHx8IGNvbW1hbmQgPT0gInF1aXQiKQogICAgICAgIHJldHVybiB0cnVlOwogICAgZWxzZQogICAgICAgIHJldHVybiBmYWxzZTsgICAKfQoKCmludCBtYWluKCl7CiAgICBpbnQgaXRlcmF0aW9uID0gMDsKICAgIHdoaWxlICh0cnVlKXsKICAgICAgICBzdHJpbmcgY29tbWFuZDsKICAgICAgICBwaWRfdCBwaWQ7CgogICAgICAgIGNvdXQgPDwgJ1xuJyA8PCBpdGVyYXRpb24gPDwgJ1xuJzsKICAgICAgICBjb3V0IDw8IFBST01QVDsKICAgICAgICBpZiAoZ2V0bGluZShjaW4sIGNvbW1hbmQpICYmICEgY2hlY2tJbnB1dChjb21tYW5kKSApIHsKICAgICAgICAJc2l6ZV90IHBvcz0wLCBueHQ9MDsgCiAgICAgICAgICAgIHZlY3RvcjxzdHJpbmc+IGNvbW1hbmRzOwogICAgICAgICAgICAKICAgICAgICAgICAgZG8geyAKICAgICAgICAJICAgIG54dD1jb21tYW5kLmZpbmQoUElQRV9ERUwscG9zKTsgCiAgICAgICAgICAgICAgICBjb21tYW5kcy5wdXNoX2JhY2soY29tbWFuZC5zdWJzdHIocG9zLCBueHQtcG9zKSk7CiAgICAgICAgICAgICAgICBpZiAobnh0IT1zdHJpbmc6Om5wb3MpCiAgICAgICAgICAgICAgICAgICBueHQrPVBJUEVfREVMLmxlbmd0aCgpOwogICAgICAgICAgICAgICAgcG9zID0gbnh0OwogICAgICAgIAl9IHdoaWxlIChwb3MhPXN0cmluZzo6bnBvcyk7CiAgICAgICAgCQogICAgICAgIAljb3V0PDwiQ29tbWFuZHM6IjsKICAgICAgICAJY29weShjb21tYW5kcy5iZWdpbigpLCBjb21tYW5kcy5lbmQoKSwgb3N0cmVhbV9pdGVyYXRvcjxzdHJpbmc+KGNvdXQsIlxuXHQiKSk7CiAgICAgICAgICAgIGl0ZXJhdGlvbiArKzsKICAgICAgICB9CiAgICAgICAgZWxzZSAKICAgICAgICAgICAgYnJlYWs7IAogICAgfQogICAgcmV0dXJuIDA7Cn0=