aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwsnipex <wsnipex@a1.net>2018-09-20 10:27:32 +0200
committerwsnipex <wsnipex@a1.net>2018-09-21 15:22:40 +0200
commitadad4d90226f82cf2ff708eec83a93f02e8226e9 (patch)
tree5a770ca3d23517e7c164be4f9b934592288fc8f1
parent6deac11f73f1003d9d0a056117b6a90ecde2bdd0 (diff)
[linux] allow overriding our userdata dir
-rw-r--r--tools/Linux/kodi.sh.in14
-rw-r--r--xbmc/Application.cpp42
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);