Rivendellaudio/lib/rdescape_string.cpp
Fred Gleason 434c6c8070 2020-03-18 Fred Gleason <fredg@paravelsystems.com>
* Added a 'FEED_IMAGES' table to the database.
	* Added 'feed_image_test' in 'tests/'.

Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
2020-05-12 10:04:04 -04:00

134 lines
3.0 KiB
C++

// rdescape_string.cpp
//
// Escape non-valid characters in a string.
//
// (C) Copyright 2002-2020 Fred Gleason <fredg@paravelsystems.com>
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License version 2 as
// published by the Free Software Foundation.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public
// License along with this program; if not, write to the Free Software
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
//
#include <vector>
#include <rdescape_string.h>
#include <qdatetime.h>
/**
* RDCheckDateTime - Checks for QTime.isValid
* @param time - QTime object
* @param format - QString representing time format e.g. HH:MM
* @return QString, "NULL" if not Valid else formatted Time String
*/
QString RDCheckDateTime(QTime const &time, QString const &format)
{
QString checkedValue = "NULL";
if(time.isValid())
checkedValue = "\"" + time.toString(format) + "\"";
return checkedValue;
}
/**
* RDCheckDateTime - Checks for QDateTime.isValid
* @param datetime - QDateTime object
* @param format - QString representing date time format e.g. yyyy-mm-dd HH:MM
* @return QString, "NULL" if not Valid else formatted DateTime String
*/
QString RDCheckDateTime(QDateTime const &datetime, QString const &format)
{
QString checkedValue = "NULL";
if(datetime.isValid())
checkedValue = "\"" + datetime.toString(format) + "\"";
return checkedValue;
}
/**
* RDCheckDateTime - Checks for QDate.isValid
* @param date - QDate object
* @param format - QString representing date format e.g. yyyy-mm-dd
* @return QString, "NULL" if not Valid else formatted Date String
*/
QString RDCheckDateTime(QDate const &date, QString const &format)
{
QString checkedValue = "NULL";
if(date.isValid())
checkedValue = "\"" + date.toString(format) + "\"";
return checkedValue;
}
QString RDEscapeString(QString const &str)
{
QString orig=str;
QString res;
for(int i=0;i<str.length();i++) {
QChar c=orig.ref(i);
switch(c.toAscii()) {
case '"':
res+=QString("\\\"");
break;
case '`':
res+=QString("\\`");
break;
case '\'':
res+=QString("\\\'");
break;
case '\\':
res+=QString("\\");
res+=QString("\\");
break;
default:
res+=c;
break;
}
}
return res;
}
QString RDEscapeShellString(QString str)
{
return "\""+str.replace("$","\\$")+"\"";
}
QString RDEscapeBlob(const QByteArray &data)
{
return RDEscapeBlob(data.constData(),data.length());
}
QString RDEscapeBlob(const char *data,size_t len)
{
QString ret="x'";
for(unsigned i=0;i<len;i++) {
ret+=QString().sprintf("%02x",0xff&data[i]);
}
return ret+"'";
}