deprecated, by Perl binding

git-svn-id: https://hamlib.svn.sourceforge.net/svnroot/hamlib/trunk@986 7ae35d74-ebe9-4afe-98af-79ac388436b8
Hamlib-1.1.3
Stéphane Fillod, F8CFE 2002-03-04 20:08:56 +00:00
rodzic b9d94c3195
commit 1bb7fe2297
5 zmienionych plików z 0 dodań i 360 usunięć

Wyświetl plik

@ -1,128 +0,0 @@
////////////////////////////////////////////////////////////////////////////////
//
// File:
// CGILib.cpp
// Package:
// CGILib
// Author:
// Ignacio A. Macías <mack@las.es>
// Description:
// Body of the methods defined in "CGILib.h".
// Tested: GCC 2.7.2
// Tested: MS Visual C++ 4.0
// Support:
// Please contact <mack@las.es> if you've any problem.
// Version:
// v1.0 Nov 4 1996 - Main algorithms.
//
////////////////////////////////////////////////////////////////////////////////
# include <stdlib.h>
# include <string.h>
# include <ctype.h>
# include "CGILib.h"
////////////////////////////////////////////////////////////////////////////////
void CGIParser::parse() throw (CGIException)
{
type = getEnv("REQUEST_METHOD");
if (!type.length())
throw CGIException("Invalid request method");
if (type == "POST")
// Must read data from cin.
{
string conLen(getEnv("CONTENT_LENGTH"));
// EOF is not present. Need the length of the data.
if (!conLen.length())
throw CGIException("Invalid content length");
int length = atoi(conLen.c_str());
char *buffer = new char[length + 1];
if (length > 0)
{
cin.read(buffer,length);
if (cin.bad())
throw CGIException("Error reading in POST");
}
buffer[length] = 0;
// Mark the end of the string.
text = buffer;
// Preserve.
delete buffer;
}
else
if (type == "GET")
text = getEnv("QUERY_STRING");
// The data is obtained from the environment.
else
throw CGIException("Unknown Request Method");
size_t ini, end, equ;
if (text.find_first_of("&=",0) == string::npos)
type = "ISINDEX";
// ISINDEX queries do not have pairs name-value.
else
// Parses & decodes the string in pairs name-value.
// ONLY standard requests are handled properly.
for ( ini = 0, end = string::npos - 1 ; end != string::npos ; ini = end + 1)
{
end = text.find_first_of('&',ini);
equ = text.find_first_of('=',ini);
data[decode(text.substr(ini, equ - ini))]
= decode(text.substr(equ + 1, end - equ - 1));
}
text = decode(text);
// Decodes the global text.
}
//------------------------------------------------------------------------------
// Translates the urlencoded string.
string CGIParser::decode(const string &cod) const
{
string dec = cod;
// Buffer.
register unsigned int get;
// Origin index.
register unsigned int set;
// Target index.
for (get = 0, set = 0 ; get < dec.length() ; set++, get++)
if (dec[get] == '+')
dec[set] = ' ';
// Pluses in spaces.
else
if (dec[get] == '%')
{
dec[set] = hexToChar(dec[get + 1], dec[get + 2]);
get += 2;
}
// Hex values in their represented char.
else
dec[set] = dec[get];
dec.resize(set);
// Cut the rest of the buffer.
return dec;
}
//------------------------------------------------------------------------------
// Translates a two-char hex representation in his corresponding value.
char CGIParser::hexToChar(char c1, char c2) const
{
c1 = tolower(c1);
c2 = tolower(c2);
// Some browsers/servers send uppercase values.
return ((c2 < 'a')? c2 - '0' : c2 - 'a' + 10) +
((c1 < 'a')? c1 - '0' : c1 - 'a' + 10) * 16;
}

Wyświetl plik

