Merge branch 'master' of github.com:OpenELEC/OpenELEC.tv

This commit is contained in:
Stephan Raue 2013-10-06 22:06:50 +02:00
commit 50b2c60c44
33 changed files with 660 additions and 3813 deletions

19
TODO
View File

@ -1,2 +1,21 @@
ncurses-5.8/5.9:
- segfaults in nano and dialog -> using ncurses-5.7
intel-gpu-tools:
- remove this package after gotham.
not needed anymore as xbmc has "use limited
color space" option
timezone-data:
- fix tzdata-setup for gotham. now there is no
<timezone> in guisettings.xml or ping Montellese
systemd:
- fix graphical.target/xorg deps mess
irserver:
- rework irserver/init.d for systemd
RTL8192CU:
- add CONFIG_RTL8192CU to all kernel configs
and test removing this package

View File

@ -34,6 +34,7 @@ mkdir -p .build-host && cd .build-host
--disable-static \
--enable-shared \
--disable-demos \
--with-atomictype=pthread \
--disable-unittest
make
@ -55,6 +56,7 @@ mkdir -p .build-target && cd .build-target
--enable-static \
--disable-shared \
--disable-demos \
--with-atomictype=pthread \
--disable-unittest
$MAKEINSTALL

View File

@ -19,7 +19,7 @@
################################################################################
PKG_NAME="cxxtools"
PKG_VERSION="2.1.1"
PKG_VERSION="2.2"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL-2"
@ -33,4 +33,4 @@ PKG_SHORTDESC="cxxtools: a collection of general-purpose C++ classes"
PKG_LONGDESC="Cxxtools is a collection of general-purpose C++ classes"
PKG_IS_ADDON="no"
PKG_AUTORECONF="yes"
PKG_AUTORECONF="no"

View File

