Sophie

Sophie

distrib > Fedora > 14 > i386 > by-pkgid > d56e2615a43e036877e0b6cfab8e0892 > files > 521

fldigi-doc-3.20-3.fc14.noarch.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html><head><meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"><title>parseUALR</title></head>
<body><h1>parseUALR</h1>A simple parser to create a formated console output for fldigi's &lt;EXEC&gt; macro:<br><br>snip------------------------------------------<br>#include &lt;ctime&gt;<br>#include &lt;cstdio&gt;<br>#include &lt;cstdlib&gt;<br>#include &lt;unistd.h&gt;<br>#include &lt;string&gt;<br>#include &lt;iostream&gt;<br>#include &lt;fstream&gt;<br><br>using namespace std;<br>using std::cout;<br>using std::cin;<br><br>int main(int argc, char *argv[])<br>{<br>&nbsp;&nbsp;&nbsp; size_t pos = 0, pos2 = 0, pos3 = 0, pos4 = 0, pos5 = 0;<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; string commandline = "";<br>&nbsp;&nbsp;&nbsp; string name = "";<br>&nbsp;&nbsp;&nbsp; string qth = "";<br>&nbsp;&nbsp;&nbsp; string answer = "";<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; char c = cin.get();<br>&nbsp;&nbsp;&nbsp; while (!cin.eof()) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; commandline += c;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; c = cin.get();<br>&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp; if (commandline.find("No match found") != string::npos)<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; goto noresponse;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; pos = commandline.find(", ");<br>&nbsp;&nbsp;&nbsp; if (pos == string::npos)<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; goto noresponse;<br><br>&nbsp;&nbsp;&nbsp; pos += 2;<br><br>&nbsp;&nbsp;&nbsp; pos2 = commandline.find("\n", pos);<br>&nbsp;&nbsp;&nbsp; if (pos2 == string::npos)<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; goto noresponse;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; name = commandline.substr(pos, pos2 - pos);<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; pos3 = name.find(32);<br>&nbsp;&nbsp;&nbsp; if (pos3 != string::npos)<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; name = name.substr(0, pos3);<br><br>&nbsp;&nbsp;&nbsp; for (size_t i = 1; i &lt; name.length(); i++) name[i] = tolower(name[i]);<br><br>&nbsp;&nbsp;&nbsp; answer = "$NAME";<br>&nbsp;&nbsp;&nbsp; answer.append(name);<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; pos4 = commandline.find(", ", pos2);<br><br>&nbsp;&nbsp;&nbsp; pos4 = commandline.rfind( "\n", pos4);<br>&nbsp;&nbsp;&nbsp; pos4 += 1;<br>&nbsp;&nbsp;&nbsp; pos5 = commandline.find("\n", pos4);<br><br>&nbsp;&nbsp;&nbsp; qth = commandline.substr(pos4, pos5 - pos4);<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; answer.append("$QTH");<br>&nbsp;&nbsp;&nbsp; answer.append(qth);<br>&nbsp;&nbsp;&nbsp; cout &lt;&lt; answer.c_str();<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; return 0;<br><br>noresponse:<br>&nbsp;&nbsp;&nbsp; cout &lt;&lt; "$NAME?$QTH?";<br>&nbsp;&nbsp;&nbsp; return 0;<br>}<br><br>snip-----------------------------------------------<br><br>save the above as "parseUALR.cxx" and then compile and link as follows:<br><br>g++ parseUALR.cxx -o parseUALR<br><br>copy the "parseUALR" executable to a directory on your shell exec PATH.<br></body></html>