#include
#include
#include
#include
#include
using namespace std;
void lpp (string msg){
string imsg = msg;
const char* E = "echo \"";
const char* L = "\" | lp ";
string total = string(E) + string(imsg) + string(L);
//cout << total << "\n\n";
const char* cmd = total.c_str();
system(cmd);
}
int main(int argc, char** argv)
{
int opt;
string input = "";
bool flagA = false;
bool flagB = false;
// Retrieve the (non-option) argument:
if ( (argc <= 1) || (argv[argc-1] == NULL) || (argv[argc-1][0] == '-') )
{ // there is NO input...
cerr << "No argument provided!" << endl;
//return 1;
}
else
{ // there is an input...
input = argv[argc-1];
}
// Debug:
cout << "input = " << input << endl;
// Shut GetOpt error messages down (return '?'):
opterr = 0;
// Retrieve the options:
while ( (opt = getopt(argc, argv, "ab")) != -1 ) { // for each option...
switch ( opt ) {
case 'a':
flagA = true;
break;
case 'b':
flagB = true;
break;
case '?': // unknown option...
cerr << "Unknown option: '" << char(optopt) << "'!" << endl;
break;
}
}
//read number associated with the options flag for bit shifting.
stringstream strValue;
strValue << argv[2];
int intValue;
strValue >> intValue;
string::iterator it;
it = input.begin();
string msg = "";
for (int index = 0; it < input.end(); ++index)
{
int x = (int)*it - intValue;
//output the character values shifted over by the number in argument argv[2]
if ((x<65) || (x>90))
x=x+26;
if ((x > 90)||(x<65))
{
cout << " ";
msg += " ";
++it;
}
else
{
char z = (char)x;
cout << z;
msg += z;
++it;
}
}
if (flagA == true)
lpp(msg);
if (flagB == true)
cout << "I hope you enjoyed my program\n";
return 0;
}