summaryrefslogtreecommitdiff
path: root/tools.cpp
diff options
context:
space:
mode:
authorDieter Hametner <dh (plus) vdr (at) gekrumbel (dot) de>2008-03-12 18:00:39 +0100
committerDieter Hametner <dh (plus) vdr (at) gekrumbel (dot) de>2008-03-12 18:00:39 +0100
commit421c0f4b839309ef136aa22d912f58519e10e274 (patch)
treec931b7300b319a197157621061aec62750de0672 /tools.cpp
parent8bb3ea736ccf17496f7767855729973451944be4 (diff)
downloadvdr-plugin-live-421c0f4b839309ef136aa22d912f58519e10e274.tar.gz
vdr-plugin-live-421c0f4b839309ef136aa22d912f58519e10e274.tar.bz2
Whitespace changes only. Made file better suited to automatic
indentation capable editors.
Diffstat (limited to 'tools.cpp')
-rw-r--r--tools.cpp388
1 files changed, 194 insertions, 194 deletions
diff --git a/tools.cpp b/tools.cpp
index 1839f6b..41db7b9 100644
--- a/tools.cpp
+++ b/tools.cpp
@@ -27,119 +27,119 @@ istream& operator>>( istream& is, tChannelID& ret )
namespace vdrlive {
-string FormatDateTime( char const* format, time_t time )
-{
- struct tm tm_r;
- if ( localtime_r( &time, &tm_r ) == 0 ) {
- ostringstream builder;
- builder << "cannot represent timestamp " << time << " as local time";
- throw runtime_error( builder.str() );
+ string FormatDateTime( char const* format, time_t time )
+ {
+ struct tm tm_r;
+ if ( localtime_r( &time, &tm_r ) == 0 ) {
+ ostringstream builder;
+ builder << "cannot represent timestamp " << time << " as local time";
+ throw runtime_error( builder.str() );
+ }
+
+ char result[ 256 ];
+ if ( strftime( result, sizeof( result ), format, &tm_r ) == 0 ) {
+ ostringstream builder;
+ builder << "representation of timestamp " << time << " exceeds " << sizeof( result ) << " bytes";
+ throw runtime_error( builder.str() );
+ }
+ return result;
}
- char result[ 256 ];
- if ( strftime( result, sizeof( result ), format, &tm_r ) == 0 ) {
- ostringstream builder;
- builder << "representation of timestamp " << time << " exceeds " << sizeof( result ) << " bytes";
- throw runtime_error( builder.str() );
+ string StringReplace( string const& text, string const& substring, string const& replacement )
+ {
+ string result = text;
+ string::size_type pos = 0;
+ while ( ( pos = result.find( substring, pos ) ) != string::npos ) {
+ result.replace( pos, substring.length(), replacement );
+ pos += replacement.length();
+ }
+ return result;
}
- return result;
-}
-string StringReplace( string const& text, string const& substring, string const& replacement )
-{
- string result = text;
- string::size_type pos = 0;
- while ( ( pos = result.find( substring, pos ) ) != string::npos ) {
- result.replace( pos, substring.length(), replacement );
- pos += replacement.length();
+ vector< string > StringSplit( string const& text, char delimiter )
+ {
+ vector< string > result;
+ string::size_type last = 0, pos;
+ while ( ( pos = text.find( delimiter, last ) ) != string::npos ) {
+ result.push_back( text.substr( last, pos - last ) );
+ last = pos + 1;
+ }
+ if ( last < text.length() )
+ result.push_back( text.substr( last ) );
+ return result;
}
- return result;
-}
-vector< string > StringSplit( string const& text, char delimiter )
-{
- vector< string > result;
- string::size_type last = 0, pos;
- while ( ( pos = text.find( delimiter, last ) ) != string::npos ) {
- result.push_back( text.substr( last, pos - last ) );
- last = pos + 1;
+ int StringToInt( std::string const& string, int base )
+ {
+ char* end;
+ int result = strtol( string.c_str(), &end, base );
+ if ( *end == '\0' )
+ return result;
+ return 0;
}
- if ( last < text.length() )
- result.push_back( text.substr( last ) );
- return result;
-}
-int StringToInt( std::string const& string, int base )
-{
- char* end;
- int result = strtol( string.c_str(), &end, base );
- if ( *end == '\0' )
+ string StringRepeat(int times, const string& input)
+ {
+ string result;
+ for (int i = 0; i < times; i++) {
+ result += input;
+ }
return result;
- return 0;
-}
-
-string StringRepeat(int times, const string& input)
-{
- string result;
- for (int i = 0; i < times; i++) {
- result += input;
}
- return result;
-}
-string StringWordTruncate(const string& input, size_t maxLen, bool& truncated)
-{
- if (input.length() <= maxLen)
+ string StringWordTruncate(const string& input, size_t maxLen, bool& truncated)
{
- return input;
+ if (input.length() <= maxLen)
+ {
+ return input;
+ }
+ truncated = true;
+ string result = input.substr(0, maxLen);
+ size_t pos = result.find_last_of(" \t,;:.\n?!'\"/\\()[]{}*+-");
+ return result.substr(0, pos);
}
- truncated = true;
- string result = input.substr(0, maxLen);
- size_t pos = result.find_last_of(" \t,;:.\n?!'\"/\\()[]{}*+-");
- return result.substr(0, pos);
-}
-string StringFormatBreak(string const& input)
-{
- return StringReplace( input, "\n", "<br/>" );
-}
+ string StringFormatBreak(string const& input)
+ {
+ return StringReplace( input, "\n", "<br/>" );
+ }
-string StringEscapeAndBreak( string const& input )
-{
- stringstream plainBuilder;
- HtmlEscOstream builder( plainBuilder );
- builder << input;
- return StringReplace( plainBuilder.str(), "\n", "<br/>" );
-}
+ string StringEscapeAndBreak( string const& input )
+ {
+ stringstream plainBuilder;
+ HtmlEscOstream builder( plainBuilder );
+ builder << input;
+ return StringReplace( plainBuilder.str(), "\n", "<br/>" );
+ }
-string StringTrim(string const& str)
-{
- string res = str;
- string::size_type pos = res.find_last_not_of(' ');
- if(pos != string::npos) {
- res.erase(pos + 1);
- pos = res.find_first_not_of(' ');
- if(pos != string::npos) res.erase(0, pos);
- }
- else res.erase(res.begin(), res.end());
- return res;
-}
+ string StringTrim(string const& str)
+ {
+ string res = str;
+ string::size_type pos = res.find_last_not_of(' ');
+ if(pos != string::npos) {
+ res.erase(pos + 1);
+ pos = res.find_first_not_of(' ');
+ if(pos != string::npos) res.erase(0, pos);
+ }
+ else res.erase(res.begin(), res.end());
+ return res;
+ }
-string ZeroPad(int number)
-{
- ostringstream os;
- os << setw(2) << setfill('0') << number;
- return os.str();
-}
+ string ZeroPad(int number)
+ {
+ ostringstream os;
+ os << setw(2) << setfill('0') << number;
+ return os.str();
+ }
-std::string MD5Hash(std::string const& str)
-{
- char* szInput = strdup(str.c_str());
- if (!szInput) return "";
- char* szRes = MD5String(szInput);
- string res = szRes;
- free(szRes);
- return res;
+ std::string MD5Hash(std::string const& str)
+ {
+ char* szInput = strdup(str.c_str());
+ if (!szInput) return "";
+ char* szRes = MD5String(szInput);
+ string res = szRes;
+ free(szRes);
+ return res;
/* unsigned char md5[MD5_DIGEST_LENGTH];
MD5(reinterpret_cast<const unsigned char*>(str.c_str()), str.size(), md5);
@@ -147,128 +147,128 @@ std::string MD5Hash(std::string const& str)
ostringstream hashStr;
hashStr << hex;
for (size_t i = 0; i < MD5_DIGEST_LENGTH; i++)
- hashStr << (0 + md5[i]);
+ hashStr << (0 + md5[i]);
return hashStr.str();
*/
-}
+ }
#define HOURS(x) ((x)/100)
#define MINUTES(x) ((x)%100)
-std::string ExpandTimeString(std::string timestring)
-{
- string::size_type colonpos = timestring.find(":");
- if (colonpos == string::npos)
+ std::string ExpandTimeString(std::string timestring)
{
- if (timestring.size() == 1)
- timestring = "0" + timestring + ":00";
- else if (timestring.size() == 2)
- timestring = timestring + ":00";
- else if (timestring.size() == 3)
- timestring = "0" + string(timestring.begin(), timestring.begin() + 1) + ":" + string(timestring.begin() + 1, timestring.end());
+ string::size_type colonpos = timestring.find(":");
+ if (colonpos == string::npos)
+ {
+ if (timestring.size() == 1)
+ timestring = "0" + timestring + ":00";
+ else if (timestring.size() == 2)
+ timestring = timestring + ":00";
+ else if (timestring.size() == 3)
+ timestring = "0" + string(timestring.begin(), timestring.begin() + 1) + ":" + string(timestring.begin() + 1, timestring.end());
+ else
+ timestring = string(timestring.begin(), timestring.begin() + 2) + ":" + string(timestring.begin() + 2, timestring.end());
+ }
else
- timestring = string(timestring.begin(), timestring.begin() + 2) + ":" + string(timestring.begin() + 2, timestring.end());
+ {
+ string hours = string(timestring.begin(), timestring.begin() + colonpos);
+ string mins = string(timestring.begin() + colonpos + 1, timestring.end());
+ hours = string(std::max(0,(int)(2 - hours.size())), '0') + hours;
+ mins = string(std::max(0,(int)(2 - mins.size())), '0') + mins;
+ timestring = hours + ":" + mins;
+ }
+ return timestring;
}
- else
+
+ time_t GetTimeT(std::string timestring) // timestring in HH:MM
{
- string hours = string(timestring.begin(), timestring.begin() + colonpos);
- string mins = string(timestring.begin() + colonpos + 1, timestring.end());
- hours = string(std::max(0,(int)(2 - hours.size())), '0') + hours;
- mins = string(std::max(0,(int)(2 - mins.size())), '0') + mins;
- timestring = hours + ":" + mins;
+ timestring = StringReplace(timestring, ":", "");
+ int iTime = lexical_cast< int >( timestring );
+ struct tm tm_r;
+ time_t t = time(NULL);
+ tm* tmnow = localtime_r(&t, &tm_r);
+ tmnow->tm_hour = HOURS(iTime);
+ tmnow->tm_min = MINUTES(iTime);
+ return mktime(tmnow);
}
- return timestring;
-}
-time_t GetTimeT(std::string timestring) // timestring in HH:MM
-{
- timestring = StringReplace(timestring, ":", "");
- int iTime = lexical_cast< int >( timestring );
- struct tm tm_r;
- time_t t = time(NULL);
- tm* tmnow = localtime_r(&t, &tm_r);
- tmnow->tm_hour = HOURS(iTime);
- tmnow->tm_min = MINUTES(iTime);
- return mktime(tmnow);
-}
+ struct urlencoder
+ {
+ ostream& ostr_;
-struct urlencoder
-{
- ostream& ostr_;
+ urlencoder( ostream& ostr ): ostr_( ostr ) {}
+
+ void operator()( char ch )
+ {
+ static const char allowedChars[] = {
+ // 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , A , B , C , D , E , F ,
+ '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', //00
+ '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', //10
+ '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', 0x2D,0x2E,0x2F, //20
+ 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,'_', '_', '_', '_', '_', '_', //30
+ '_', 0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F, //40
+ 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,'_', '_', '_', '_', '_', //50
+ '_', 0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F, //60
+ 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,'_', '_', '_', '_', '_' //70
+ // everything above 127 (for signed char, below zero) is replaced with '_'
+ };
+
+ if ( ch == ' ' )
+ ostr_ << '+';
+ else if ( static_cast< signed char >( ch ) < 0 || allowedChars[ size_t( ch ) ] == '_' )
+ ostr_ << '%' << setw( 2 ) << setfill( '0' ) << hex << int( static_cast< unsigned char >( ch ) );
+ else
+ ostr_ << ch;
+ }
+ };
- urlencoder( ostream& ostr ): ostr_( ostr ) {}
-
- void operator()( char ch )
+ string StringUrlEncode( string const& input )
{
- static const char allowedChars[] = {
- // 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , A , B , C , D , E , F ,
- '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', //00
- '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', //10
- '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', 0x2D,0x2E,0x2F, //20
- 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,'_', '_', '_', '_', '_', '_', //30
- '_', 0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F, //40
- 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,'_', '_', '_', '_', '_', //50
- '_', 0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F, //60
- 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,'_', '_', '_', '_', '_' //70
- // everything above 127 (for signed char, below zero) is replaced with '_'
- };
-
- if ( ch == ' ' )
- ostr_ << '+';
- else if ( static_cast< signed char >( ch ) < 0 || allowedChars[ size_t( ch ) ] == '_' )
- ostr_ << '%' << setw( 2 ) << setfill( '0' ) << hex << int( static_cast< unsigned char >( ch ) );
- else
- ostr_ << ch;
+ ostringstream ostr;
+ for_each( input.begin(), input.end(), urlencoder( ostr ) );
+ return ostr.str();
}
-};
-
-string StringUrlEncode( string const& input )
-{
- ostringstream ostr;
- for_each( input.begin(), input.end(), urlencoder( ostr ) );
- return ostr.str();
-}
// returns the content of <element>...</element>
-string GetXMLValue( std::string const& xml, std::string const& element )
-{
- string start = "<" + element + ">";
- string end = "</" + element + ">";
- string::size_type startPos = xml.find(start);
- if (startPos == string::npos) return "";
- string::size_type endPos = xml.find(end);
- if (endPos == string::npos) return "";
- return xml.substr(startPos + start.size(), endPos - startPos - start.size());
-}
+ string GetXMLValue( std::string const& xml, std::string const& element )
+ {
+ string start = "<" + element + ">";
+ string end = "</" + element + ">";
+ string::size_type startPos = xml.find(start);
+ if (startPos == string::npos) return "";
+ string::size_type endPos = xml.find(end);
+ if (endPos == string::npos) return "";
+ return xml.substr(startPos + start.size(), endPos - startPos - start.size());
+ }
// return the time value as time_t from <datestring> formatted with <format>
-time_t GetDateFromDatePicker(std::string const& datestring, std::string const& format)
-{
- if (datestring.empty())
- return 0;
- int year = lexical_cast< int >(datestring.substr(format.find("yyyy"), 4));
- int month = lexical_cast< int >(datestring.substr(format.find("mm"), 2));
- int day = lexical_cast< int >(datestring.substr(format.find("dd"), 2));
- struct tm tm_r;
- tm_r.tm_year = year - 1900;
- tm_r.tm_mon = month -1;
- tm_r.tm_mday = day;
- tm_r.tm_hour = tm_r.tm_min = tm_r.tm_sec = 0;
- tm_r.tm_isdst = -1; // makes sure mktime() will determine the correct DST setting
- return mktime(&tm_r);
-}
+ time_t GetDateFromDatePicker(std::string const& datestring, std::string const& format)
+ {
+ if (datestring.empty())
+ return 0;
+ int year = lexical_cast< int >(datestring.substr(format.find("yyyy"), 4));
+ int month = lexical_cast< int >(datestring.substr(format.find("mm"), 2));
+ int day = lexical_cast< int >(datestring.substr(format.find("dd"), 2));
+ struct tm tm_r;
+ tm_r.tm_year = year - 1900;
+ tm_r.tm_mon = month -1;
+ tm_r.tm_mday = day;
+ tm_r.tm_hour = tm_r.tm_min = tm_r.tm_sec = 0;
+ tm_r.tm_isdst = -1; // makes sure mktime() will determine the correct DST setting
+ return mktime(&tm_r);
+ }
// format is in datepicker format ('mm' for month, 'dd' for day, 'yyyy' for year)
-std::string DatePickerToC(time_t date, std::string const& format)
-{
- if (date == 0) return "";
- std::string cformat = format;
- cformat = StringReplace(cformat, "mm", "%m");
- cformat = StringReplace(cformat, "dd", "%d");
- cformat = StringReplace(cformat, "yyyy", "%Y");
- return FormatDateTime(cformat.c_str(), date);
-}
+ std::string DatePickerToC(time_t date, std::string const& format)
+ {
+ if (date == 0) return "";
+ std::string cformat = format;
+ cformat = StringReplace(cformat, "mm", "%m");
+ cformat = StringReplace(cformat, "dd", "%d");
+ cformat = StringReplace(cformat, "yyyy", "%Y");
+ return FormatDateTime(cformat.c_str(), date);
+ }
} // namespace vdrlive