aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWolfgang Schupp <w.schupp@a1.net>2018-09-26 11:24:58 +0200
committerGitHub <noreply@github.com>2018-09-26 11:24:58 +0200
commitfccf13b440fe4de676558bac3080fe46b6dc4ca1 (patch)
tree1f2f2dda05ce15c892990e418615b4d5a7348cb6
parent5ebfdb4ed8e172c9fb3966dfdabeccf216e59724 (diff)
parentca76a74490eda3977ab430975c846ea9841c8883 (diff)
Merge pull request #14460 from wsnipex/userdata_dir
[linux] allow overriding the userdata dir
-rw-r--r--tools/Linux/kodi.sh.in14
-rw-r--r--xbmc/Application.cpp44
2 files changed, 34 insertions, 24 deletions
diff --git a/tools/Linux/kodi.sh.in b/tools/Linux/kodi.sh.in
index a16b448984..4b2b6a7476 100644
--- a/tools/Linux/kodi.sh.in
+++ b/tools/Linux/kodi.sh.in
@@ -27,7 +27,7 @@ datarootdir="@datarootdir@"
LIBDIR="@libdir@"
APP_BINARY=$LIBDIR/${bin_name}/@APP_BINARY@
CRASHLOG_DIR=${CRASHLOG_DIR:-$HOME}
-USERDATA_DIR="${HOME}/.${bin_name}"
+KODI_DATA=${KODI_DATA:-"${HOME}/.${bin_name}"} # mapped to special://home/
WINDOWING=${WINDOWING:-"auto"}
# Workaround for high CPU load with nvidia GFX
@@ -90,10 +90,10 @@ migrate_home()
[ "$(basename $0)" = "xbmc" ] && echo "WARNING: Running ${bin_name} as "xbmc" is deprecated and will be removed in later versions, please switch to using the ${bin_name} binary"
#check if data migration is needed
- if [ -d "${HOME}/.xbmc" ] && [ ! -d "${USERDATA_DIR}" ]; then
- echo "INFO: migrating userdata folder. Renaming ${HOME}/.xbmc to $USERDATA_DIR"
- mv ${HOME}/.xbmc $USERDATA_DIR
- touch ${USERDATA_DIR}/.kodi_data_was_migrated
+ if [ -d "${HOME}/.xbmc" ] && [ ! -d "${KODI_DATA}" ]; then
+ echo "INFO: migrating userdata folder. Renaming ${HOME}/.xbmc to $KODI_DATA"
+ mv ${HOME}/.xbmc $KODI_DATA
+ touch ${KODI_DATA}/.kodi_data_was_migrated
fi
}
@@ -176,9 +176,9 @@ print_crash_report()
echo >> $FILE
echo "################# LOG FILE ##################" >> $FILE
echo >> $FILE
- if [ -f $USERDATA_DIR/temp/@APP_NAME_LC@.log ]
+ if [ -f $KODI_DATA/temp/@APP_NAME_LC@.log ]
then
- cat $USERDATA_DIR/temp/@APP_NAME_LC@.log >> $FILE
+ cat $KODI_DATA/temp/@APP_NAME_LC@.log >> $FILE
echo >> $FILE
else
echo "Logfile not found in the usual place." >> $FILE
diff --git a/xbmc/Application.cpp b/xbmc/Application.cpp
index 74fb49edef..8bc0655830 100644
--- a/xbmc/Application.cpp
+++ b/xbmc/Application.cpp
@@ -505,7 +505,7 @@ bool CApplication::Create(const CAppParamParser &params)
CLog::Log(LOGNOTICE, "Local hostname: %s", hostname.c_str());
std::string lowerAppName = CCompileInfo::GetAppName();
StringUtils::ToLower(lowerAppName);
- CLog::Log(LOGNOTICE, "Log File is located: %s/%s.log", CSpecialProtocol::TranslatePath("special://logpath").c_str(), lowerAppName.c_str());
+ CLog::Log(LOGNOTICE, "Log File is located: %s.log", CSpecialProtocol::TranslatePath("special://logpath/" + lowerAppName).c_str());
CRegExp::LogCheckUtf8Support();
CLog::Log(LOGNOTICE, "-----------------------------------------------------------------------");
@@ -737,6 +737,14 @@ bool CApplication::InitDirectoriesLinux()
*/
#if defined(TARGET_POSIX) && !defined(TARGET_DARWIN)
+ std::string appPath;
+ std::string appName = CCompileInfo::GetAppName();
+ std::string dotLowerAppName = "." + appName;
+ StringUtils::ToLower(dotLowerAppName);
+ const char* envAppHome = "KODI_HOME";
+ const char* envAppBinHome = "KODI_BIN_HOME";
+ const char* envAppTemp = "KODI_TEMP";
+
std::string userName;
if (getenv("USER"))
userName = getenv("USER");
@@ -744,23 +752,30 @@ bool CApplication::InitDirectoriesLinux()
userName = "root";
std::string userHome;
- if (getenv("HOME"))
+ if (getenv("KODI_DATA"))
+ userHome = getenv("KODI_DATA");
+ else if (getenv("HOME"))
+ {
userHome = getenv("HOME");
+ userHome.append("/" + dotLowerAppName);
+ }
else
+ {
userHome = "/root";
+ userHome.append("/" + dotLowerAppName);
+ }
+
+ std::string strTempPath;
+ if (getenv(envAppTemp))
+ strTempPath = getenv(envAppTemp);
+ else
+ strTempPath = userHome + "/temp";
+
std::string binaddonAltDir;
if (getenv("KODI_BINADDON_PATH"))
binaddonAltDir = getenv("KODI_BINADDON_PATH");
- std::string appPath;
- std::string appName = CCompileInfo::GetAppName();
- std::string dotLowerAppName = "." + appName;
- StringUtils::ToLower(dotLowerAppName);
- const char* envAppHome = "KODI_HOME";
- const char* envAppBinHome = "KODI_BIN_HOME";
- const char* envAppTemp = "KODI_TEMP";
-
auto appBinPath = CUtil::GetHomePath(envAppBinHome);
// overridden by user
if (getenv(envAppHome))
@@ -793,13 +808,8 @@ bool CApplication::InitDirectoriesLinux()
CSpecialProtocol::SetXBMCBinPath(appBinPath);
CSpecialProtocol::SetXBMCAltBinAddonPath(binaddonAltDir);
CSpecialProtocol::SetXBMCPath(appPath);
- CSpecialProtocol::SetHomePath(userHome + "/" + dotLowerAppName);
- CSpecialProtocol::SetMasterProfilePath(userHome + "/" + dotLowerAppName + "/userdata");
-
- std::string strTempPath = userHome;
- strTempPath = URIUtils::AddFileToFolder(strTempPath, dotLowerAppName + "/temp");
- if (getenv(envAppTemp))
- strTempPath = getenv(envAppTemp);
+ CSpecialProtocol::SetHomePath(userHome);
+ CSpecialProtocol::SetMasterProfilePath(userHome + "/userdata");
CSpecialProtocol::SetTempPath(strTempPath);
CSpecialProtocol::SetLogPath(strTempPath);