#include #include #include #include using namespace std; /* version */ const char* versinfo = "0.0.3"; void readmsg(char *x); void show_version(void); void show_help(void); void show_wenda(void); int main (int argc, char **argv) { if (!argv[1]) { cout << "Standard program - Just display list of message titles, numbered." << endl; exit(0); } else { /* check for non-standard arguments */ if (!strcmp(argv[1], "--version")) { show_version(); exit(0); } else if (!strcmp(argv[1], "--help")) { show_help(); exit(0); } /* this is a cookie - it refers to Wenda from "Where's Wally" */ else if (!strcmp(argv[1], "--wenda")) { show_wenda(); exit(0); } } /* normal argument handler - thanks to Arvind */ for (int i = 1; i < argc; i++) { if (argv[i][0] == '-') { switch (argv[i][1]) { /* bring on the cases */ case 'r': if (argc > i + 1) { char * msg; msg = argv[i + 1]; readmsg(msg); i++; } else { cout << "Display list of message titles." << endl; } break; case 'w': cout << "Write message."; break; case 'y': /* useless case here */ show_version(); break; default: cout << "Unknown argument: " << argv[i][1] << endl; break; } } else { cout << "Extra arg: " << argv[i] << endl; } } return (0); } /* functions */ void readmsg(char *x) { string mbuffer, mbuffertmp; int mbuffertest, msglinelength; char *themsgfile; themsgfile = strcat(x, ".txt"); ifstream msgfile(themsgfile); if (! msgfile.is_open()) { cout << "Error opening file"; exit (1); } cout << "\n"; while (! msgfile.eof()) { getline(msgfile,mbuffer,'\n'); mbuffertmp = mbuffer; mbuffertest = mbuffertmp.empty(); if (mbuffertest == 0) { mbuffertmp = mbuffertmp.erase(1); if (mbuffertmp == "%") { msglinelength = mbuffer.length(); if (msglinelength > 1) { mbuffer = mbuffer.substr(2); cout << mbuffer << endl; } else { mbuffer = mbuffer.substr(1); cout << mbuffer << endl; } } else if (mbuffertmp == "T") { mbuffer = mbuffer.substr(7); cout << mbuffer; } else if (mbuffertmp == "D") { mbuffer = mbuffer.substr(6); cout << " - " << mbuffer << "\n\n"; } } } cout << "\n"; } void show_version(void) { cout << "Grim " << versinfo << endl; } void show_help(void) { cout << "Help to be implemented" << endl; } void show_wenda(void) { cout << "This is a cookie :) I will make it more interesting later." << endl; }