dl-fldigi/fldigi_doxygen/user_src_docs/parseUALR.txt

101 wiersze
1.9 KiB
Plaintext

/**
\page parse_ualr_page Parse UALR
\tableofcontents
A simple parser to create a formated console output for fldigi's \<EXEC\> macro:
\verbatim
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-----------------------------------------------
\endverbatim
Save the above as "parseUALR.cxx" and then compile and link as follows:
<code>g++ parseUALR.cxx -o parseUALR</code>
Copy the "parseUALR" executable to a directory on your shell exec PATH.
<br>
\ref parse_ualr_page "Return to Top of Page"
<br>
\ref main_page "Return to Main Page"
*/