@ -1,278 +0,0 @@
diff --git a/src/bin/formatter.cpp b/src/bin/formatter.cpp
index 020475e..516d145 100644
--- a/src/bin/formatter.cpp
+++ b/src/bin/formatter.cpp
@@ -218,7 +218,7 @@ void Formatter::addValueString(const std::string& name, const std::string& type,
if (type == "int")
{
- if (value.size() > 0 && (value[0] == L'-' || value[0] == L'+'))
+ if (value.size() > 0 && ( (int) value[0] == (int) L'-' || (int) value[0] == (int) L'+'))
{
int64_t v = convert<int64_t>(value);
printInt(*_out, v, name);
diff --git a/src/csvparser.cpp b/src/csvparser.cpp
index f9ee8dd..9d57dc8 100644
--- a/src/csvparser.cpp
+++ b/src/csvparser.cpp
@@ -76,23 +76,23 @@ void CsvParser::begin(DeserializerBase& handler)
void CsvParser::advance(Char ch)
{
- if (ch == L'\n')
+ if ( (int) ch == (int) L'\n')
++_lineNo;
switch (_state)
{
case state_detectDelim:
- if (isalnum(ch) || ch == L'_' || ch == ' ')
+ if (isalnum(ch) || (int) ch == (int) L'_' || (int) ch == (int) ' ')
{
_titles.back() += ch.narrow();
}
- else if (ch == L'\n' || ch == L'\r')
+ else if ( (int) ch == (int) L'\n' || (int) ch == (int) L'\r')
{
log_debug("title=\"" << _titles.back() << '"');
_noColumns = 1;
- _state = (ch == L'\r' ? state_cr : state_rowstart);
+ _state = ( (int) ch == (int) L'\r' ? state_cr : state_rowstart);
}
- else if (ch == L'\'' || ch == L'"')
+ else if ( (int) ch == (int) L'\'' || (int) ch == (int) L'"')
{
_quote = ch;
_state = state_detectDelim_q;
@@ -119,17 +119,17 @@ void CsvParser::advance(Char ch)
break;
case state_detectDelim_postq:
- if (isalnum(ch) || ch == L'_' || ch == L'\'' || ch == L'"' || ch == L' ')
+ if (isalnum(ch) || (int) ch == (int) L'_' || (int) ch == (int) L'\'' || (int) ch == (int) L'"' || (int) ch == (int) L' ')
{
std::ostringstream msg;
msg << "invalid character '" << ch.narrow() << "' within csv title of column " << _titles.size();
SerializationError::doThrow(msg.str());
}
- else if (ch == L'\n' || ch == L'\r')
+ else if ( (int) ch == (int) L'\n' || (int) ch == (int) L'\r')
{
log_debug("title=\"" << _titles.back() << '"');
_noColumns = 1;
- _state = (ch == L'\r' ? state_cr : state_rowstart);
+ _state = ( (int) ch == (int) L'\r' ? state_cr : state_rowstart);
}
else
{
@@ -142,10 +142,10 @@ void CsvParser::advance(Char ch)
break;
case state_title:
- if (ch == L'\n' || ch == L'\r')
+ if ( (int) ch == (int) L'\n' || (int) ch == (int) L'\r')
{
log_debug("title=\"" << _titles.back() << '"');
- _state = (ch == L'\r' ? state_cr : state_rowstart);
+ _state = ( (int) ch == (int) L'\r' ? state_cr : state_rowstart);
_noColumns = _titles.size();
}
else if (ch == _delimiter)
@@ -153,7 +153,7 @@ void CsvParser::advance(Char ch)
log_debug("title=\"" << _titles.back() << '"');
_titles.push_back(std::string());
}
- else if (ch == '\'' || ch == '\"')
+ else if ( (int) ch == (int) '\'' || (int) ch == (int) '\"')
{
if (_titles.back().empty())
{
@@ -185,10 +185,10 @@ void CsvParser::advance(Char ch)
break;
case state_qtitlep:
- if (ch == L'\n' || ch == L'\r')
+ if ( (int) ch == (int) L'\n' || (int) ch == (int) L'\r')
{
log_debug("title=\"" << _titles.back() << '"');
- _state = (ch == L'\r' ? state_cr : state_rowstart);
+ _state = ( (int) ch == (int) L'\r' ? state_cr : state_rowstart);
_noColumns = _titles.size();
}
else if (ch == _delimiter)
@@ -207,7 +207,7 @@ void CsvParser::advance(Char ch)
case state_cr:
_state = state_rowstart;
- if (ch == L'\n')
+ if ( (int) ch == (int) L'\n')
{
break;
}
@@ -228,14 +228,14 @@ void CsvParser::advance(Char ch)
_column < _titles.size() ? _titles[_column] : std::string(),
std::string(), SerializationInfo::Value);
- if (ch == L'\n' || ch == L'\r')
+ if ( (int) ch == (int) L'\n' || (int) ch == (int) L'\r')
{
_deserializer->leaveMember();
checkNoColumns(_column, _noColumns, _lineNo);
_deserializer->leaveMember();
- _state = (ch == L'\r' ? state_cr : state_rowstart);
+ _state = ( (int) ch == (int) L'\r' ? state_cr : state_rowstart);
}
- else if (ch == L'"' || ch == L'\'')
+ else if ((int) ch == L'"' || (int) ch == L'\'')
{
_quote = ch;
_state = state_qdata;
@@ -253,7 +253,7 @@ void CsvParser::advance(Char ch)
break;
case state_data0:
- if (ch == L'"' || ch == L'\'')
+ if ( (int) ch == (int) L'"' || (int) ch == (int) L'\'')
{
_quote = ch;
_state = state_qdata;
@@ -261,7 +261,7 @@ void CsvParser::advance(Char ch)
}
case state_data:
- if (ch == L'\n' || ch == L'\r')
+ if ( (int) ch == (int) L'\n' || (int) ch == (int) L'\r')
{
log_debug("value \"" << _value << '"');
_deserializer->setValue(_value);
@@ -269,7 +269,7 @@ void CsvParser::advance(Char ch)
checkNoColumns(_column, _noColumns, _lineNo);
_deserializer->leaveMember(); // leave data item
_deserializer->leaveMember(); // leave row
- _state = (ch == L'\r' ? state_cr : state_rowstart);
+ _state = ( (int) ch == (int) L'\r' ? state_cr : state_rowstart);
}
else if (ch == _delimiter)
{
@@ -307,11 +307,11 @@ void CsvParser::advance(Char ch)
break;
case state_qdata_end:
- if (ch == L'\n' || ch == L'\r')
+ if ( (int) ch == (int) L'\n' || (int) ch == (int) L'\r')
{
checkNoColumns(_column, _noColumns, _lineNo);
_deserializer->leaveMember(); // leave row
- _state = (ch == L'\r' ? state_cr : state_rowstart);
+ _state = ( (int) ch == (int) L'\r' ? state_cr : state_rowstart);
}
else if (ch == _delimiter)
{
diff --git a/src/jsonformatter.cpp b/src/jsonformatter.cpp
index 1604d3e..07ada52 100644
--- a/src/jsonformatter.cpp
+++ b/src/jsonformatter.cpp
@@ -323,25 +323,25 @@ void JsonFormatter::stringOut(const std::string& str)
{
for (std::string::const_iterator it = str.begin(); it != str.end(); ++it)
{
- if (*it == '"')
+ if ( (int) *it == (int) '"')
*_ts << L'\\'
<< L'\"';
- else if (*it == '\\')
+ else if ( (int) *it == (int) '\\')
*_ts << L'\\'
<< L'\\';
- else if (*it == '\b')
+ else if ( (int) *it == (int) '\b')
*_ts << L'\\'
<< L'b';
- else if (*it == '\f')
+ else if ( (int) *it == (int) '\f')
*_ts << L'\\'
<< L'f';
- else if (*it == '\n')
+ else if ( (int) *it == (int) '\n')
*_ts << L'\\'
<< L'n';
- else if (*it == '\r')
+ else if ( (int) *it == (int) '\r')
*_ts << L'\\'
<< L'r';
- else if (*it == '\t')
+ else if ( (int) *it == (int) '\t')
*_ts << L'\\'
<< L't';
else if (static_cast<unsigned char>(*it) >= 0x80 || static_cast<unsigned char>(*it) < 0x20)
@@ -364,25 +364,25 @@ void JsonFormatter::stringOut(const cxxtools::String& str)
{
for (cxxtools::String::const_iterator it = str.begin(); it != str.end(); ++it)
{
- if (*it == L'"')
+ if ( (int) *it == (int) L'"')
*_ts << L'\\'
<< L'\"';
- else if (*it == L'\\')
+ else if ( (int) *it == (int) L'\\')
*_ts << L'\\'
<< L'\\';
- else if (*it == L'\b')
+ else if ( (int) *it == (int) L'\b')
*_ts << L'\\'
<< L'b';
- else if (*it == L'\f')
+ else if ( (int) *it == (int) L'\f')
*_ts << L'\\'
<< L'f';
- else if (*it == L'\n')
+ else if ( (int) *it == (int) L'\n')
*_ts << L'\\'
<< L'n';
- else if (*it == L'\r')
+ else if ( (int) *it == (int) L'\r')
*_ts << L'\\'
<< L'r';
- else if (*it == L'\t')
+ else if ( (int) *it == (int) L'\t')
*_ts << L'\\'
<< L't';
else if (it->value() >= 0x80 || it->value() < 0x20)
diff --git a/src/xml/entityresolver.cpp b/src/xml/entityresolver.cpp
index fb55f08..58ea86a 100644
--- a/src/xml/entityresolver.cpp
+++ b/src/xml/entityresolver.cpp
@@ -563,19 +563,19 @@ namespace
String EntityResolver::resolveEntity(const String& entity) const
{
- if (!entity.empty() && entity[0] == L'#')
+ if (!entity.empty() && (int) entity[0] == (int) L'#')
{
int code = 0;
- if (entity.size() > 2 && entity[1] == L'x')
+ if (entity.size() > 2 && (int) entity[1] == (int) L'x')
{
// hex notation: &#xABCD;
for (String::const_iterator it = entity.begin() + 2; it != entity.end(); ++it)
{
- if (*it >= L'0' && *it <= L'9')
+ if ( (int) *it >= (int) L'0' && (int) *it <= (int) L'9')
code = code * 16 + (it->value() - L'0');
- else if (*it >= L'A' && *it <= L'F')
+ else if ( (int) *it >= (int) L'A' && (int) *it <= (int) L'F')
code = code * 16 + (it->value() - L'A' + 10);
- else if (*it >= L'a' && *it <= L'f')
+ else if ( (int) *it >= (int) L'a' && (int) *it <= (int) L'f')
code = code * 16 + (it->value() - L'a' + 10);
else
throw std::runtime_error(std::string("invalid entity ") + entity.narrow());
@@ -586,7 +586,7 @@ String EntityResolver::resolveEntity(const String& entity) const
// dec notation: &#9999;
for (String::const_iterator it = entity.begin() + 1; it != entity.end(); ++it)
{
- if (*it >= L'0' && *it <= L'9')
+ if ( (int) *it >= (int) L'0' && (int) *it <= (int) L'9')
code = code * 10 + (it->value() - '0');
else
throw std::runtime_error(std::string("invalid entity ") + entity.narrow());

View File

@ -0,0 +1,17 @@
Index: cxxtools-2.2/include/cxxtools/char.h
===================================================================
--- cxxtools-2.2.orig/include/cxxtools/char.h 2013-05-05 14:18:00.180572107 +0300
+++ cxxtools-2.2/include/cxxtools/char.h 2013-05-05 14:18:00.176571966 +0300
@@ -148,6 +148,12 @@
friend bool operator==(char a, const Char& b)
{ return a == b.value(); }
+ //! @brief Returns $true$ if the a and b are the same character; $false$ otherwise.
+ //! @return $true$ if the a and b are the same character; $false$ otherwise.
+ friend bool operator==(const Char& a, unsigned int b)
+ { return a.value() == b; }
+
+
//! @brief Returns $true$ if the a and b are not the same character; $false$ otherwise.
//! @return $true$ if the a and b are not the same character; $false$ otherwise.
friend bool operator!=(const Char& a, const Char& b)

View File

@ -0,0 +1,12 @@
Index: cxxtools-2.0/src/hdstream.cpp
===================================================================
--- cxxtools-2.0.orig/src/hdstream.cpp 2011-08-08 13:07:59.567275994 +0300
+++ cxxtools-2.0/src/hdstream.cpp 2011-08-08 13:08:11.447275959 +0300
@@ -30,6 +30,7 @@
#include <ios>
#include <iomanip>
#include <cctype>
+#include <cstdio>
namespace cxxtools
{

View File

@ -0,0 +1,10 @@
Index: cxxtools-2.2/src/Makefile.am
===================================================================
--- cxxtools-2.2.orig/src/Makefile.am 2013-05-05 13:56:03.225204926 +0300
+++ cxxtools-2.2/src/Makefile.am 2013-05-05 13:56:14.017219885 +0300
@@ -215,4 +215,4 @@
endif
libcxxtools_la_LIBADD = $(LIBICONV)
-libcxxtools_la_LDFLAGS = -version-info @sonumber@ @SHARED_LIB_FLAG@
+libcxxtools_la_LDFLAGS = -version-info @sonumber@

View File

@ -1,12 +0,0 @@
Index: vdr-plugin-live-0.2.0/thread.cpp
===================================================================
--- vdr-plugin-live-0.2.0.orig/thread.cpp 2011-08-25 21:58:33.000000000 +0200
+++ vdr-plugin-live-0.2.0/thread.cpp 2011-08-25 21:58:37.000000000 +0200
@@ -3,6 +3,7 @@
#include <stdexcept>
#include <vdr/tools.h>
#include <tnt/tntnet.h>
+#include <tnt/tntconfig.h>
#include "thread.h"
#include "tntconfig.h"

View File

@ -0,0 +1,290 @@
commit 042724e30d5690ab67a6c04aea48a16b9a3b085b
Author: Dieter Hametner <dh (plus) vdr (at) gekrumbel (dot) de>
Date: Fri May 3 01:37:41 2013 +0200
Make LIVE compile and work with Tntnet and cxxtools version 2.2.
Thanks to Tommi Mäkitalo for his help on resolving the issues.
This problem was reported by Martin Gansser and by the user 'varas' in
the bugtracker as bug #1351. This commit fixes that bug.
diff --git a/pages/recordings.ecpp b/pages/recordings.ecpp
index 51018bb..80f145b 100644
--- a/pages/recordings.ecpp
+++ b/pages/recordings.ecpp
@@ -205,7 +205,11 @@ for (recIter = recItems.begin(); recIter != recItems.end(); ++recIter) {
<& rec_item_dir name=(recItem->Name()) level=(level) &>
<%cpp>
#if TNT_HAS_QUERYPARAMS
+#if TNT_QUERYPARAMS_NO_BOOL
+ tnt::QueryParams recItemParams(qparam);
+#else
tnt::QueryParams recItemParams(qparam, false);
+#endif
#else
cxxtools::QueryParams recItemParams(qparam, false);
#endif
diff --git a/tntconfig.cpp b/tntconfig.cpp
index 3a1fd14..3325776 100644
--- a/tntconfig.cpp
+++ b/tntconfig.cpp
@@ -3,7 +3,13 @@
#include <fstream>
#include <sstream>
#include <stdexcept>
+#include "tntfeatures.h"
+#if TNT_LOG_SERINFO
+#include <cxxtools/log.h>
+#include <cxxtools/xml/xmldeserializer.h>
+#else
#include <cxxtools/loginit.h>
+#endif
#include <tnt/sessionscope.h>
#include <tnt/httpreply.h>
#include <vdr/config.h>
@@ -181,19 +187,67 @@ namespace vdrlive {
#endif
#if TNT_CONFIG_INTERNAL
+ namespace {
+ std::string GetResourcePath()
+ {
+#if APIVERSNUM > 10729
+ string resourceDir(Plugin::GetResourceDirectory());
+ return resourceDir;
+#else
+ string configDir(Plugin::GetConfigDirectory());
+ return configDir;
+#endif
+ }
+
+ void MapUrl(tnt::Tntnet & app, const char *rule, const char * component, std::string const & instPath, const char * pathInfo, const char * mime_type)
+ {
+#if TNT_MAPURL_NAMED_ARGS
+ tnt::Mapping::args_type argMap;
+ argMap.insert(std::make_pair("mime-type", mime_type));
+#endif
+ app.mapUrl(rule, component)
+ .setPathInfo(instPath + pathInfo)
+#if TNT_MAPURL_NAMED_ARGS
+ .setArgs(argMap);
+#else
+ .pushArg(mime_type);
+#endif
+ }
+ }
+
void TntConfig::Configure(tnt::Tntnet& app) const
{
string const configDir(Plugin::GetConfigDirectory());
-#if APIVERSNUM > 10729
- string const resourceDir(Plugin::GetResourceDirectory());
-#endif
+#if TNT_LOG_SERINFO
+ cxxtools::SerializationInfo si;
+ std::istringstream logXmlConf(
+ "<logging>\n"
+ " <rootlogger>" + LiveSetup().GetTntnetLogLevel() + "</rootlogger>\n"
+ " <loggers>\n"
+ " <logger>\n"
+ " <category>cxxtools</category>\n"
+ " <level>" + LiveSetup().GetTntnetLogLevel() + "</level>\n"
+ " </logger>\n"
+ " <logger>\n"
+ " <category>tntnet</category>\n"
+ " <level>" + LiveSetup().GetTntnetLogLevel() + "</level>\n"
+ " </logger>\n"
+ " </loggers>\n"
+ "</logging>\n"
+ );
+ cxxtools::xml::XmlDeserializer d(logXmlConf);
+ d.deserialize(si);
+ log_init(si);
+#else
std::istringstream logConf(
"rootLogger=" + LiveSetup().GetTntnetLogLevel() + "\n"
"logger.tntnet=" + LiveSetup().GetTntnetLogLevel() + "\n"
"logger.cxxtools=" + LiveSetup().GetTntnetLogLevel() + "\n"
);
+
log_init(logConf);
+#endif
// +++ CAUTION +++ CAUTION +++ CAUTION +++ CAUTION +++ CAUTION +++
// ------------------------------------------------------------------------
@@ -229,13 +283,12 @@ namespace vdrlive {
// the following selects the theme specific 'theme.css' file
// inserted by 'tadi' -- verified with above, but not counterchecked yet!
- app.mapUrl("^/themes/([^/]*)/css.*/(.+\\.css)", "content")
-#if APIVERSNUM > 10729
- .setPathInfo(resourceDir + "/themes/$1/css/$2")
-#else
- .setPathInfo(configDir + "/themes/$1/css/$2")
-#endif
- .pushArg("text/css");
+ MapUrl(app,
+ "^/themes/([^/]*)/css.*/(.+\\.css)",
+ "content",
+ GetResourcePath(),
+ "/themes/$1/css/$2",
+ "text/css");
// the following rules provide a search scheme for images. The first
// rule where a image is found, terminates the search.
@@ -243,79 +296,82 @@ namespace vdrlive {
// 2. /img/<imgname>.<ext>
// deprecated: 3. <imgname>.<ext> (builtin images)
// inserted by 'tadi' -- verified with above, but not counterchecked yet!
- app.mapUrl("^/themes/([^/]*)/img.*/(.+)\\.(.+)", "content")
-#if APIVERSNUM > 10729
- .setPathInfo(resourceDir + "/themes/$1/img/$2.$3")
-#else
- .setPathInfo(configDir + "/themes/$1/img/$2.$3")
-#endif
- .pushArg("image/$3");
- app.mapUrl("^/themes/([^/]*)/img.*/(.+)\\.(.+)", "content")
-#if APIVERSNUM > 10729
- .setPathInfo(resourceDir + "/img/$2.$3")
-#else
- .setPathInfo(configDir + "/img/$2.$3")
-#endif
- .pushArg("image/$3");
+ MapUrl(app,
+ "^/themes/([^/]*)/img.*/(.+)\\.(.+)",
+ "content",
+ GetResourcePath(),
+ "/themes/$1/img/$2.$3",
+ "image/$3");
+
+ MapUrl(app,
+ "^/themes/([^/]*)/img.*/(.+)\\.(.+)",
+ "content",
+ GetResourcePath(),
+ "/img/$2.$3",
+ "image/$3");
// deprecated: file << "MapUrl ^/themes/([^/]*)/img.*/(.+)\\.(.+) $2@" << endl;
// Epg images
string const epgImgPath(LiveSetup().GetEpgImageDir());
if (!epgImgPath.empty()) {
// inserted by 'tadi' -- verified with above, but not counterchecked yet!
- app.mapUrl("^/epgimages/([^/]*)\\.([^./]+)", "content")
- .setPathInfo(epgImgPath + "/$1.$2")
- .pushArg("image/$2");
+ MapUrl(app,
+ "^/epgimages/([^/]*)\\.([^./]+)",
+ "content",
+ epgImgPath,
+ "/$1.$2",
+ "image/$2");
}
// select additional (not build in) javascript.
// WARNING: no path components with '.' in the name are allowed. Only
// the basename may contain dots and must end with '.js'
// inserted by 'tadi' -- verified with above, but not counterchecked yet!
- app.mapUrl("^/js(/[^.]*)([^/]*\\.js)", "content")
-#if APIVERSNUM > 10729
- .setPathInfo(resourceDir + "/js$1$2")
-#else
- .setPathInfo(configDir + "/js$1$2")
-#endif
- .pushArg("text/javascript");
+ MapUrl(app,
+ "^/js(/[^.]*)([^/]*\\.js)",
+ "content",
+ GetResourcePath(),
+ "/js$1$2",
+ "text/javascript");
// map to 'css/basename(uri)'
// inserted by 'tadi' -- verified with above, but not counterchecked yet!
- app.mapUrl("^/css.*/(.+)", "content")
-#if APIVERSNUM > 10729
- .setPathInfo(resourceDir + "/css/$1")
-#else
- .setPathInfo(configDir + "/css/$1")
-#endif
- .pushArg("text/css");
+ MapUrl(app,
+ "^/css.*/(.+)",
+ "content",
+ GetResourcePath(),
+ "/css/$1",
+ "text/css");
// map to 'img/basename(uri)'
// inserted by 'tadi' -- verified with above, but not counterchecked yet!
- app.mapUrl("^/img.*/(.+)\\.([^.]+)", "content")
-#if APIVERSNUM > 10729
- .setPathInfo(resourceDir + "/img/$1.$2")
-#else
- .setPathInfo(configDir + "/img/$1.$2")
-#endif
- .pushArg("image/$2");
+ MapUrl(app,
+ "^/img.*/(.+)\\.([^.]+)",
+ "content",
+ GetResourcePath(),
+ "/img/$1.$2",
+ "image/$2");
// Map favicon.ico into img directory
- app.mapUrl("^/favicon.ico$", "content")
-#if APIVERSNUM > 10729
- .setPathInfo(resourceDir + "/img/favicon.ico")
-#else
- .setPathInfo(configDir + "/img/favicon.ico")
-#endif
- .pushArg("image/x-icon");
+ MapUrl(app,
+ "^/favicon.ico$",
+ "content",
+ GetResourcePath(),
+ "/img/favicon.ico",
+ "image/x-icon");
// takes first path components without 'extension' when it does not
// contain '.'
// modified by 'tadi' -- verified with above, but not counterchecked yet!
app.mapUrl("^/([^./]+)(.*)?", "$1");
+#if TNT_GLOBAL_TNTCONFIG
+ tnt::TntConfig::it().sessionTimeout = 86400;
+ tnt::TntConfig::it().defaultContentType = string("text/html; charset=") + LiveI18n().CharacterEncoding();
+#else
tnt::Sessionscope::setDefaultTimeout(86400);
tnt::HttpReply::setDefaultContentType(string("text/html; charset=") + LiveI18n().CharacterEncoding());
+#endif
Setup::IpList const& ips = LiveSetup().GetServerIps();
int port = LiveSetup().GetServerPort();
diff --git a/tntfeatures.h b/tntfeatures.h
index 6de1f88..76d3757 100644
--- a/tntfeatures.h
+++ b/tntfeatures.h
@@ -17,6 +17,9 @@
// Query params are now in tntnet and not in cxxtools
#define TNT_HAS_QUERYPARAMS (TNTVERSION >= 16060)
+// Query params without boolean parameter
+#define TNT_QUERYPARAMS_NO_BOOL (TNTVERSION >= 22000)
+
// One can request the host part of the request url
#define TNT_HAS_GETHOST (TNTVERSION >= 16060)
@@ -26,4 +29,13 @@
// version of TNTNET that binds ipv6 addresses with IPV6_V6ONLY flag set to true
#define TNT_IPV6_V6ONLY (CXXTOOLVER >= 21000)
+// version of TNTNET with properties deserializer for logger configuration args.
+#define TNT_LOG_SERINFO (CXXTOOLVER >= 22000)
+
+// version of TNTNET wich expects name, value mappings for Url-Mapper arguments.
+#define TNT_MAPURL_NAMED_ARGS (TNTVERSION >= 22000)
+
+// version of TNTNET where configuration is global
+#define TNT_GLOBAL_TNTCONFIG (TNTVERSION >= 22000)
+
#endif // VDR_LIVE_TNTFEATURES_H

View File

@ -0,0 +1,25 @@
commit 69f84f95fa875c6f562294b1a6a1ea6f584d3f6c
Author: Dieter Hametner <dh (plus) vdr (at) gekrumbel (dot) de>
Date: Sat May 4 22:27:09 2013 +0200
With tntnet v2.2 use also the request.getArg(<name>) function.
In the previous commit support for tntnet 2.2 was added. The URL
mapping changed in that version and allows now named arguments. This
change makes uses of this feature now.
diff --git a/pages/content.ecpp b/pages/content.ecpp
index 27d827c..cde092f 100644
--- a/pages/content.ecpp
+++ b/pages/content.ecpp
@@ -17,7 +17,11 @@ bool logged_in(false);
string mime("image/png");
if (request.getArgsCount() > 0) {
+#if TNT_MAPURL_NAMED_ARGS
+ mime = request.getArg("mime-type");
+#else
mime = request.getArg(0);
+#endif
// dsyslog("vdrlive::content found mime arg (%s)", mime.c_str());
}
reply.setContentType(mime);

View File

@ -19,7 +19,7 @@
################################################################################
PKG_NAME="vdr-plugin-dvbapi"
PKG_VERSION="555272d"
PKG_VERSION="2be5e15"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -20,7 +20,7 @@
################################################################################
PKG_NAME="vdr"
PKG_VERSION="2.0.1"
PKG_VERSION="2.0.3"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -33,8 +33,8 @@ mkdir -p .build-host && cd .build-host
--prefix=$ROOT/$TOOLCHAIN \
--disable-static \
--enable-shared \
--disable-unittest \
--with-server=no \
--with-cgi=no \
--with-sdk=yes \
--with-demos=no \
--with-epoll=yes \
@ -58,11 +58,13 @@ mkdir -p .build-target && cd .build-target
--sysconfdir=/etc \
--disable-static \
--enable-shared \
--disable-unittest \
--with-sysroot=$SYSROOT_PREFIX \
--with-server=no \
--with-cgi=no \
--with-sdk=yes \
--with-sdk=no \
--with-demos=no \
--with-epoll=yes \
--with-ssl=no \
--with-stressjob=no
$MAKEINSTALL

View File

@ -19,7 +19,7 @@
################################################################################
PKG_NAME="tntnet"
PKG_VERSION="2.1"
PKG_VERSION="2.2"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL-2"
@ -33,4 +33,4 @@ PKG_SHORTDESC="tntnet: C++ Dynamite for the Web"
PKG_LONGDESC="Tntnet is a modular, multithreaded, high performance webapplicationserver for C++"
PKG_IS_ADDON="no"
PKG_AUTORECONF="yes"
PKG_AUTORECONF="no"

View File

@ -0,0 +1,18 @@
Description: Include unistd.h to fix FTBFS with gcc-4.7
tntnet (2.1-1ubuntu1) quantal; urgency=low
.
* Add missing header to fix FTBFS with gcc4.7 on non-amd64 archs
Author: Micah Gersten <micahg@ubuntu.com>
Index: tntnet-2.2/framework/defcomp/static.cpp
===================================================================
--- tntnet-2.2.orig/framework/defcomp/static.cpp 2013-04-21 22:13:57.000000000 +0300
+++ tntnet-2.2/framework/defcomp/static.cpp 2013-05-19 23:12:17.000000000 +0300
@@ -34,6 +34,7 @@
#include <tnt/http.h>
#include <tnt/httpheader.h>
#include <tnt/comploader.h>
+#include <unistd.h>
#include <fstream>
#include <cxxtools/log.h>
#include <cxxtools/systemerror.h>

View File

@ -71,6 +71,7 @@ mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/plugin
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/config/plugins/xvdr
cp -PR $BUILD/vdr-plugin-xvdr-*/xvdr/allowed_hosts.conf $ADDON_BUILD/$PKG_ADDON_ID/config/plugins/xvdr
cp -PR $BUILD/vdr-plugin-xvdr-*/xvdr/xvdr.conf $ADDON_BUILD/$PKG_ADDON_ID/config/plugins/xvdr
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/config/plugins/vnsiserver
cp -PR $BUILD/vdr-plugin-vnsiserver-*/vnsiserver/allowed_hosts.conf $ADDON_BUILD/$PKG_ADDON_ID/config/plugins/vnsiserver
@ -80,7 +81,7 @@ mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/bin
cp -P $BUILD/vdr-plugin-xmltv2vdr*/dist/epgdata2xmltv/epgdata2xmltv $ADDON_BUILD/$PKG_ADDON_ID/bin
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/lib
cp -P $BUILD/tntnet-[0-9]*/.build-target/framework/common/.libs/*.so* $ADDON_BUILD/$PKG_ADDON_ID/lib
cp -P $BUILD/tntnet-[0-9]*/.build-target/framework/common/.libs/libtntnet.so.11.0.0 $ADDON_BUILD/$PKG_ADDON_ID/lib/libtntnet.so.11
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/config/plugins/streamdev-server
cp -PR $BUILD/vdr-plugin-streamdev-*/streamdev-server/streamdevhosts.conf $ADDON_BUILD/$PKG_ADDON_ID/config/plugins/streamdev-server

View File

@ -0,0 +1,31 @@
diff --git a/drivers/media/dvb-frontends/m88ds3103.c b/drivers/media/dvb-frontends/m88ds3103.c
index 315809d..54dff7c 100644
--- a/drivers/media/dvb-frontends/m88ds3103.c
+++ b/drivers/media/dvb-frontends/m88ds3103.c
@@ -1244,6 +1244,8 @@ static int m88ds3103_set_frontend(struct dvb_frontend *fe)
dprintk("symbol rate = %d\n", c->symbol_rate);
dprintk("delivery system = %d\n", c->delivery_system);
+ state->delivery_system = c->delivery_system;
+
realFreq = c->frequency;
lpf_offset_KHz = 0;
if(c->symbol_rate < 5000000){
@@ -1501,7 +1503,7 @@ static int m88ds3103_set_frontend(struct dvb_frontend *fe)
}
msleep(20);
}
-
+/*
if((status & FE_HAS_LOCK) == 0){
state->delivery_system = (state->delivery_system == SYS_DVBS) ? SYS_DVBS2 : SYS_DVBS;
m88ds3103_demod_connect(fe, offset_khz);
@@ -1514,7 +1516,7 @@ static int m88ds3103_set_frontend(struct dvb_frontend *fe)
msleep(20);
}
}
-
+*/
if (status & FE_HAS_LOCK){
if(state->config->ci_mode == 2)
m88ds3103_set_clock_ratio(state);

View File

@ -202,7 +202,7 @@ index 2e7493e..7c0b89e 100644
+/* shared with patch_hdmi.c and hda_eld.c */
+#define is_atihdmi(codec) (((codec)->vendor_id & 0xffff0000) == 0x10020000)
+#define is_amdhdmi_rev3(codec) \
+ ((codec)->vendor_id == 0x1002791a && ((codec)->revision_id & 0xff00) >= 0x0300)
+ ((codec)->vendor_id == 0x1002aa01 && ((codec)->revision_id & 0xff00) >= 0x0300)
+
#endif /* __SOUND_HDA_LOCAL_H */
diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c

View File

@ -0,0 +1,33 @@
From 7c1bae9cc4819ed9148354fd878824b40bd7a6a5 Mon Sep 17 00:00:00 2001
From: Stefan Saraev <stefan@saraev.ca>
Date: Sun, 6 Oct 2013 17:48:50 +0300
Subject: [PATCH] fix scrambled/hd channel scan
from wirbelscan:
#define SCAN_TV ( 1 << 0 )
#define SCAN_RADIO ( 1 << 1 )
#define SCAN_FTA ( 1 << 2 )
#define SCAN_SCRAMBLED ( 1 << 3 )
#define SCAN_HD ( 1 << 4 )
---
src/libxvdr/include/xvdr/dataset.h | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/libxvdr/include/xvdr/dataset.h b/src/libxvdr/include/xvdr/dataset.h
index 53b0540..36d9a94 100644
--- a/src/libxvdr/include/xvdr/dataset.h
+++ b/src/libxvdr/include/xvdr/dataset.h
@@ -287,8 +287,8 @@ public:
FLAG_TV = 1,
FLAG_RADIO = 2,
FLAG_FTA = 4,
- FLAG_SCRAMBLED = 16,
- FLAG_HDTV = 32
+ FLAG_SCRAMBLED = 8,
+ FLAG_HDTV = 16
} Flags;
Verbosity verbosity;
--
1.7.2.5

View File

@ -1,159 +0,0 @@
From b0dd079bee34969dade531ec33bc933cf5565964 Mon Sep 17 00:00:00 2001
From: Daniel Meyerholt <dxm523@gmail.com>
Date: Wed, 19 Jun 2013 18:55:54 +0200
Subject: [PATCH] Update xbmc addon headers
---
src/xvdr/XBMCAddon.cpp | 2 +-
src/xvdr/include/DVDDemuxPacket.h | 2 +-
src/xvdr/include/xbmc_addon_dll.h | 2 +-
src/xvdr/include/xbmc_epg_types.h | 2 +-
src/xvdr/include/xbmc_pvr_dll.h | 3 ++-
src/xvdr/include/xbmc_pvr_types.h | 25 ++++++++++++++++++++-----
6 files changed, 26 insertions(+), 10 deletions(-)
diff --git a/src/xvdr/XBMCAddon.cpp b/src/xvdr/XBMCAddon.cpp
index 60bfbe8..23c89a0 100644
--- a/src/xvdr/XBMCAddon.cpp
+++ b/src/xvdr/XBMCAddon.cpp
@@ -828,7 +828,7 @@ int GetRecordingLastPlayedPosition(const PVR_RECORDING &recording)
return mClient->GetRecordingLastPosition(recording.strRecordingId);
}
-PVR_ERROR CallMenuHook(const PVR_MENUHOOK &menuhook) {
+PVR_ERROR CallMenuHook(const PVR_MENUHOOK &menuhook, const PVR_MENUHOOK_DATA &item) {
switch(menuhook.iHookId) {
case XVDR_HOOK_SETTINGS_CHANNELSCAN:
DialogChannelScan();
diff --git a/src/xvdr/include/DVDDemuxPacket.h b/src/xvdr/include/DVDDemuxPacket.h
index 7d9967e..cf3c1e0 100644
--- a/src/xvdr/include/DVDDemuxPacket.h
+++ b/src/xvdr/include/DVDDemuxPacket.h
@@ -1,7 +1,7 @@
#pragma once
/*
- * Copyright (C) 2012 Team XBMC
+ * Copyright (C) 2012-2013 Team XBMC
* http://www.xbmc.org
*
* This Program is free software; you can redistribute it and/or modify
diff --git a/src/xvdr/include/xbmc_addon_dll.h b/src/xvdr/include/xbmc_addon_dll.h
index 9402623..12d3d91 100644
--- a/src/xvdr/include/xbmc_addon_dll.h
+++ b/src/xvdr/include/xbmc_addon_dll.h
@@ -21,7 +21,7 @@
*
*/
-#ifdef _WIN32
+#ifdef TARGET_WINDOWS
#include <windows.h>
#else
#ifndef __cdecl
diff --git a/src/xvdr/include/xbmc_epg_types.h b/src/xvdr/include/xbmc_epg_types.h
index 2284dda..c486be4 100644
--- a/src/xvdr/include/xbmc_epg_types.h
+++ b/src/xvdr/include/xbmc_epg_types.h
@@ -26,7 +26,7 @@
#undef PRAGMA_PACK_BEGIN
#undef PRAGMA_PACK_END
-#if defined(__GNUC__) && !defined(__MINGW32__)
+#if defined(__GNUC__)
#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)
#define ATTRIBUTE_PACKED __attribute__ ((packed))
#define PRAGMA_PACK 0
diff --git a/src/xvdr/include/xbmc_pvr_dll.h b/src/xvdr/include/xbmc_pvr_dll.h
index a40022b..5ef7b95 100644
--- a/src/xvdr/include/xbmc_pvr_dll.h
+++ b/src/xvdr/include/xbmc_pvr_dll.h
@@ -108,10 +108,11 @@
* Call one of the menu hooks (if supported).
* Supported PVR_MENUHOOK instances have to be added in ADDON_Create(), by calling AddMenuHook() on the callback.
* @param menuhook The hook to call.
+ * @param item The selected item for which the hook was called.
* @return PVR_ERROR_NO_ERROR if the hook was called successfully.
* @remarks Optional. Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function.
*/
- PVR_ERROR CallMenuHook(const PVR_MENUHOOK& menuhook);
+ PVR_ERROR CallMenuHook(const PVR_MENUHOOK& menuhook, const PVR_MENUHOOK_DATA &item);
//@}
/*! @name PVR EPG methods
diff --git a/src/xvdr/include/xbmc_pvr_types.h b/src/xvdr/include/xbmc_pvr_types.h
index a8193ed..1fb0c6c 100644
--- a/src/xvdr/include/xbmc_pvr_types.h
+++ b/src/xvdr/include/xbmc_pvr_types.h
@@ -22,7 +22,7 @@
#ifndef __PVRCLIENT_TYPES_H__
#define __PVRCLIENT_TYPES_H__
-#ifdef _WIN32
+#ifdef TARGET_WINDOWS
#include <windows.h>
#else
#ifndef __cdecl
@@ -52,7 +52,7 @@
#undef PRAGMA_PACK_BEGIN
#undef PRAGMA_PACK_END
-#if defined(__GNUC__) && !defined(__MINGW32__)
+#if defined(__GNUC__)
#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)
#define ATTRIBUTE_PACKED __attribute__ ((packed))
#define PRAGMA_PACK 0
@@ -74,10 +74,10 @@
#define PVR_STREAM_MAX_STREAMS 20
/* current PVR API version */
-#define XBMC_PVR_API_VERSION "1.7.0"
+#define XBMC_PVR_API_VERSION "1.8.0"
/* min. PVR API version */
-#define XBMC_PVR_MIN_API_VERSION "1.7.0"
+#define XBMC_PVR_MIN_API_VERSION "1.8.0"
#ifdef __cplusplus
extern "C" {
@@ -121,6 +121,7 @@
*/
typedef enum
{
+ PVR_MENUHOOK_UNKNOWN =-1, /*!< @brief unknown menu hook */
PVR_MENUHOOK_ALL = 0, /*!< @brief all categories */
PVR_MENUHOOK_CHANNEL = 1, /*!< @brief for channels */
PVR_MENUHOOK_TIMER = 2, /*!< @brief for timers */
@@ -310,6 +311,20 @@
} ATTRIBUTE_PACKED PVR_EDL_ENTRY;
/*!
+ * @brief PVR menu hook data
+ */
+ typedef struct PVR_MENUHOOK_DATA
+ {
+ PVR_MENUHOOK_CAT cat;
+ union data {
+ int iEpgUid;
+ PVR_CHANNEL channel;
+ PVR_TIMER timer;
+ PVR_RECORDING recording;
+ } data;
+ } ATTRIBUTE_PACKED PVR_MENUHOOK_DATA;
+
+ /*!
* @brief Structure to transfer the methods from xbmc_pvr_dll.h to XBMC
*/
typedef struct PVRClient
@@ -324,7 +339,7 @@
const char* (__cdecl* GetBackendVersion)(void);
const char* (__cdecl* GetConnectionString)(void);
PVR_ERROR (__cdecl* GetDriveSpace)(long long*, long long*);
- PVR_ERROR (__cdecl* MenuHook)(const PVR_MENUHOOK&);
+ PVR_ERROR (__cdecl* MenuHook)(const PVR_MENUHOOK&, const PVR_MENUHOOK_DATA&);
PVR_ERROR (__cdecl* GetEpg)(ADDON_HANDLE, const PVR_CHANNEL&, time_t, time_t);
int (__cdecl* GetChannelGroupsAmount)(void);
PVR_ERROR (__cdecl* GetChannelGroups)(ADDON_HANDLE, bool);
--
1.8.1.6

View File

@ -0,0 +1,33 @@
From 7c1bae9cc4819ed9148354fd878824b40bd7a6a5 Mon Sep 17 00:00:00 2001
From: Stefan Saraev <stefan@saraev.ca>
Date: Sun, 6 Oct 2013 17:48:50 +0300
Subject: [PATCH] fix scrambled/hd channel scan
from wirbelscan:
#define SCAN_TV ( 1 << 0 )
#define SCAN_RADIO ( 1 << 1 )
#define SCAN_FTA ( 1 << 2 )
#define SCAN_SCRAMBLED ( 1 << 3 )
#define SCAN_HD ( 1 << 4 )
---
src/libxvdr/include/xvdr/dataset.h | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/libxvdr/include/xvdr/dataset.h b/src/libxvdr/include/xvdr/dataset.h
index 53b0540..36d9a94 100644
--- a/src/libxvdr/include/xvdr/dataset.h
+++ b/src/libxvdr/include/xvdr/dataset.h
@@ -287,8 +287,8 @@ public:
FLAG_TV = 1,
FLAG_RADIO = 2,
FLAG_FTA = 4,
- FLAG_SCRAMBLED = 16,
- FLAG_HDTV = 32
+ FLAG_SCRAMBLED = 8,
+ FLAG_HDTV = 16
} Flags;
Verbosity verbosity;
--
1.7.2.5

View File

@ -21,7 +21,7 @@
PKG_NAME="xbmc-theme-Confluence"
PKG_VERSION="12.2-49f61b4"
if [ "$XBMC" = "master" ]; then
PKG_VERSION="13.alpha-9df3bc9"
PKG_VERSION="13.alpha-3723806"
elif [ "$XBMC" = "xbmc-aml" ]; then
PKG_VERSION="aml-frodo-d9119f2"
fi

View File

@ -21,7 +21,7 @@
PKG_NAME="xbmc"
PKG_VERSION="12.2-49f61b4"
if [ "$XBMC" = "master" ]; then
PKG_VERSION="13.alpha-9df3bc9"
PKG_VERSION="13.alpha-3723806"
elif [ "$XBMC" = "xbmc-aml" ]; then
PKG_VERSION="aml-frodo-d9119f2"
fi

View File

@ -1,17 +0,0 @@
diff -Naur xbmc-12.2-5ba69b6/xbmc/storage/linux/UDevProvider.cpp xbmc-12.2-5ba69b6.patch/xbmc/storage/linux/UDevProvider.cpp
--- xbmc-12.2-5ba69b6/xbmc/storage/linux/UDevProvider.cpp 2013-08-22 21:37:41.543830684 +0200
+++ xbmc-12.2-5ba69b6.patch/xbmc/storage/linux/UDevProvider.cpp 2013-08-22 21:37:34.557825148 +0200
@@ -145,10 +145,12 @@
continue;
}
- // look for usb devices on the usb bus or mounted on /media/usbX (sdcards)
+ // look for usb devices on the usb bus, or mounted on /media/usbX (sdcards) or cdroms
const char *bus = udev_device_get_property_value(device, "ID_BUS");
+ const char *cdrom = udev_device_get_property_value(device, "ID_CDROM");
if (removable &&
((bus && strstr(bus, "usb")) ||
+ (cdrom && strstr(cdrom,"1")) ||
(mountpoint && strstr(mountpoint, "usb"))))
{
const char *label = udev_device_get_property_value(device, "ID_FS_LABEL");

View File

@ -1,25 +0,0 @@
From 6d64d70a46b8f238d2706017a084f30bd681f291 Mon Sep 17 00:00:00 2001
From: Stefan Saraev <stefan@saraev.ca>
Date: Sat, 31 Aug 2013 13:44:53 +0300
Subject: [PATCH] show all removable disks mounted under /media
---
xbmc/storage/linux/UDevProvider.cpp | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/xbmc/storage/linux/UDevProvider.cpp b/xbmc/storage/linux/UDevProvider.cpp
index c20facc..c1044c8 100644
--- a/xbmc/storage/linux/UDevProvider.cpp
+++ b/xbmc/storage/linux/UDevProvider.cpp
@@ -151,7 +151,7 @@ void CUDevProvider::GetDisks(VECSOURCES& disks, bool removable)
if (removable &&
((bus && strstr(bus, "usb")) ||
(cdrom && strstr(cdrom,"1")) ||
- (mountpoint && strstr(mountpoint, "usb"))))
+ (mountpoint && strstr(mountpoint, "/media/"))))
{
const char *label = udev_device_get_property_value(device, "ID_FS_LABEL");
if (!label)
--
1.7.2.5