From adad4d90226f82cf2ff708eec83a93f02e8226e9 Mon Sep 17 00:00:00 2001 From: wsnipex Date: Thu, 20 Sep 2018 10:27:32 +0200 Subject: [linux] allow overriding our userdata dir --- tools/Linux/kodi.sh.in | 14 +++++++------- xbmc/Application.cpp | 42 ++++++++++++++++++++++++++---------------- 2 files changed, 33 insertions(+), 23 deletions(-) diff --git a/tools/Linux/kodi.sh.in b/tools/Linux/kodi.sh.in index 5e5360c96f..b8425b7cce 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 @@ -88,10 +88,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 } @@ -166,9 +166,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..ef6a019137 100644 --- a/xbmc/Application.cpp +++ b/xbmc/Application.cpp @@ -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); -- cgit v1.2.3