diff options
author | Wolfgang Schupp <w.schupp@a1.net> | 2018-09-26 11:24:58 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-09-26 11:24:58 +0200 |
commit | fccf13b440fe4de676558bac3080fe46b6dc4ca1 (patch) | |
tree | 1f2f2dda05ce15c892990e418615b4d5a7348cb6 | |
parent | 5ebfdb4ed8e172c9fb3966dfdabeccf216e59724 (diff) | |
parent | ca76a74490eda3977ab430975c846ea9841c8883 (diff) |
Merge pull request #14460 from wsnipex/userdata_dir
[linux] allow overriding the userdata dir
-rw-r--r-- | tools/Linux/kodi.sh.in | 14 | ||||
-rw-r--r-- | xbmc/Application.cpp | 44 |
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 ¶ms) 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); |