@ -1,131 +0,0 @@
////////////////////////////////////////////////////////////////////////////////
//
// File:
// CGILib.h
// Package:
// CGILib
// Author:
// Ignacio A. Macías <mack@las.es>
// Description:
// File header of the CGILib utils. For a description of the use
// of the CGILib library, please browse the "CGILib.html" file.
// Tested: GCC 2.7.2
// Tested: MS Visual C++ 4.0
// Support:
// Please contact <mack@las.es> if you've any problem.
// Version:
// v1.0 Nov 4 1996 - Main algorithms.
//
////////////////////////////////////////////////////////////////////////////////
# ifndef CGILIB_H
# define CGILIB_H
# include <string>
# include <map.h>
typedef less<string> order;
// MSVC++ 4.0 can't handle a direct mapping.
typedef map<string, string, order> CGIData;
// CGIData is a STL map which associates the names
// of the form inputs with the user selected values.
////////////////////////////////////////////////////////////////////////////////
// This exception is throwed by the CGILib on any error condition. The text
// contains the description of the problem.
class CGIException
{
string text;
public:
CGIException(const char *cstr);
string getText() const;
};
////////////////////////////////////////////////////////////////////////////////
// This is the main class. When called the "parse()" method, the cgi data
// received from the http server is analyzed and is ready for handling with the
// observer functions.
class CGIParser
{
private:
string text;
// Source text obtained from the server.
string type;
// Type of transaction: "GET", "POST" or "ISINDEX".
CGIData data;
// Map which associates names and values.
public:
void parse() throw (CGIException);
// Parses and decodes the CGI transaction.
string getText() const;
// Returns the transaction's complete text.
string getType() const;
// Returns the type of transaction. See above.
CGIData getData() const;
// Returns the parsed data;
string getEnv(const char *var) const;
// Receives the name of an environment variable and
// returns her value as a string. If the variable is
// not defined, an empty string is defined.
private:
string decode(const string &str) const;
// Decodes the form text.
char hexToChar(char c1, char c2) const;
// Obtains hte char represented by the hex. value c1c2.
};
////////////////////////////////////////////////////////////////////////////////
// Constructor of the global exception. Receives the text describing the error.
inline CGIException::CGIException(const char *cstr)
: text(cstr)
{
}
//------------------------------------------------------------------------------
// Obtains the text of the exception catched.
inline string CGIException::getText() const
{
return text;
}
////////////////////////////////////////////////////////////////////////////////
inline string CGIParser::getText() const
{
return text;
}
//------------------------------------------------------------------------------
inline string CGIParser::getType() const
{
return type;
}
//------------------------------------------------------------------------------
inline CGIData CGIParser::getData() const
{
return data;
}
//------------------------------------------------------------------------------
inline string CGIParser::getEnv(const char *var) const
{
char *aux = getenv(var);
return (aux)? string(aux) : string();
}
////////////////////////////////////////////////////////////////////////////////
# endif

Wyświetl plik

@ -1,52 +0,0 @@
#include "RpcRigClient.h"
RpcRigClient::RpcRigClient( const char* hostname ) {
pClient = clnt_create( hostname, RIGPROG, RIGVERS, "udp" );
};
RpcRigClient::~RpcRigClient() {
if( pClient ) clnt_destroy( pClient );
};
const rig_model_t RpcRigClient::getModel() const {
rig_model_t result = 0;
if( pClient ) {
model_x* pResult = getmodel_1( pClient );
if( pResult ) {
result = *pResult;
};
};
return result;
};
const freq_t RpcRigClient::getFrequency() const {
freq_t result = 0;
if( pClient ) {
freq_res* pResult = getfreq_1( RIG_VFO1, pClient );
if( pResult ) {
result = pResult->freq_res_u.freq.f1;
};
};
return result;
};
void RpcRigClient::setFrequency( const freq_t freq ) {
if( pClient ) {
freq_arg f;
f.vfo = RIG_VFO1;
f.freq.f1 = freq;
f.freq.f2 = 0;
setfreq_1( f, pClient );
};
};

Wyświetl plik

@ -1,19 +0,0 @@
#ifndef __RPCRIGCLIENT_H__
#define __RPCRIGCLIENT_H__
#include "hamlib/rig.h"
#include "rpcrig.h"
class RpcRigClient {
public:
RpcRigClient( const char* hostname );
virtual ~RpcRigClient();
const rig_model_t getModel() const;
const freq_t getFrequency() const;
void setFrequency( const freq_t freq );
private:
CLIENT* pClient;
};
#endif // __RPCRIGCLIENT_H__

Wyświetl plik

@ -1,30 +0,0 @@
#include "RpcRigClient.h"
#include "stdio.h"
#include "CGILib.h"
main( int argv, char** argc )
{
freq_t freq = 0;
RpcRigClient rig( "localhost" );
CGIParser parser;
parser.parse();
CGIData data = parser.getData();
if( data["freq"] != string( "" ) )
{
freq = atoi( data["freq"].c_str() );
rig.setFrequency( freq );
};
freq = rig.getFrequency();
printf( "Content-type: text/html\r\n\r\n" );
printf( "<html><head><title>hamlib cgirig</title></head><body>" );
printf( "<form method=\"get\" action=\"cgirig\">\n" );
printf( "The frequency is " );
printf( "<input type=\"text\" name=\"freq\" size=\"15\" value=\"%d\"> Hz \n", freq );
printf( "<input type=\"submit\" value=\"Tune\">\n" );
printf( "</form>\n" );
printf( "</body></html>" );
}