From 2b60192c52c1fe93454aeaa23b5d1cc3b9f2c18e Mon Sep 17 00:00:00 2001 From: vpeter4 Date: Thu, 25 Sep 2014 20:19:18 +0200 Subject: [PATCH] xbmc: make binary addons executable after installation --- ...mc-200-make-binary-addons-executable.patch | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 packages/mediacenter/xbmc/patches/xbmc-200-make-binary-addons-executable.patch diff --git a/packages/mediacenter/xbmc/patches/xbmc-200-make-binary-addons-executable.patch b/packages/mediacenter/xbmc/patches/xbmc-200-make-binary-addons-executable.patch new file mode 100644 index 0000000000..0c93cf747b --- /dev/null +++ b/packages/mediacenter/xbmc/patches/xbmc-200-make-binary-addons-executable.patch @@ -0,0 +1,54 @@ +From c572751d90ab26971d401819b146cf4daa64670c Mon Sep 17 00:00:00 2001 +From: vpeter4 +Date: Wed, 1 Oct 2014 10:12:11 +0200 +Subject: [PATCH] make binary addons executable + +add executable mode to all files in addon's bin folder +--- + xbmc/addons/AddonInstaller.cpp | 23 +++++++++++++++++++++++ + 1 file changed, 23 insertions(+) + +diff --git a/xbmc/addons/AddonInstaller.cpp b/xbmc/addons/AddonInstaller.cpp +index d358a23..6b55c3a 100644 +--- a/xbmc/addons/AddonInstaller.cpp ++++ b/xbmc/addons/AddonInstaller.cpp +@@ -39,6 +39,9 @@ + #include "dialogs/GUIDialogKaiToast.h" + #include "dialogs/GUIDialogProgress.h" + #include "URL.h" ++#include ++#include ++#include + + using namespace std; + using namespace XFILE; +@@ -715,6 +718,26 @@ bool CAddonInstallJob::Install(const std::string &installFrom, const AddonPtr& r + + void CAddonInstallJob::OnPostInstall(bool reloadAddon) + { ++ std::string addonDirPath; ++ std::string chmodFilePath; ++ DIR *addonsDir; ++ struct dirent *fileDirent; ++ struct stat fileStat; ++ int statRet; ++ ++ addonDirPath = "/storage/.xbmc/addons/" + m_addon->ID() + "/bin/"; ++ if ((addonsDir = opendir(addonDirPath.c_str())) != NULL) ++ { ++ while ((fileDirent = readdir(addonsDir)) != NULL) ++ { ++ chmodFilePath = addonDirPath + fileDirent->d_name; ++ statRet = stat(chmodFilePath.c_str(), &fileStat); ++ if (statRet == 0 && (fileStat.st_mode & S_IFMT) != S_IFDIR) ++ chmod(chmodFilePath.c_str(), fileStat.st_mode | S_IXUSR | S_IXGRP | S_IXOTH); ++ } ++ closedir(addonsDir); ++ } ++ + if (CSettings::Get().GetBool("general.addonnotifications")) + { + CGUIDialogKaiToast::QueueNotification(m_addon->Icon(), +-- +1.8.1.2 +