summaryrefslogtreecommitdiff
path: root/multimedia
diff options
context:
space:
mode:
authorjoerg <joerg@pkgsrc.org>2015-12-23 12:43:25 +0000
committerjoerg <joerg@pkgsrc.org>2015-12-23 12:43:25 +0000
commit5d64a651f46c5e17ba8c09632293092e080c5dc3 (patch)
tree6622ce45b5b21d750b46089fc078feb359607627 /multimedia
parentc702113336b8d2b6a836d8bdef1bd0d1ca7240f0 (diff)
downloadpkgsrc-5d64a651f46c5e17ba8c09632293092e080c5dc3.tar.gz
Fix missing cstdlib / locale.h includes. Avoid UB by not passing non-POD
types to variadic functions. It's silly to force the construction of a std::string as potential copy when just the C string is used anyway.
Diffstat (limited to 'multimedia')
-rw-r--r--multimedia/kodi/distinfo21
-rw-r--r--multimedia/kodi/patches/patch-xbmc_TextureDatabase.cpp13
-rw-r--r--multimedia/kodi/patches/patch-xbmc_cores_dvdplayer_DVDDemuxSPU.cpp12
-rw-r--r--multimedia/kodi/patches/patch-xbmc_dbwrappers_Database.cpp22
-rw-r--r--multimedia/kodi/patches/patch-xbmc_dbwrappers_Database.h15
-rw-r--r--multimedia/kodi/patches/patch-xbmc_dialogs_GUIDialogGamepad.cpp12
-rw-r--r--multimedia/kodi/patches/patch-xbmc_dialogs_GUIDialogMediaFilter.cpp13
-rw-r--r--multimedia/kodi/patches/patch-xbmc_dialogs_GUIDialogNumeric.cpp12
-rw-r--r--multimedia/kodi/patches/patch-xbmc_guilib_GUIAction.cpp12
-rw-r--r--multimedia/kodi/patches/patch-xbmc_guilib_GUISpinControl.cpp12
-rw-r--r--multimedia/kodi/patches/patch-xbmc_interfaces_legacy_Dialog.cpp12
-rw-r--r--multimedia/kodi/patches/patch-xbmc_linux_XFileUtils.cpp20
-rw-r--r--multimedia/kodi/patches/patch-xbmc_main_main.cpp12
-rw-r--r--multimedia/kodi/patches/patch-xbmc_music_MusicDatabase.cpp86
-rw-r--r--multimedia/kodi/patches/patch-xbmc_pvr_PVRActionListener.cpp13
-rw-r--r--multimedia/kodi/patches/patch-xbmc_storage_linux_DeviceKitDisksProvider.cpp12
-rw-r--r--multimedia/kodi/patches/patch-xbmc_storage_linux_UDisksProvider.cpp12
-rw-r--r--multimedia/kodi/patches/patch-xbmc_video_VideoDatabase.cpp78
-rw-r--r--multimedia/kodi/patches/patch-xbmc_windowing_WinEventsX11.cpp13
19 files changed, 393 insertions, 9 deletions
diff --git a/multimedia/kodi/distinfo b/multimedia/kodi/distinfo
index bb1eddb1017..63eae50a774 100644
--- a/multimedia/kodi/distinfo
+++ b/multimedia/kodi/distinfo
@@ -1,4 +1,4 @@
-$NetBSD: distinfo,v 1.9 2015/11/22 11:35:02 wiz Exp $
+$NetBSD: distinfo,v 1.10 2015/12/23 12:43:25 joerg Exp $
SHA1 (15.2-Isengard.tar.gz) = 4acb4a60eadc7289f873cff5add31693b9520cba
RMD160 (15.2-Isengard.tar.gz) = d81d3f15783b2b69920ea85d7e04f01872f2d85f
@@ -15,6 +15,7 @@ SHA1 (patch-lib_gtest_configure.ac) = 5c45c0ee6c997157c4e2bfe9d99c2e1e5b63ad1d
SHA1 (patch-m4_xbmc__arch.m4) = ec0018a5a07cd8ab0e6718585fe8dcc9dd561c02
SHA1 (patch-xbmc_GUIInfoManager.cpp) = 8ffd619dfc7f611da927422e9be295d8fa5fb71c
SHA1 (patch-xbmc_Makefile.in) = 8a55856686715244d9999f846a2cc8bac6f08a21
+SHA1 (patch-xbmc_TextureDatabase.cpp) = b2fef50f58d9d89ec844ae8ba959bb63451df990
SHA1 (patch-xbmc_Util.cpp) = 6284dfb29649ec9eeb5e9f9b07e2c164e6df304f
SHA1 (patch-xbmc_addons_Addon.cpp) = 9060723ebba93311eb6f4657bae73d9589b96a77
SHA1 (patch-xbmc_addons_AddonDll.h) = 77905da081d2436c383328421e1ab9316fb5939d
@@ -25,21 +26,35 @@ SHA1 (patch-xbmc_cores_DllLoader_exports_emu__msvcrt.cpp) = 650a107afbf5bb78eb97
SHA1 (patch-xbmc_cores_DllLoader_exports_emu__msvcrt.h) = 6047438509663af2826bd5e6c181d9018f86b27c
SHA1 (patch-xbmc_cores_DllLoader_exports_util_EmuFileWrapper.h) = a4d62050c1efb96a0b1e6ccb2d9529f6ae3a1135
SHA1 (patch-xbmc_cores_DllLoader_exports_wrapper.c) = 275e8e9fed74e0a97c9c138ab37d21cff62d4e33
+SHA1 (patch-xbmc_cores_dvdplayer_DVDDemuxSPU.cpp) = fa18bcbbc6c9b7d7d758128d21146d13c6335d66
+SHA1 (patch-xbmc_dbwrappers_Database.cpp) = 4abf8e5c39f08b54c977943b3c6e5b9b7ed3dbbc
+SHA1 (patch-xbmc_dbwrappers_Database.h) = 858b3360d591662642d719c4dc681d1b514a2e8a
+SHA1 (patch-xbmc_dialogs_GUIDialogGamepad.cpp) = 565fb5fb003e61ece6443613f5b5d01f2e7d6b99
+SHA1 (patch-xbmc_dialogs_GUIDialogMediaFilter.cpp) = 3e468c187236281ae6ebdcd08a2fd13e6a7e4eb2
+SHA1 (patch-xbmc_dialogs_GUIDialogNumeric.cpp) = cbc6cfc83bd8855d6d8ab62029c6f5a930f00a1a
SHA1 (patch-xbmc_filesystem_SAPDirectory.cpp) = ad07af23222a835540d78419b896590395e61e78
+SHA1 (patch-xbmc_guilib_GUIAction.cpp) = e2e1280590a651a7d83d326514763529895c6f57
+SHA1 (patch-xbmc_guilib_GUISpinControl.cpp) = ecf66b7ddc29754112e4a8770fab892a6e27774c
SHA1 (patch-xbmc_guilib_TextureBundleXPR.cpp) = b3012d41cb4cf0ea0d92c675cf6c16928439c643
SHA1 (patch-xbmc_guilib_XBTFReader.cpp) = e0505ee31f92ceb37dbb1200f49806af85410e2c
+SHA1 (patch-xbmc_interfaces_legacy_Dialog.cpp) = 52673f270c94e2f0c003ceedf86972fcbb3d071a
SHA1 (patch-xbmc_interfaces_python_XBPython.cpp) = 0ad33ef736f12b6aca8667da5d50998d69c90ea7
SHA1 (patch-xbmc_linux_LinuxTimezone.cpp) = 18974ed63d1ac35a4060ea3d01826120b016c06e
SHA1 (patch-xbmc_linux_PlatformDefs.h) = 56d70fce18807b10cb8d42ac0feca94d0c113c57
-SHA1 (patch-xbmc_linux_XFileUtils.cpp) = 4c03a869957ca501adaa5dc0d966cfd043e0d5c9
+SHA1 (patch-xbmc_linux_XFileUtils.cpp) = 8840ef540c023bc988c918ec7067cc2383b83a88
SHA1 (patch-xbmc_linux_XMemUtils.cpp) = 2c8fb8f80feb4d5f50518d9bd6fcc69519674658
+SHA1 (patch-xbmc_main_main.cpp) = f19ee0a085ac4924b31beb210d625dc3819f080d
+SHA1 (patch-xbmc_music_MusicDatabase.cpp) = 0bcb1d3654b3975decc3802cf36b885af10b5313
SHA1 (patch-xbmc_network_linux_NetworkLinux.cpp) = febc3a9791d0c087261ccbbecdcffcaa4793e333
SHA1 (patch-xbmc_peripherals_bus_PeripheralBusUSB.h) = e3682d8fbfad9bca11a706c2ca3a77f0a7751e3a
SHA1 (patch-xbmc_peripherals_bus_linux_PeripheralBusUSBLibUSB.cpp) = 040678e8379f6797e8276d9787d60fcdb24e17c9
+SHA1 (patch-xbmc_pvr_PVRActionListener.cpp) = f51e7877e09a42dc6e7c14eb35a15145915c98a7
SHA1 (patch-xbmc_settings_Settings.cpp) = aa2426fcd69652bc656dba0b7d92341235309a8f
SHA1 (patch-xbmc_storage_DetectDVDType.cpp) = 7414b122a2787dfe8a4753b50445b16230262d92
SHA1 (patch-xbmc_storage_IoSupport.cpp) = d15ff91f76f0ce063dc6dda104a595f33bbdc01e
SHA1 (patch-xbmc_storage_MediaManager.cpp) = 5a816d5c6b060a99aa498f6f9b62571873d23970
+SHA1 (patch-xbmc_storage_linux_DeviceKitDisksProvider.cpp) = d3fdb7286528878f53d83a2ce98ebfc5e1032d19
+SHA1 (patch-xbmc_storage_linux_UDisksProvider.cpp) = 4f4c31fec090f23c5b05e8b6f52ef720d2da7101
SHA1 (patch-xbmc_system.h) = 10738c487ed6c2de066483cc077ad05037132da8
SHA1 (patch-xbmc_system__gl.h) = e2b8e3d57c6d838020163cf56e8f868c959af937
SHA1 (patch-xbmc_threads_platform_pthreads_ThreadImpl.cpp) = f8853a8ace422d9ab088be89b5562da552edcc7a
@@ -48,7 +63,9 @@ SHA1 (patch-xbmc_utils_CharsetConverter.cpp) = 420a1e39d24c38dca2a8702a22b8cf67e
SHA1 (patch-xbmc_utils_Stopwatch.cpp) = fd2b8f7112e89ce164a0329ea3ee389f85705d1f
SHA1 (patch-xbmc_utils_SystemInfo.cpp) = 444e0e34842f97660d521b9715c01fa4fe99a9f0
SHA1 (patch-xbmc_utils_test_TestSystemInfo.cpp) = eeca9e097346f9f2c7f047f5906d6ffb75fd393b
+SHA1 (patch-xbmc_video_VideoDatabase.cpp) = e0ac33bfd9918dc263b858044dea81efe8ebee6f
SHA1 (patch-xbmc_windowing_WinEvents.cpp) = 5e1c202214cd95671cc8bb503dd49080efd828f2
+SHA1 (patch-xbmc_windowing_WinEventsX11.cpp) = bca8536bdeb09c7396c8a917074e71fe3045dec6
SHA1 (patch-xbmc_windowing_WindowingFactory.h) = 736df0f1a0f3c7e9048481a58c15951bdea017f1
SHA1 (patch-xbmc_windowing_X11_XRandR.cpp) = e0d03f225704019fb162022020d1d9ed72ed480a
SHA1 (patch-xbmc_windows_GUIWindowSystemInfo.cpp) = 761af54a7728059356e14b15b55383d5a53c92a1
diff --git a/multimedia/kodi/patches/patch-xbmc_TextureDatabase.cpp b/multimedia/kodi/patches/patch-xbmc_TextureDatabase.cpp
new file mode 100644
index 00000000000..9d007423962
--- /dev/null
+++ b/multimedia/kodi/patches/patch-xbmc_TextureDatabase.cpp
@@ -0,0 +1,13 @@
+$NetBSD: patch-xbmc_TextureDatabase.cpp,v 1.1 2015/12/23 12:43:25 joerg Exp $
+
+--- xbmc/TextureDatabase.cpp.orig 2015-12-22 18:18:09.000000000 +0000
++++ xbmc/TextureDatabase.cpp
+@@ -294,7 +294,7 @@ bool CTextureDatabase::GetTextures(CVari
+ if (!CDatabase::BuildSQL("", filter, sqlFilter))
+ return false;
+
+- sql = PrepareSQL(sql, !filter.fields.empty() ? filter.fields.c_str() : "*") + sqlFilter;
++ sql = PrepareSQL(sql.c_str(), !filter.fields.empty() ? filter.fields.c_str() : "*") + sqlFilter;
+ if (!m_pDS->query(sql.c_str()))
+ return false;
+
diff --git a/multimedia/kodi/patches/patch-xbmc_cores_dvdplayer_DVDDemuxSPU.cpp b/multimedia/kodi/patches/patch-xbmc_cores_dvdplayer_DVDDemuxSPU.cpp
new file mode 100644
index 00000000000..14146613113
--- /dev/null
+++ b/multimedia/kodi/patches/patch-xbmc_cores_dvdplayer_DVDDemuxSPU.cpp
@@ -0,0 +1,12 @@
+$NetBSD: patch-xbmc_cores_dvdplayer_DVDDemuxSPU.cpp,v 1.1 2015/12/23 12:43:25 joerg Exp $
+
+--- xbmc/cores/dvdplayer/DVDDemuxSPU.cpp.orig 2015-12-22 17:49:55.000000000 +0000
++++ xbmc/cores/dvdplayer/DVDDemuxSPU.cpp
+@@ -21,6 +21,7 @@
+ #include "DVDDemuxSPU.h"
+ #include "DVDClock.h"
+ #include "utils/log.h"
++#include <cstdlib>
+
+ #undef ALIGN
+ #define ALIGN(value, alignment) (((value)+((alignment)-1))&~((alignment)-1))
diff --git a/multimedia/kodi/patches/patch-xbmc_dbwrappers_Database.cpp b/multimedia/kodi/patches/patch-xbmc_dbwrappers_Database.cpp
new file mode 100644
index 00000000000..9b7ade1ad0e
--- /dev/null
+++ b/multimedia/kodi/patches/patch-xbmc_dbwrappers_Database.cpp
@@ -0,0 +1,22 @@
+$NetBSD: patch-xbmc_dbwrappers_Database.cpp,v 1.1 2015/12/23 12:43:25 joerg Exp $
+
+--- xbmc/dbwrappers/Database.cpp.orig 2015-12-22 17:53:05.000000000 +0000
++++ xbmc/dbwrappers/Database.cpp
+@@ -127,7 +127,7 @@ void CDatabase::Split(const std::string&
+ strFileName = strFileNameAndPath.substr(i);
+ }
+
+-std::string CDatabase::PrepareSQL(std::string strStmt, ...) const
++std::string CDatabase::PrepareSQL(const char *strStmt, ...) const
+ {
+ std::string strResult = "";
+
+@@ -135,7 +135,7 @@ std::string CDatabase::PrepareSQL(std::s
+ {
+ va_list args;
+ va_start(args, strStmt);
+- strResult = m_pDB->vprepare(strStmt.c_str(), args);
++ strResult = m_pDB->vprepare(strStmt, args);
+ va_end(args);
+ }
+
diff --git a/multimedia/kodi/patches/patch-xbmc_dbwrappers_Database.h b/multimedia/kodi/patches/patch-xbmc_dbwrappers_Database.h
new file mode 100644
index 00000000000..f8536fcc6cc
--- /dev/null
+++ b/multimedia/kodi/patches/patch-xbmc_dbwrappers_Database.h
@@ -0,0 +1,15 @@
+$NetBSD: patch-xbmc_dbwrappers_Database.h,v 1.1 2015/12/23 12:43:25 joerg Exp $
+
+Passing non-POD types to variadic functions is UB.
+
+--- xbmc/dbwrappers/Database.h.orig 2015-12-22 18:37:20.000000000 +0000
++++ xbmc/dbwrappers/Database.h
+@@ -71,7 +71,7 @@ public:
+ void RollbackTransaction();
+ bool InTransaction();
+
+- std::string PrepareSQL(std::string strStmt, ...) const;
++ std::string PrepareSQL(const char *strStmt, ...) const;
+
+ /*!
+ * @brief Get a single value from a table.
diff --git a/multimedia/kodi/patches/patch-xbmc_dialogs_GUIDialogGamepad.cpp b/multimedia/kodi/patches/patch-xbmc_dialogs_GUIDialogGamepad.cpp
new file mode 100644
index 00000000000..106179ab156
--- /dev/null
+++ b/multimedia/kodi/patches/patch-xbmc_dialogs_GUIDialogGamepad.cpp
@@ -0,0 +1,12 @@
+$NetBSD: patch-xbmc_dialogs_GUIDialogGamepad.cpp,v 1.1 2015/12/23 12:43:25 joerg Exp $
+
+--- xbmc/dialogs/GUIDialogGamepad.cpp.orig 2015-12-22 17:55:50.000000000 +0000
++++ xbmc/dialogs/GUIDialogGamepad.cpp
+@@ -26,6 +26,7 @@
+ #include "GUIDialogOK.h"
+ #include "input/Key.h"
+ #include "guilib/LocalizeStrings.h"
++#include <cstdlib>
+
+ CGUIDialogGamepad::CGUIDialogGamepad(void)
+ : CGUIDialogBoxBase(WINDOW_DIALOG_GAMEPAD, "DialogGamepad.xml")
diff --git a/multimedia/kodi/patches/patch-xbmc_dialogs_GUIDialogMediaFilter.cpp b/multimedia/kodi/patches/patch-xbmc_dialogs_GUIDialogMediaFilter.cpp
new file mode 100644
index 00000000000..23e9b408564
--- /dev/null
+++ b/multimedia/kodi/patches/patch-xbmc_dialogs_GUIDialogMediaFilter.cpp
@@ -0,0 +1,13 @@
+$NetBSD: patch-xbmc_dialogs_GUIDialogMediaFilter.cpp,v 1.1 2015/12/23 12:43:25 joerg Exp $
+
+--- xbmc/dialogs/GUIDialogMediaFilter.cpp.orig 2015-12-22 17:56:43.000000000 +0000
++++ xbmc/dialogs/GUIDialogMediaFilter.cpp
+@@ -888,7 +888,7 @@ bool CGUIDialogMediaFilter::GetMinMax(co
+ return false;
+ }
+
+- std::string strSQL = "SELECT %s FROM %s ";
++ const char *strSQL = "SELECT %s FROM %s ";
+
+ min = static_cast<int>(strtol(db->GetSingleValue(db->PrepareSQL(strSQL, std::string("MIN(" + field + ")").c_str(), table.c_str()) + strSQLExtra).c_str(), NULL, 0));
+ max = static_cast<int>(strtol(db->GetSingleValue(db->PrepareSQL(strSQL, std::string("MAX(" + field + ")").c_str(), table.c_str()) + strSQLExtra).c_str(), NULL, 0));
diff --git a/multimedia/kodi/patches/patch-xbmc_dialogs_GUIDialogNumeric.cpp b/multimedia/kodi/patches/patch-xbmc_dialogs_GUIDialogNumeric.cpp
new file mode 100644
index 00000000000..98cdc923c46
--- /dev/null
+++ b/multimedia/kodi/patches/patch-xbmc_dialogs_GUIDialogNumeric.cpp
@@ -0,0 +1,12 @@
+$NetBSD: patch-xbmc_dialogs_GUIDialogNumeric.cpp,v 1.1 2015/12/23 12:43:25 joerg Exp $
+
+--- xbmc/dialogs/GUIDialogNumeric.cpp.orig 2015-12-22 17:57:34.000000000 +0000
++++ xbmc/dialogs/GUIDialogNumeric.cpp
+@@ -28,6 +28,7 @@
+ #include "input/Key.h"
+ #include "guilib/LocalizeStrings.h"
+ #include "interfaces/AnnouncementManager.h"
++#include <cstdlib>
+
+ #define CONTROL_HEADING_LABEL 1
+ #define CONTROL_INPUT_LABEL 4
diff --git a/multimedia/kodi/patches/patch-xbmc_guilib_GUIAction.cpp b/multimedia/kodi/patches/patch-xbmc_guilib_GUIAction.cpp
new file mode 100644
index 00000000000..8ba0b0d3e90
--- /dev/null
+++ b/multimedia/kodi/patches/patch-xbmc_guilib_GUIAction.cpp
@@ -0,0 +1,12 @@
+$NetBSD: patch-xbmc_guilib_GUIAction.cpp,v 1.1 2015/12/23 12:43:25 joerg Exp $
+
+--- xbmc/guilib/GUIAction.cpp.orig 2015-12-22 18:26:01.000000000 +0000
++++ xbmc/guilib/GUIAction.cpp
+@@ -23,6 +23,7 @@
+ #include "GUIWindowManager.h"
+ #include "GUIControl.h"
+ #include "GUIInfoManager.h"
++#include <cstdlib>
+
+ using namespace std;
+
diff --git a/multimedia/kodi/patches/patch-xbmc_guilib_GUISpinControl.cpp b/multimedia/kodi/patches/patch-xbmc_guilib_GUISpinControl.cpp
new file mode 100644
index 00000000000..0417a44a61c
--- /dev/null
+++ b/multimedia/kodi/patches/patch-xbmc_guilib_GUISpinControl.cpp
@@ -0,0 +1,12 @@
+$NetBSD: patch-xbmc_guilib_GUISpinControl.cpp,v 1.1 2015/12/23 12:43:25 joerg Exp $
+
+--- xbmc/guilib/GUISpinControl.cpp.orig 2015-12-22 18:27:35.000000000 +0000
++++ xbmc/guilib/GUISpinControl.cpp
+@@ -22,6 +22,7 @@
+ #include "input/Key.h"
+ #include "utils/StringUtils.h"
+ #include <stdio.h>
++#include <cstdlib>
+
+ using namespace std;
+
diff --git a/multimedia/kodi/patches/patch-xbmc_interfaces_legacy_Dialog.cpp b/multimedia/kodi/patches/patch-xbmc_interfaces_legacy_Dialog.cpp
new file mode 100644
index 00000000000..8514de13c06
--- /dev/null
+++ b/multimedia/kodi/patches/patch-xbmc_interfaces_legacy_Dialog.cpp
@@ -0,0 +1,12 @@
+$NetBSD: patch-xbmc_interfaces_legacy_Dialog.cpp,v 1.1 2015/12/23 12:43:25 joerg Exp $
+
+--- xbmc/interfaces/legacy/Dialog.cpp.orig 2015-12-22 18:00:09.000000000 +0000
++++ xbmc/interfaces/legacy/Dialog.cpp
+@@ -33,6 +33,7 @@
+ #include "WindowException.h"
+ #include "ApplicationMessenger.h"
+ #include "Dialog.h"
++#include <cstdlib>
+
+ #define ACTIVE_WINDOW g_windowManager.GetActiveWindow()
+
diff --git a/multimedia/kodi/patches/patch-xbmc_linux_XFileUtils.cpp b/multimedia/kodi/patches/patch-xbmc_linux_XFileUtils.cpp
index f41d1698a5e..6e28e020a43 100644
--- a/multimedia/kodi/patches/patch-xbmc_linux_XFileUtils.cpp
+++ b/multimedia/kodi/patches/patch-xbmc_linux_XFileUtils.cpp
@@ -1,8 +1,14 @@
-$NetBSD: patch-xbmc_linux_XFileUtils.cpp,v 1.1 2015/11/17 14:56:07 jmcneill Exp $
+$NetBSD: patch-xbmc_linux_XFileUtils.cpp,v 1.2 2015/12/23 12:43:25 joerg Exp $
--- xbmc/linux/XFileUtils.cpp.orig 2015-10-19 06:31:15.000000000 +0000
+++ xbmc/linux/XFileUtils.cpp
-@@ -29,7 +29,7 @@
+@@ -24,12 +24,13 @@
+ #include "XTimeUtils.h"
+ #include "filesystem/SpecialProtocol.h"
+ #include "utils/StringUtils.h"
++#include <cstdlib>
+
+ #ifdef TARGET_POSIX
#include "XHandle.h"
#include <sys/types.h>
#include <sys/stat.h>
@@ -11,7 +17,7 @@ $NetBSD: patch-xbmc_linux_XFileUtils.cpp,v 1.1 2015/11/17 14:56:07 jmcneill Exp
#include <sys/vfs.h>
#else
#include <sys/param.h>
-@@ -68,7 +68,7 @@ HANDLE FindFirstFile(LPCSTR szPath,LPWIN
+@@ -68,7 +69,7 @@ HANDLE FindFirstFile(LPCSTR szPath,LPWIN
StringUtils::Replace(strPath, '\\','/');
// if the file name is a directory then we add a * to look for all files in this directory
@@ -20,7 +26,7 @@ $NetBSD: patch-xbmc_linux_XFileUtils.cpp,v 1.1 2015/11/17 14:56:07 jmcneill Exp
DIR *testDir = opendir(strPath.c_str());
#else
DIR *testDir = opendir(szPath);
-@@ -289,7 +289,7 @@ HANDLE CreateFile(LPCTSTR lpFileName, DW
+@@ -289,7 +290,7 @@ HANDLE CreateFile(LPCTSTR lpFileName, DW
HANDLE result = new CXHandle(CXHandle::HND_FILE);
result->fd = fd;
@@ -29,7 +35,7 @@ $NetBSD: patch-xbmc_linux_XFileUtils.cpp,v 1.1 2015/11/17 14:56:07 jmcneill Exp
// special case for opening the cdrom device
if (strcmp(lpFileName, MEDIA_DETECT::CLibcdio::GetInstance()->GetDeviceFileName())==0)
result->m_bCDROM = true;
-@@ -575,7 +575,7 @@ DWORD SetFilePointer(HANDLE hFile, int3
+@@ -575,7 +576,7 @@ DWORD SetFilePointer(HANDLE hFile, int3
nMode = SEEK_END;
off64_t currOff;
@@ -38,7 +44,7 @@ $NetBSD: patch-xbmc_linux_XFileUtils.cpp,v 1.1 2015/11/17 14:56:07 jmcneill Exp
currOff = lseek(hFile->fd, offset, nMode);
#else
currOff = lseek64(hFile->fd, offset, nMode);
-@@ -645,7 +645,7 @@ BOOL SetEndOfFile(HANDLE hFile)
+@@ -645,7 +646,7 @@ BOOL SetEndOfFile(HANDLE hFile)
return false;
// get the current offset
@@ -47,7 +53,7 @@ $NetBSD: patch-xbmc_linux_XFileUtils.cpp,v 1.1 2015/11/17 14:56:07 jmcneill Exp
off64_t currOff = lseek(hFile->fd, 0, SEEK_CUR);
#else
off64_t currOff = lseek64(hFile->fd, 0, SEEK_CUR);
-@@ -676,7 +676,7 @@ BOOL SetFilePointerEx( HANDLE hFile,
+@@ -676,7 +677,7 @@ BOOL SetFilePointerEx( HANDLE hFile,
off64_t toMove = liDistanceToMove.QuadPart;
diff --git a/multimedia/kodi/patches/patch-xbmc_main_main.cpp b/multimedia/kodi/patches/patch-xbmc_main_main.cpp
new file mode 100644
index 00000000000..047e387de3a
--- /dev/null
+++ b/multimedia/kodi/patches/patch-xbmc_main_main.cpp
@@ -0,0 +1,12 @@
+$NetBSD: patch-xbmc_main_main.cpp,v 1.1 2015/12/23 12:43:25 joerg Exp $
+
+--- xbmc/main/main.cpp.orig 2015-12-22 18:28:15.000000000 +0000
++++ xbmc/main/main.cpp
+@@ -28,6 +28,7 @@
+ #ifdef TARGET_POSIX
+ #include <sys/resource.h>
+ #include <signal.h>
++#include <locale.h>
+ #endif
+ #if defined(TARGET_DARWIN_OSX)
+ #include "Util.h"
diff --git a/multimedia/kodi/patches/patch-xbmc_music_MusicDatabase.cpp b/multimedia/kodi/patches/patch-xbmc_music_MusicDatabase.cpp
new file mode 100644
index 00000000000..cb2249aa930
--- /dev/null
+++ b/multimedia/kodi/patches/patch-xbmc_music_MusicDatabase.cpp
@@ -0,0 +1,86 @@
+$NetBSD: patch-xbmc_music_MusicDatabase.cpp,v 1.1 2015/12/23 12:43:25 joerg Exp $
+
+--- xbmc/music/MusicDatabase.cpp.orig 2015-12-22 18:03:08.000000000 +0000
++++ xbmc/music/MusicDatabase.cpp
+@@ -1414,7 +1414,7 @@ bool CMusicDatabase::GetAlbumsByArtist(i
+ if (includeFeatured == false)
+ strPrepSQL += " AND boolFeatured = 0";
+
+- strSQL=PrepareSQL(strPrepSQL, idArtist);
++ strSQL=PrepareSQL(strPrepSQL.c_str(), idArtist);
+ if (!m_pDS->query(strSQL.c_str()))
+ return false;
+ if (m_pDS->num_rows() == 0)
+@@ -1448,7 +1448,7 @@ bool CMusicDatabase::GetArtistsByAlbum(i
+ if (includeFeatured == false)
+ strPrepSQL += " AND boolFeatured = 0";
+
+- strSQL=PrepareSQL(strPrepSQL, idAlbum);
++ strSQL=PrepareSQL(strPrepSQL.c_str(), idAlbum);
+ if (!m_pDS->query(strSQL.c_str()))
+ return false;
+ if (m_pDS->num_rows() == 0)
+@@ -1482,7 +1482,7 @@ bool CMusicDatabase::GetSongsByArtist(in
+ if (includeFeatured == false)
+ strPrepSQL += " AND boolFeatured = 0";
+
+- strSQL=PrepareSQL(strPrepSQL, idArtist);
++ strSQL=PrepareSQL(strPrepSQL.c_str(), idArtist);
+ if (!m_pDS->query(strSQL.c_str()))
+ return false;
+ if (m_pDS->num_rows() == 0)
+@@ -1516,7 +1516,7 @@ bool CMusicDatabase::GetArtistsBySong(in
+ if (includeFeatured == false)
+ strPrepSQL += " AND boolFeatured = 0";
+
+- strSQL=PrepareSQL(strPrepSQL, idSong);
++ strSQL=PrepareSQL(strPrepSQL.c_str(), idSong);
+ if (!m_pDS->query(strSQL.c_str()))
+ return false;
+ if (m_pDS->num_rows() == 0)
+@@ -3159,7 +3159,7 @@ bool CMusicDatabase::GetCommonNav(const
+ if (!BuildSQL(strBaseDir, strSQL, extFilter, strSQL, musicUrl))
+ return false;
+
+- strSQL = PrepareSQL(strSQL, !extFilter.fields.empty() ? extFilter.fields.c_str() : labelField.c_str());
++ strSQL = PrepareSQL(strSQL.c_str(), !extFilter.fields.empty() ? extFilter.fields.c_str() : labelField.c_str());
+
+ // run query
+ CLog::Log(LOGDEBUG, "%s query: %s", __FUNCTION__, strSQL.c_str());
+@@ -3311,7 +3311,7 @@ bool CMusicDatabase::GetArtistsByWhere(c
+ sortDescription.sortBy == SortByNone &&
+ (sortDescription.limitStart > 0 || sortDescription.limitEnd > 0))
+ {
+- total = (int)strtol(GetSingleValue(PrepareSQL(strSQL, "COUNT(1)") + strSQLExtra, m_pDS).c_str(), NULL, 10);
++ total = (int)strtol(GetSingleValue(PrepareSQL(strSQL.c_str(), "COUNT(1)") + strSQLExtra, m_pDS).c_str(), NULL, 10);
+ strSQLExtra += DatabaseUtils::BuildLimitClause(sortDescription.limitEnd, sortDescription.limitStart);
+ }
+
+@@ -3470,11 +3470,11 @@ bool CMusicDatabase::GetAlbumsByWhere(co
+ sortDescription.sortBy == SortByNone &&
+ (sortDescription.limitStart > 0 || sortDescription.limitEnd > 0))
+ {
+- total = (int)strtol(GetSingleValue(PrepareSQL(strSQL, "COUNT(1)") + strSQLExtra, m_pDS).c_str(), NULL, 10);
++ total = (int)strtol(GetSingleValue(PrepareSQL(strSQL.c_str(), "COUNT(1)") + strSQLExtra, m_pDS).c_str(), NULL, 10);
+ strSQLExtra += DatabaseUtils::BuildLimitClause(sortDescription.limitEnd, sortDescription.limitStart);
+ }
+
+- strSQL = PrepareSQL(strSQL, !filter.fields.empty() && filter.fields.compare("*") != 0 ? filter.fields.c_str() : "albumview.*") + strSQLExtra;
++ strSQL = PrepareSQL(strSQL.c_str(), !filter.fields.empty() && filter.fields.compare("*") != 0 ? filter.fields.c_str() : "albumview.*") + strSQLExtra;
+
+ CLog::Log(LOGDEBUG, "%s query: %s", __FUNCTION__, strSQL.c_str());
+ // run query
+@@ -3583,11 +3583,11 @@ bool CMusicDatabase::GetSongsByWhere(con
+ sortDescription.sortBy == SortByNone &&
+ (sortDescription.limitStart > 0 || sortDescription.limitEnd > 0))
+ {
+- total = (int)strtol(GetSingleValue(PrepareSQL(strSQL, "COUNT(1)") + strSQLExtra, m_pDS).c_str(), NULL, 10);
++ total = (int)strtol(GetSingleValue(PrepareSQL(strSQL.c_str(), "COUNT(1)") + strSQLExtra, m_pDS).c_str(), NULL, 10);
+ strSQLExtra += DatabaseUtils::BuildLimitClause(sortDescription.limitEnd, sortDescription.limitStart);
+ }
+
+- strSQL = PrepareSQL(strSQL, !filter.fields.empty() && filter.fields.compare("*") != 0 ? filter.fields.c_str() : "songview.*") + strSQLExtra;
++ strSQL = PrepareSQL(strSQL.c_str(), !filter.fields.empty() && filter.fields.compare("*") != 0 ? filter.fields.c_str() : "songview.*") + strSQLExtra;
+
+ CLog::Log(LOGDEBUG, "%s query = %s", __FUNCTION__, strSQL.c_str());
+ // run query
diff --git a/multimedia/kodi/patches/patch-xbmc_pvr_PVRActionListener.cpp b/multimedia/kodi/patches/patch-xbmc_pvr_PVRActionListener.cpp
new file mode 100644
index 00000000000..6921fa6b88f
--- /dev/null
+++ b/multimedia/kodi/patches/patch-xbmc_pvr_PVRActionListener.cpp
@@ -0,0 +1,13 @@
+$NetBSD: patch-xbmc_pvr_PVRActionListener.cpp,v 1.1 2015/12/23 12:43:25 joerg Exp $
+
+--- xbmc/pvr/PVRActionListener.cpp.orig 2015-12-22 18:44:41.000000000 +0000
++++ xbmc/pvr/PVRActionListener.cpp
+@@ -34,6 +34,8 @@
+ #include "pvr/PVRManager.h"
+ #include "pvr/channels/PVRChannelGroupsContainer.h"
+
++#include <cstdlib>
++
+ using namespace PVR;
+
+ CPVRActionListener::CPVRActionListener()
diff --git a/multimedia/kodi/patches/patch-xbmc_storage_linux_DeviceKitDisksProvider.cpp b/multimedia/kodi/patches/patch-xbmc_storage_linux_DeviceKitDisksProvider.cpp
new file mode 100644
index 00000000000..e2a07c65d5f
--- /dev/null
+++ b/multimedia/kodi/patches/patch-xbmc_storage_linux_DeviceKitDisksProvider.cpp
@@ -0,0 +1,12 @@
+$NetBSD: patch-xbmc_storage_linux_DeviceKitDisksProvider.cpp,v 1.1 2015/12/23 12:43:25 joerg Exp $
+
+--- xbmc/storage/linux/DeviceKitDisksProvider.cpp.orig 2015-12-22 18:20:08.000000000 +0000
++++ xbmc/storage/linux/DeviceKitDisksProvider.cpp
+@@ -17,6 +17,7 @@
+ * <http://www.gnu.org/licenses/>.
+ *
+ */
++#include <cstdlib>
+ #include "DeviceKitDisksProvider.h"
+ #ifdef HAS_DBUS
+ #include "settings/AdvancedSettings.h"
diff --git a/multimedia/kodi/patches/patch-xbmc_storage_linux_UDisksProvider.cpp b/multimedia/kodi/patches/patch-xbmc_storage_linux_UDisksProvider.cpp
new file mode 100644
index 00000000000..50defcdb7ce
--- /dev/null
+++ b/multimedia/kodi/patches/patch-xbmc_storage_linux_UDisksProvider.cpp
@@ -0,0 +1,12 @@
+$NetBSD: patch-xbmc_storage_linux_UDisksProvider.cpp,v 1.1 2015/12/23 12:43:25 joerg Exp $
+
+--- xbmc/storage/linux/UDisksProvider.cpp.orig 2015-12-22 18:21:00.000000000 +0000
++++ xbmc/storage/linux/UDisksProvider.cpp
+@@ -17,6 +17,7 @@
+ * <http://www.gnu.org/licenses/>.
+ *
+ */
++#include <cstdlib>
+ #include "UDisksProvider.h"
+ #ifdef HAS_DBUS
+ #include "settings/AdvancedSettings.h"
diff --git a/multimedia/kodi/patches/patch-xbmc_video_VideoDatabase.cpp b/multimedia/kodi/patches/patch-xbmc_video_VideoDatabase.cpp
new file mode 100644
index 00000000000..50123da2c9c
--- /dev/null
+++ b/multimedia/kodi/patches/patch-xbmc_video_VideoDatabase.cpp
@@ -0,0 +1,78 @@
+$NetBSD: patch-xbmc_video_VideoDatabase.cpp,v 1.1 2015/12/23 12:43:25 joerg Exp $
+
+--- xbmc/video/VideoDatabase.cpp.orig 2015-12-22 18:22:01.000000000 +0000
++++ xbmc/video/VideoDatabase.cpp
+@@ -6194,11 +6194,11 @@ bool CVideoDatabase::GetMoviesByWhere(co
+ sorting.sortBy == SortByNone &&
+ (sorting.limitStart > 0 || sorting.limitEnd > 0))
+ {
+- total = (int)strtol(GetSingleValue(PrepareSQL(strSQL, "COUNT(1)") + strSQLExtra, m_pDS).c_str(), NULL, 10);
++ total = (int)strtol(GetSingleValue(PrepareSQL(strSQL.c_str(), "COUNT(1)") + strSQLExtra, m_pDS).c_str(), NULL, 10);
+ strSQLExtra += DatabaseUtils::BuildLimitClause(sorting.limitEnd, sorting.limitStart);
+ }
+
+- strSQL = PrepareSQL(strSQL, !extFilter.fields.empty() ? extFilter.fields.c_str() : "*") + strSQLExtra;
++ strSQL = PrepareSQL(strSQL.c_str(), !extFilter.fields.empty() ? extFilter.fields.c_str() : "*") + strSQLExtra;
+
+ int iRowsFound = RunQuery(strSQL);
+ if (iRowsFound <= 0)
+@@ -6300,11 +6300,11 @@ bool CVideoDatabase::GetTvShowsByWhere(c
+ sorting.sortBy == SortByNone &&
+ (sorting.limitStart > 0 || sorting.limitEnd > 0))
+ {
+- total = (int)strtol(GetSingleValue(PrepareSQL(strSQL, "COUNT(1)") + strSQLExtra, m_pDS).c_str(), NULL, 10);
++ total = (int)strtol(GetSingleValue(PrepareSQL(strSQL.c_str(), "COUNT(1)") + strSQLExtra, m_pDS).c_str(), NULL, 10);
+ strSQLExtra += DatabaseUtils::BuildLimitClause(sorting.limitEnd, sorting.limitStart);
+ }
+
+- strSQL = PrepareSQL(strSQL, !extFilter.fields.empty() ? extFilter.fields.c_str() : "*") + strSQLExtra;
++ strSQL = PrepareSQL(strSQL.c_str(), !extFilter.fields.empty() ? extFilter.fields.c_str() : "*") + strSQLExtra;
+
+ int iRowsFound = RunQuery(strSQL);
+ if (iRowsFound <= 0)
+@@ -6427,11 +6427,11 @@ bool CVideoDatabase::GetEpisodesByWhere(
+ sorting.sortBy == SortByNone &&
+ (sorting.limitStart > 0 || sorting.limitEnd > 0))
+ {
+- total = (int)strtol(GetSingleValue(PrepareSQL(strSQL, "COUNT(1)") + strSQLExtra, m_pDS).c_str(), NULL, 10);
++ total = (int)strtol(GetSingleValue(PrepareSQL(strSQL.c_str(), "COUNT(1)") + strSQLExtra, m_pDS).c_str(), NULL, 10);
+ strSQLExtra += DatabaseUtils::BuildLimitClause(sorting.limitEnd, sorting.limitStart);
+ }
+
+- strSQL = PrepareSQL(strSQL, !extFilter.fields.empty() ? extFilter.fields.c_str() : "*") + strSQLExtra;
++ strSQL = PrepareSQL(strSQL.c_str(), !extFilter.fields.empty() ? extFilter.fields.c_str() : "*") + strSQLExtra;
+
+ int iRowsFound = RunQuery(strSQL);
+ if (iRowsFound <= 0)
+@@ -7074,10 +7074,13 @@ void CVideoDatabase::GetMusicVideoArtist
+ std::string strLike;
+ if (!strSearch.empty())
+ strLike = "and actor.name like '%%%s%%'";
+- if (CProfilesManager::Get().GetMasterProfile().getLockMode() != LOCK_MODE_EVERYONE && !g_passwordManager.bMasterUser)
+- strSQL=PrepareSQL("SELECT actor.actor_id, actor.name, path.strPath FROM actor INNER JOIN actor_link ON actor_link.actor_id=actor.actor_id INNER JOIN musicvideo ON actor_link.media_id=musicvideo.idMVideo INNER JOIN files ON files.idFile=musicvideo.idFile INNER JOIN path ON path.idPath=files.idPath WHERE actor_link.media_type='musicvideo' "+strLike, strSearch.c_str());
+- else
+- strSQL=PrepareSQL("SELECT DISTINCT actor.actor_id, actor.name from actor INNER JOIN actor_link ON actor_link.actor_id=actor.actor_id WHERE actor_link.media_type='musicvideo' "+strLike,strSearch.c_str());
++ if (CProfilesManager::Get().GetMasterProfile().getLockMode() != LOCK_MODE_EVERYONE && !g_passwordManager.bMasterUser) {
++ std::string full_query = "SELECT actor.actor_id, actor.name, path.strPath FROM actor INNER JOIN actor_link ON actor_link.actor_id=actor.actor_id INNER JOIN musicvideo ON actor_link.media_id=musicvideo.idMVideo INNER JOIN files ON files.idFile=musicvideo.idFile INNER JOIN path ON path.idPath=files.idPath WHERE actor_link.media_type='musicvideo' "+strLike;
++ strSQL=PrepareSQL(full_query.c_str(), strSearch.c_str());
++ } else {
++ std::string full_query = "SELECT DISTINCT actor.actor_id, actor.name from actor INNER JOIN actor_link ON actor_link.actor_id=actor.actor_id WHERE actor_link.media_type='musicvideo' "+strLike;
++ strSQL=PrepareSQL(full_query.c_str(),strSearch.c_str());
++ }
+ m_pDS->query( strSQL.c_str() );
+
+ while (!m_pDS->eof())
+@@ -7262,11 +7265,11 @@ bool CVideoDatabase::GetMusicVideosByWhe
+ sorting.sortBy == SortByNone &&
+ (sorting.limitStart > 0 || sorting.limitEnd > 0))
+ {
+- total = (int)strtol(GetSingleValue(PrepareSQL(strSQL, "COUNT(1)") + strSQLExtra, m_pDS).c_str(), NULL, 10);
++ total = (int)strtol(GetSingleValue(PrepareSQL(strSQL.c_str(), "COUNT(1)") + strSQLExtra, m_pDS).c_str(), NULL, 10);
+ strSQLExtra += DatabaseUtils::BuildLimitClause(sorting.limitEnd, sorting.limitStart);
+ }
+
+- strSQL = PrepareSQL(strSQL, !extFilter.fields.empty() ? extFilter.fields.c_str() : "*") + strSQLExtra;
++ strSQL = PrepareSQL(strSQL.c_str(), !extFilter.fields.empty() ? extFilter.fields.c_str() : "*") + strSQLExtra;
+
+ int iRowsFound = RunQuery(strSQL);
+ if (iRowsFound <= 0)
diff --git a/multimedia/kodi/patches/patch-xbmc_windowing_WinEventsX11.cpp b/multimedia/kodi/patches/patch-xbmc_windowing_WinEventsX11.cpp
new file mode 100644
index 00000000000..a8d6b353c18
--- /dev/null
+++ b/multimedia/kodi/patches/patch-xbmc_windowing_WinEventsX11.cpp
@@ -0,0 +1,13 @@
+$NetBSD: patch-xbmc_windowing_WinEventsX11.cpp,v 1.1 2015/12/23 12:43:25 joerg Exp $
+
+--- xbmc/windowing/WinEventsX11.cpp.orig 2015-12-22 18:16:12.000000000 +0000
++++ xbmc/windowing/WinEventsX11.cpp
+@@ -19,6 +19,8 @@
+ *
+ */
+
++#include <locale.h>
++#include <cstdlib>
+ #include "system.h"
+
+ #ifdef HAS_X11_WIN_EVENTS