parseUALR
A simple parser to create a formated console output for fldigi's <EXEC> macro:
snip------------------------------------------
#include <ctime>
#include <cstdio>
#include <cstdlib>
#include <unistd.h>
#include <string>
#include <iostream>
#include <fstream>
using namespace std;
using std::cout;
using std::cin;
int main(int argc, char *argv[])
{
size_t pos = 0, pos2 = 0, pos3 = 0, pos4 = 0, pos5 = 0;
string commandline = "";
string name = "";
string qth = "";
string answer = "";
char c = cin.get();
while (!cin.eof()) {
commandline += c;
c = cin.get();
}
if (commandline.find("No match found") != string::npos)
goto noresponse;
pos = commandline.find(", ");
if (pos == string::npos)
goto noresponse;
pos += 2;
pos2 = commandline.find("\n", pos);
if (pos2 == string::npos)
goto noresponse;
name = commandline.substr(pos, pos2 - pos);
pos3 = name.find(32);
if (pos3 != string::npos)
name = name.substr(0, pos3);
for (size_t i = 1; i < name.length(); i++) name[i] = tolower(name[i]);
answer = "$NAME";
answer.append(name);
pos4 = commandline.find(", ", pos2);
pos4 = commandline.rfind( "\n", pos4);
pos4 += 1;
pos5 = commandline.find("\n", pos4);
qth = commandline.substr(pos4, pos5 - pos4);
answer.append("$QTH");
answer.append(qth);
cout << answer.c_str();
return 0;
noresponse:
cout << "$NAME?$QTH?";
return 0;
}
snip-----------------------------------------------
save the above as "parseUALR.cxx" and then compile and link as follows:
g++ parseUALR.cxx -o parseUALR
copy the "parseUALR" executable to a directory on your shell exec PATH.