use eEnv::resolve() / eEnv.resolve()
authorAndreas Oberritter <obi@opendreambox.org>
Thu, 28 Oct 2010 18:29:01 +0000 (20:29 +0200)
committerAndreas Oberritter <obi@opendreambox.org>
Tue, 16 Nov 2010 16:15:37 +0000 (17:15 +0100)
21 files changed:
lib/base/encoding.cpp
lib/dvb/db.cpp
lib/dvb/scan.cpp
lib/python/Components/NimManager.py
lib/python/Components/Renderer/Picon.py
lib/python/Components/UsageConfig.py
lib/python/Plugins/SystemPlugins/CommonInterfaceAssignment/plugin.py
lib/python/Plugins/SystemPlugins/NFIFlash/flasher.py
lib/python/Plugins/SystemPlugins/SkinSelector/plugin.py
lib/python/Plugins/SystemPlugins/SoftwareManager/BackupRestore.py
lib/python/Plugins/SystemPlugins/SoftwareManager/ImageWizard.py
lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py
lib/python/Plugins/SystemPlugins/WirelessLan/plugin.py
lib/python/Screens/ChannelSelection.py
lib/python/Screens/Setup.py
lib/python/Screens/Wizard.py
lib/python/Tools/Directories.py
main/bsod.cpp
main/enigma-gdi.cpp
main/enigma-gui.cpp
main/enigma.cpp

index 8b4b592..361acce 100644 (file)
@@ -2,6 +2,7 @@
 #include <cstdlib>
 #include <lib/base/encoding.h>
 #include <lib/base/eerror.h>
 #include <cstdlib>
 #include <lib/base/encoding.h>
 #include <lib/base/eerror.h>
+#include <lib/base/eenv.h>
 
 eDVBTextEncodingHandler encodingHandler;  // the one and only instance
 
 
 eDVBTextEncodingHandler encodingHandler;  // the one and only instance
 
@@ -17,8 +18,8 @@ inline char toupper(char c)
 
 eDVBTextEncodingHandler::eDVBTextEncodingHandler()
 {
 
 eDVBTextEncodingHandler::eDVBTextEncodingHandler()
 {
-       const char * file=DATADIR "/enigma2/encoding.conf";
-       FILE *f = fopen(file, "rt");
+       std::string file = eEnv::resolve("${datadir}/enigma2/encoding.conf");
+       FILE *f = fopen(file.c_str(), "rt");
        if (f)
        {
                char *line = (char*) malloc(256);
        if (f)
        {
                char *line = (char*) malloc(256);
@@ -61,7 +62,7 @@ eDVBTextEncodingHandler::eDVBTextEncodingHandler()
                free(line);
        }
        else
                free(line);
        }
        else
-               eDebug("[eDVBTextEncodingHandler] couldn't open %s !", file);
+               eDebug("[eDVBTextEncodingHandler] couldn't open %s !", file.c_str());
 }
 
 void eDVBTextEncodingHandler::getTransponderDefaultMapping(int tsidonid, int &table)
 }
 
 void eDVBTextEncodingHandler::getTransponderDefaultMapping(int tsidonid, int &table)
index 38be635..522035e 100644 (file)
@@ -3,6 +3,7 @@
 #include <lib/dvb/dvb.h>
 #include <lib/dvb/frontend.h>
 #include <lib/dvb/epgcache.h>
 #include <lib/dvb/dvb.h>
 #include <lib/dvb/frontend.h>
 #include <lib/dvb/epgcache.h>
+#include <lib/base/eenv.h>
 #include <lib/base/eerror.h>
 #include <lib/base/estring.h>
 #include <xmlccwrap/xmlccwrap.h>
 #include <lib/base/eerror.h>
 #include <lib/base/estring.h>
 #include <xmlccwrap/xmlccwrap.h>
@@ -73,7 +74,7 @@ RESULT eBouquet::moveService(const eServiceReference &ref, unsigned int pos)
 
 RESULT eBouquet::flushChanges()
 {
 
 RESULT eBouquet::flushChanges()
 {
-       FILE *f=fopen((CONFIGDIR"/enigma2/"+m_filename).c_str(), "w");
+       FILE *f=fopen(eEnv::resolve("${sysconfdir}/enigma2/" + m_filename).c_str(), "w");
        if (!f)
                return -1;
        if ( fprintf(f, "#NAME %s\r\n", m_bouquet_name.c_str()) < 0 )
        if (!f)
                return -1;
        if ( fprintf(f, "#NAME %s\r\n", m_bouquet_name.c_str()) < 0 )
@@ -280,7 +281,7 @@ DEFINE_REF(eDVBDB);
 
 void eDVBDB::reloadServicelist()
 {
 
 void eDVBDB::reloadServicelist()
 {
-       loadServicelist(CONFIGDIR"/enigma2/lamedb");
+       loadServicelist(eEnv::resolve("${sysconfdir}/enigma2/lamedb").c_str());
 }
 
 void eDVBDB::parseServiceData(ePtr<eDVBService> s, std::string str)
 }
 
 void eDVBDB::parseServiceData(ePtr<eDVBService> s, std::string str)
@@ -324,14 +325,14 @@ void eDVBDB::loadServicelist(const char *file)
 {
        eDebug("---- opening lame channel db");
        FILE *f=fopen(file, "rt");
 {
        eDebug("---- opening lame channel db");
        FILE *f=fopen(file, "rt");
-       if (!f && strcmp(file, CONFIGDIR"/enigma2/lamedb") == 0)
+       if (!f && strcmp(file, eEnv::resolve("${sysconfdir}/enigma2/lamedb").c_str()) == 0)
        {
                struct stat s;
                if ( !stat("lamedb", &s) )
                {
        {
                struct stat s;
                if ( !stat("lamedb", &s) )
                {
-                       if ( !stat(CONFIGDIR"/enigma2", &s) )
+                       if ( !stat(eEnv::resolve("${sysconfdir}/enigma2").c_str(), &s) )
                        {
                        {
-                               rename("lamedb", CONFIGDIR"/enigma2/lamedb" );
+                               rename("lamedb", eEnv::resolve("${sysconfdir}/enigma2/lamedb").c_str());
                                reloadServicelist();
                        }
                }
                                reloadServicelist();
                        }
                }
@@ -594,7 +595,7 @@ void eDVBDB::saveServicelist(const char *file)
 
 void eDVBDB::saveServicelist()
 {
 
 void eDVBDB::saveServicelist()
 {
-       saveServicelist(CONFIGDIR"/enigma2/lamedb");
+       saveServicelist(eEnv::resolve("${sysconfdir}/enigma2/lamedb").c_str());
 }
 
 void eDVBDB::loadBouquet(const char *path)
 }
 
 void eDVBDB::loadBouquet(const char *path)
@@ -618,7 +619,7 @@ void eDVBDB::loadBouquet(const char *path)
        std::list<eServiceReference> &list = bouquet.m_services;
        list.clear();
 
        std::list<eServiceReference> &list = bouquet.m_services;
        list.clear();
 
-       std::string p = CONFIGDIR"/enigma2/";
+       std::string p = eEnv::resolve("${sysconfdir}/enigma2/");
        p+=path;
        eDebug("loading bouquet... %s", p.c_str());
        FILE *fp=fopen(p.c_str(), "rt");
        p+=path;
        eDebug("loading bouquet... %s", p.c_str());
        FILE *fp=fopen(p.c_str(), "rt");
index b37aa71..d559614 100644 (file)
@@ -10,6 +10,7 @@
 #include <lib/dvb/esection.h>
 #include <lib/dvb/scan.h>
 #include <lib/dvb/frontend.h>
 #include <lib/dvb/esection.h>
 #include <lib/dvb/scan.h>
 #include <lib/dvb/frontend.h>
+#include <lib/base/eenv.h>
 #include <lib/base/eerror.h>
 #include <lib/base/estring.h>
 #include <lib/python/python.h>
 #include <lib/base/eerror.h>
 #include <lib/base/estring.h>
 #include <lib/python/python.h>
@@ -29,7 +30,8 @@ eDVBScan::eDVBScan(iDVBChannel *channel, bool usePAT, bool debug)
        if (m_channel->getDemux(m_demux))
                SCAN_eDebug("scan: failed to allocate demux!");
        m_channel->connectStateChange(slot(*this, &eDVBScan::stateChange), m_stateChanged_connection);
        if (m_channel->getDemux(m_demux))
                SCAN_eDebug("scan: failed to allocate demux!");
        m_channel->connectStateChange(slot(*this, &eDVBScan::stateChange), m_stateChanged_connection);
-       FILE *f = fopen("/etc/enigma2/scan_tp_valid_check.py", "r");
+       std::string filename = eEnv::resolve("${sysconfdir}/scan_tp_valid_check.py");
+       FILE *f = fopen(filename.c_str(), "r");
        if (f)
        {
                char code[16384];
        if (f)
        {
                char code[16384];
@@ -37,7 +39,7 @@ eDVBScan::eDVBScan(iDVBChannel *channel, bool usePAT, bool debug)
                if (rd)
                {
                        code[rd]=0;
                if (rd)
                {
                        code[rd]=0;
-                       m_additional_tsid_onid_check_func = Py_CompileString(code, "/etc/enigma2/scan_tp_valid_check.py", Py_file_input);
+                       m_additional_tsid_onid_check_func = Py_CompileString(code, filename.c_str(), Py_file_input);
                }
                fclose(f);
        }
                }
                fclose(f);
        }
index 7303186..d8a7c5c 100644 (file)
@@ -10,7 +10,7 @@ from enigma import eDVBSatelliteEquipmentControl as secClass, \
        eDVBSatelliteDiseqcParameters as diseqcParam, \
        eDVBSatelliteSwitchParameters as switchParam, \
        eDVBSatelliteRotorParameters as rotorParam, \
        eDVBSatelliteDiseqcParameters as diseqcParam, \
        eDVBSatelliteSwitchParameters as switchParam, \
        eDVBSatelliteRotorParameters as rotorParam, \
-       eDVBResourceManager, eDVBDB
+       eDVBResourceManager, eDVBDB, eEnv
 
 from time import localtime, mktime
 from datetime import datetime
 
 from time import localtime, mktime
 from datetime import datetime
@@ -1082,7 +1082,7 @@ def InitNimManager(nimmgr):
 
        unicablelnbproducts = {}
        unicablematrixproducts = {}
 
        unicablelnbproducts = {}
        unicablematrixproducts = {}
-       doc = xml.etree.cElementTree.parse("/usr/share/enigma2/unicable.xml")
+       doc = xml.etree.cElementTree.parse(eEnv.resolve("${datadir}/enigma2/unicable.xml"))
        root = doc.getroot()
 
        entry = root.find("lnb")
        root = doc.getroot()
 
        entry = root.find("lnb")
index 5ae43ed..51dc09a 100644 (file)
@@ -2,11 +2,11 @@
 ## Picon renderer by Gruffy .. some speedups by Ghost
 ##
 from Renderer import Renderer
 ## Picon renderer by Gruffy .. some speedups by Ghost
 ##
 from Renderer import Renderer
-from enigma import ePixmap
+from enigma import ePixmap, eEnv
 from Tools.Directories import fileExists, SCOPE_SKIN_IMAGE, SCOPE_CURRENT_SKIN, resolveFilename
 
 class Picon(Renderer):
 from Tools.Directories import fileExists, SCOPE_SKIN_IMAGE, SCOPE_CURRENT_SKIN, resolveFilename
 
 class Picon(Renderer):
-       searchPaths = ('/usr/share/enigma2/%s/',
+       searchPaths = (eEnv.resolve('${datadir}/enigma2/%s/'),
                                '/media/cf/%s/',
                                '/media/usb/%s/')
 
                                '/media/cf/%s/',
                                '/media/usb/%s/')
 
index b86c1a1..8ea9aa6 100644 (file)
@@ -1,7 +1,7 @@
 from Components.Harddisk import harddiskmanager
 from config import ConfigSubsection, ConfigYesNo, config, ConfigSelection, ConfigText, ConfigNumber, ConfigSet, ConfigLocations
 from Tools.Directories import resolveFilename, SCOPE_HDD
 from Components.Harddisk import harddiskmanager
 from config import ConfigSubsection, ConfigYesNo, config, ConfigSelection, ConfigText, ConfigNumber, ConfigSet, ConfigLocations
 from Tools.Directories import resolveFilename, SCOPE_HDD
-from enigma import Misc_Options, setTunerTypePriorityOrder;
+from enigma import Misc_Options, setTunerTypePriorityOrder, eEnv;
 from SystemInfo import SystemInfo
 import os
 
 from SystemInfo import SystemInfo
 import os
 
@@ -94,7 +94,7 @@ def InitUsageConfig():
 
        SystemInfo["12V_Output"] = Misc_Options.getInstance().detected_12V_output()
 
 
        SystemInfo["12V_Output"] = Misc_Options.getInstance().detected_12V_output()
 
-       config.usage.keymap = ConfigText(default = "/usr/share/enigma2/keymap.xml")
+       config.usage.keymap = ConfigText(default = eEnv.resolve("${datadir}/enigma2/keymap.xml"))
 
        config.seek = ConfigSubsection()
        config.seek.selfdefined_13 = ConfigNumber(default=15)
 
        config.seek = ConfigSubsection()
        config.seek.selfdefined_13 = ConfigNumber(default=15)
index 2c0edf5..52296c6 100755 (executable)
@@ -12,7 +12,7 @@ from ServiceReference import ServiceReference
 from Plugins.Plugin import PluginDescriptor
 from xml.etree.cElementTree import parse as ci_parse
 from Tools.XMLTools import elementsWithTag, mergeText, stringToXML
 from Plugins.Plugin import PluginDescriptor
 from xml.etree.cElementTree import parse as ci_parse
 from Tools.XMLTools import elementsWithTag, mergeText, stringToXML
-from enigma import eDVBCI_UI, eDVBCIInterfaces
+from enigma import eDVBCI_UI, eDVBCIInterfaces, eEnv
 
 from os import system, path as os_path
 
 
 from os import system, path as os_path
 
@@ -115,7 +115,7 @@ class CIconfigMenu(Screen):
 
                Screen.__init__(self, session)
                self.ci_slot=ci_slot
 
                Screen.__init__(self, session)
                self.ci_slot=ci_slot
-               self.filename="/etc/enigma2/ci"+str(self.ci_slot)+".xml"
+               self.filename = eEnv.resolve("${sysconfdir}/enigma2/ci") + str(self.ci_slot) + ".xml"
 
                self["key_red"] = StaticText(_("Delete"))
                self["key_green"] = StaticText(_("add Service"))
 
                self["key_red"] = StaticText(_("Delete"))
                self["key_green"] = StaticText(_("add Service"))
@@ -567,7 +567,7 @@ def activate_all(session):
                        return Len > 0 and definitions[Len-1].text or default   
 
                for ci in range(NUM_CI):
                        return Len > 0 and definitions[Len-1].text or default   
 
                for ci in range(NUM_CI):
-                       filename="/etc/enigma2/ci"+str(ci)+".xml"
+                       filename = eEnv.resolve("${sysconfdir}/enigma2/ci") + str(ci) + ".xml"
 
                        if not os_path.exists(filename):
                                print "[CI_Activate_Config_CI%d] no config file found" %ci
 
                        if not os_path.exists(filename):
                                print "[CI_Activate_Config_CI%d] no config file found" %ci
index ba96c07..3504d4c 100755 (executable)
@@ -14,7 +14,7 @@ from Screens.TaskView import JobView
 from Tools.Directories import fileExists
 from Tools.HardwareInfo import HardwareInfo
 from os import system
 from Tools.Directories import fileExists
 from Tools.HardwareInfo import HardwareInfo
 from os import system
-from enigma import eConsoleAppContainer, quitMainloop
+from enigma import eConsoleAppContainer, quitMainloop, eEnv
 from Components.About import about
 
 class md5Postcondition(Condition):
 from Components.About import about
 
 class md5Postcondition(Condition):
@@ -51,7 +51,7 @@ class md5verify(Task):
 class writeNAND(Task):
        def __init__(self, job, param, box):
                Task.__init__(self,job, ("Writing image file to NAND Flash"))
 class writeNAND(Task):
        def __init__(self, job, param, box):
                Task.__init__(self,job, ("Writing image file to NAND Flash"))
-               self.setTool("/usr/lib/enigma2/python/Plugins/SystemPlugins/NFIFlash/writenfi-mipsel-2.6.18-r1")
+               self.setTool(eEnv.resolve("${libdir}/enigma2/python/Plugins/SystemPlugins/NFIFlash/writenfi-mipsel-2.6.18-r1"))
                if box == "dm7025":
                        self.end = 256
                elif box[:5] == "dm800":
                if box == "dm7025":
                        self.end = 256
                elif box[:5] == "dm800":
@@ -226,4 +226,4 @@ class NFIFlash(Screen):
                if self.job.status == self.job.FINISHED:
                        self["status"].text = ("rebooting...")
                        from os import system
                if self.job.status == self.job.FINISHED:
                        self["status"].text = ("rebooting...")
                        from os import system
-                       system("/usr/lib/enigma2/python/Plugins/SystemPlugins/NFIFlash/kill_e2_reboot.sh")
+                       system(eEnv.resolve("${libdir}/enigma2/python/Plugins/SystemPlugins/NFIFlash/kill_e2_reboot.sh"))
index 997b957..30cbb6b 100755 (executable)
@@ -12,12 +12,13 @@ from Plugins.Plugin import PluginDescriptor
 from Components.config import config
 from Tools.Directories import resolveFilename, SCOPE_PLUGINS
 from os import path, walk
 from Components.config import config
 from Tools.Directories import resolveFilename, SCOPE_PLUGINS
 from os import path, walk
+from enigma import eEnv
 
 class SkinSelector(Screen):
        # for i18n:
        # _("Choose your Skin")
        skinlist = []
 
 class SkinSelector(Screen):
        # for i18n:
        # _("Choose your Skin")
        skinlist = []
-       root = "/usr/share/enigma2/"
+       root = eEnv.resolve("${datadir}/enigma2/")
 
        def __init__(self, session, args = None):
 
 
        def __init__(self, session, args = None):
 
index 7bd7d7a..01649bb 100755 (executable)
@@ -11,7 +11,7 @@ from Components.config import config
 from Components.ConfigList import ConfigList,ConfigListScreen
 from Components.FileList import MultiFileSelectList
 from Plugins.Plugin import PluginDescriptor
 from Components.ConfigList import ConfigList,ConfigListScreen
 from Components.FileList import MultiFileSelectList
 from Plugins.Plugin import PluginDescriptor
-from enigma import eTimer
+from enigma import eTimer, eEnv
 from Tools.Directories import *
 from os import popen, path, makedirs, listdir, access, stat, rename, remove, W_OK, R_OK
 from time import gmtime, strftime, localtime
 from Tools.Directories import *
 from os import popen, path, makedirs, listdir, access, stat, rename, remove, W_OK, R_OK
 from time import gmtime, strftime, localtime
@@ -20,7 +20,7 @@ from datetime import date
 
 config.plugins.configurationbackup = ConfigSubsection()
 config.plugins.configurationbackup.backuplocation = ConfigText(default = '/media/hdd/', visible_width = 50, fixed_size = False)
 
 config.plugins.configurationbackup = ConfigSubsection()
 config.plugins.configurationbackup.backuplocation = ConfigText(default = '/media/hdd/', visible_width = 50, fixed_size = False)
-config.plugins.configurationbackup.backupdirs = ConfigLocations(default=['/etc/enigma2/', '/etc/network/interfaces', '/etc/wpa_supplicant.conf', '/etc/resolv.conf', '/etc/default_gw', '/etc/hostname'])
+config.plugins.configurationbackup.backupdirs = ConfigLocations(default=[eEnv.resolve('${sysconfdir}/enigma2/'), '/etc/network/interfaces', '/etc/wpa_supplicant.conf', '/etc/resolv.conf', '/etc/default_gw', '/etc/hostname'])
 
 def getBackupPath():
        backuppath = config.plugins.configurationbackup.backuplocation.value
 
 def getBackupPath():
        backuppath = config.plugins.configurationbackup.backuplocation.value
index 1797e4f..32d7140 100755 (executable)
@@ -9,13 +9,14 @@ from Plugins.Plugin import PluginDescriptor
 from Tools.Directories import fileExists, resolveFilename, SCOPE_PLUGINS, SCOPE_SKIN_IMAGE
 from Components.Pixmap import Pixmap, MovingPixmap, MultiPixmap
 from os import popen, path, makedirs, listdir, access, stat, rename, remove, W_OK, R_OK
 from Tools.Directories import fileExists, resolveFilename, SCOPE_PLUGINS, SCOPE_SKIN_IMAGE
 from Components.Pixmap import Pixmap, MovingPixmap, MultiPixmap
 from os import popen, path, makedirs, listdir, access, stat, rename, remove, W_OK, R_OK
+from enigma import eEnv
 
 from Components.config import config, getConfigListEntry, ConfigSubsection, ConfigText, ConfigLocations, ConfigBoolean
 from Components.Harddisk import harddiskmanager
 config.misc.firstrun = ConfigBoolean(default = True)
 config.plugins.configurationbackup = ConfigSubsection()
 config.plugins.configurationbackup.backuplocation = ConfigText(default = '/media/hdd/', visible_width = 50, fixed_size = False)
 
 from Components.config import config, getConfigListEntry, ConfigSubsection, ConfigText, ConfigLocations, ConfigBoolean
 from Components.Harddisk import harddiskmanager
 config.misc.firstrun = ConfigBoolean(default = True)
 config.plugins.configurationbackup = ConfigSubsection()
 config.plugins.configurationbackup.backuplocation = ConfigText(default = '/media/hdd/', visible_width = 50, fixed_size = False)
-config.plugins.configurationbackup.backupdirs = ConfigLocations(default=['/etc/enigma2/', '/etc/network/interfaces', '/etc/wpa_supplicant.conf'])
+config.plugins.configurationbackup.backupdirs = ConfigLocations(default=[eEnv.resolve('${sysconfdir}/enigma2/'), '/etc/network/interfaces', '/etc/wpa_supplicant.conf'])
 
 
 backupfile = "enigma2settingsbackup.tar.gz"
 
 
 backupfile = "enigma2settingsbackup.tar.gz"
index 707663a..e1f3e1d 100755 (executable)
@@ -28,7 +28,7 @@ from Components.Network import iNetwork
 from Tools.Directories import pathExists, fileExists, resolveFilename, SCOPE_PLUGINS, SCOPE_CURRENT_PLUGIN, SCOPE_CURRENT_SKIN, SCOPE_METADIR
 from Tools.LoadPixmap import LoadPixmap
 from Tools.NumericalTextInput import NumericalTextInput
 from Tools.Directories import pathExists, fileExists, resolveFilename, SCOPE_PLUGINS, SCOPE_CURRENT_PLUGIN, SCOPE_CURRENT_SKIN, SCOPE_METADIR
 from Tools.LoadPixmap import LoadPixmap
 from Tools.NumericalTextInput import NumericalTextInput
-from enigma import eTimer, quitMainloop, RT_HALIGN_LEFT, RT_VALIGN_CENTER, eListboxPythonMultiContent, eListbox, gFont, getDesktop, ePicLoad, eRCInput, getPrevAsciiCode
+from enigma import eTimer, quitMainloop, RT_HALIGN_LEFT, RT_VALIGN_CENTER, eListboxPythonMultiContent, eListbox, gFont, getDesktop, ePicLoad, eRCInput, getPrevAsciiCode, eEnv
 from cPickle import dump, load
 from os import path as os_path, system as os_system, unlink, stat, mkdir, popen, makedirs, listdir, access, rename, remove, W_OK, R_OK, F_OK
 from time import time, gmtime, strftime, localtime
 from cPickle import dump, load
 from os import path as os_path, system as os_system, unlink, stat, mkdir, popen, makedirs, listdir, access, rename, remove, W_OK, R_OK, F_OK
 from time import time, gmtime, strftime, localtime
@@ -43,7 +43,7 @@ from SoftwareTools import iSoftwareTools
 
 config.plugins.configurationbackup = ConfigSubsection()
 config.plugins.configurationbackup.backuplocation = ConfigText(default = '/media/hdd/', visible_width = 50, fixed_size = False)
 
 config.plugins.configurationbackup = ConfigSubsection()
 config.plugins.configurationbackup.backuplocation = ConfigText(default = '/media/hdd/', visible_width = 50, fixed_size = False)
-config.plugins.configurationbackup.backupdirs = ConfigLocations(default=['/etc/enigma2/', '/etc/network/interfaces', '/etc/wpa_supplicant.conf', '/etc/resolv.conf', '/etc/default_gw', '/etc/hostname'])
+config.plugins.configurationbackup.backupdirs = ConfigLocations(default=[eEnv.resolve('${sysconfdir}/enigma2/'), '/etc/network/interfaces', '/etc/wpa_supplicant.conf', '/etc/resolv.conf', '/etc/default_gw', '/etc/hostname'])
 
 config.plugins.SoftwareManager = ConfigSubsection()
 config.plugins.SoftwareManager.overwriteConfigFiles = ConfigSelection(
 
 config.plugins.SoftwareManager = ConfigSubsection()
 config.plugins.SoftwareManager.overwriteConfigFiles = ConfigSelection(
@@ -1684,7 +1684,7 @@ class PacketManager(Screen, NumericalTextInput):
                self.cmdList = []
                self.cachelist = []
                self.cache_ttl = 86400  #600 is default, 0 disables, Seconds cache is considered valid (24h should be ok for caching ipkgs)
                self.cmdList = []
                self.cachelist = []
                self.cache_ttl = 86400  #600 is default, 0 disables, Seconds cache is considered valid (24h should be ok for caching ipkgs)
-               self.cache_file = '/usr/lib/enigma2/python/Plugins/SystemPlugins/SoftwareManager/packetmanager.cache' #Path to cache directory   
+               self.cache_file = eEnv.resolve('${libdir}/enigma2/python/Plugins/SystemPlugins/SoftwareManager/packetmanager.cache') #Path to cache directory
                self.oktext = _("\nAfter pressing OK, please wait!")
                self.unwanted_extensions = ('-dbg', '-dev', '-doc', 'busybox')
                self.opkgAvail = fileExists('/usr/bin/opkg')
                self.oktext = _("\nAfter pressing OK, please wait!")
                self.unwanted_extensions = ('-dbg', '-dev', '-doc', 'busybox')
                self.opkgAvail = fileExists('/usr/bin/opkg')
index 28ee363..a13c797 100755 (executable)
@@ -1,4 +1,4 @@
-from enigma import eTimer, eTPM
+from enigma import eTimer, eTPM, eEnv
 from Screens.Screen import Screen
 from Components.ActionMap import ActionMap, NumberActionMap
 from Components.Pixmap import Pixmap,MultiPixmap
 from Screens.Screen import Screen
 from Components.ActionMap import ActionMap, NumberActionMap
 from Components.Pixmap import Pixmap,MultiPixmap
@@ -18,7 +18,7 @@ from Tools.HardwareInfo import HardwareInfo
 from Wlan import Wlan, wpaSupplicant, iStatus
 import sha
 
 from Wlan import Wlan, wpaSupplicant, iStatus
 import sha
 
-plugin_path = "/usr/lib/enigma2/python/Plugins/SystemPlugins/WirelessLan"
+plugin_path = eEnv.resolve("${libdir}/enigma2/python/Plugins/SystemPlugins/WirelessLan")
 
 list = []
 list.append("WEP")
 
 list = []
 list.append("WEP")
index 34316f0..c07e349 100644 (file)
@@ -8,7 +8,7 @@ from Components.MenuList import MenuList
 from Components.ServiceEventTracker import ServiceEventTracker, InfoBarBase
 profile("ChannelSelection.py 1")
 from EpgSelection import EPGSelection
 from Components.ServiceEventTracker import ServiceEventTracker, InfoBarBase
 profile("ChannelSelection.py 1")
 from EpgSelection import EPGSelection
-from enigma import eServiceReference, eEPGCache, eServiceCenter, eRCInput, eTimer, eDVBDB, iPlayableService, iServiceInformation, getPrevAsciiCode
+from enigma import eServiceReference, eEPGCache, eServiceCenter, eRCInput, eTimer, eDVBDB, iPlayableService, iServiceInformation, getPrevAsciiCode, eEnv
 from Components.config import config, ConfigSubsection, ConfigText
 from Tools.NumericalTextInput import NumericalTextInput
 profile("ChannelSelection.py 2")
 from Components.config import config, ConfigSubsection, ConfigText
 from Tools.NumericalTextInput import NumericalTextInput
 profile("ChannelSelection.py 2")
@@ -544,7 +544,7 @@ class ChannelSelectionEdit:
                        refstr = refstr[pos+14:]
                        pos = refstr.find('"')
                        if pos != -1:
                        refstr = refstr[pos+14:]
                        pos = refstr.find('"')
                        if pos != -1:
-                               filename = '/etc/enigma2/' + refstr[:pos] # FIXMEEE !!! HARDCODED /etc/enigma2
+                               filename = eEnv.resolve('${sysconfdir}/enigma2/') + refstr[:pos]
                self.removeCurrentService()
                try:
                        if filename is not None:
                self.removeCurrentService()
                try:
                        if filename is not None:
index e9c3c68..61e6fdd 100755 (executable)
@@ -4,6 +4,7 @@ from Components.config import config, ConfigNothing
 from Components.SystemInfo import SystemInfo
 from Components.ConfigList import ConfigListScreen
 from Components.Sources.StaticText import StaticText
 from Components.SystemInfo import SystemInfo
 from Components.ConfigList import ConfigListScreen
 from Components.Sources.StaticText import StaticText
+from enigma import eEnv
 
 import xml.etree.cElementTree
 
 
 import xml.etree.cElementTree
 
@@ -14,7 +15,7 @@ try:
        setupfile = file('data/setup.xml', 'r')
 except:
        # if not found in the current path, we use the global datadir-path
        setupfile = file('data/setup.xml', 'r')
 except:
        # if not found in the current path, we use the global datadir-path
-       setupfile = file('/usr/share/enigma2/setup.xml', 'r')
+       setupfile = file(eEnv.resolve('${datadir}/enigma2/setup.xml'), 'r')
 setupdom = xml.etree.cElementTree.parse(setupfile)
 setupfile.close()
 
 setupdom = xml.etree.cElementTree.parse(setupfile)
 setupfile.close()
 
index a752d31..61e1d5e 100755 (executable)
@@ -10,7 +10,7 @@ from Components.ActionMap import NumberActionMap
 from Components.MenuList import MenuList
 from Components.ConfigList import ConfigList
 from Components.Sources.List import List
 from Components.MenuList import MenuList
 from Components.ConfigList import ConfigList
 from Components.Sources.List import List
-from enigma import eTimer
+from enigma import eTimer, eEnv
 
 from xml.sax import make_parser
 from xml.sax.handler import ContentHandler
 
 from xml.sax import make_parser
 from xml.sax.handler import ContentHandler
@@ -178,7 +178,7 @@ class Wizard(Screen):
                parser.setContentHandler(wizardHandler)
                for xmlfile in self.xmlfile:
                        if xmlfile[0] != '/':
                parser.setContentHandler(wizardHandler)
                for xmlfile in self.xmlfile:
                        if xmlfile[0] != '/':
-                               parser.parse('/usr/share/enigma2/' + xmlfile)
+                               parser.parse(eEnv.resolve('${datadir}/enigma2/') + xmlfile)
                        else:
                                parser.parse(xmlfile)
 
                        else:
                                parser.parse(xmlfile)
 
index 8ed2c8a..518db49 100755 (executable)
@@ -3,6 +3,7 @@
 from os import path as os_path, mkdir, rmdir, system, walk, stat as os_stat, listdir, readlink, makedirs, error as os_error, symlink, access, F_OK, R_OK, W_OK
 from stat import S_IMODE
 from re import compile
 from os import path as os_path, mkdir, rmdir, system, walk, stat as os_stat, listdir, readlink, makedirs, error as os_error, symlink, access, F_OK, R_OK, W_OK
 from stat import S_IMODE
 from re import compile
+from enigma import eEnv
 
 try:
        from os import chmod
 
 try:
        from os import chmod
@@ -39,26 +40,26 @@ PATH_CREATE = 0
 PATH_DONTCREATE = 1
 PATH_FALLBACK = 2
 defaultPaths = {
 PATH_DONTCREATE = 1
 PATH_FALLBACK = 2
 defaultPaths = {
-               SCOPE_TRANSPONDERDATA: ("/etc/", PATH_DONTCREATE),
-               SCOPE_SYSETC: ("/etc/", PATH_DONTCREATE),
-               SCOPE_FONTS: ("/usr/share/fonts/", PATH_DONTCREATE),
-               SCOPE_CONFIG: ("/etc/enigma2/", PATH_CREATE),
-               SCOPE_PLUGINS: ("/usr/lib/enigma2/python/Plugins/", PATH_CREATE),
+               SCOPE_TRANSPONDERDATA: (eEnv.resolve("${sysconfdir}/"), PATH_DONTCREATE),
+               SCOPE_SYSETC: (eEnv.resolve("${sysconfdir}/"), PATH_DONTCREATE),
+               SCOPE_FONTS: (eEnv.resolve("${datadir}/fonts/"), PATH_DONTCREATE),
+               SCOPE_CONFIG: (eEnv.resolve("${sysconfdir}/enigma2/"), PATH_CREATE),
+               SCOPE_PLUGINS: (eEnv.resolve("${libdir}/enigma2/python/Plugins/"), PATH_CREATE),
 
 
-               SCOPE_LANGUAGE: ("/usr/share/enigma2/po/", PATH_DONTCREATE),
+               SCOPE_LANGUAGE: (eEnv.resolve("${datadir}/enigma2/po/"), PATH_DONTCREATE),
 
 
-               SCOPE_SKIN: ("/usr/share/enigma2/", PATH_DONTCREATE),
-               SCOPE_SKIN_IMAGE: ("/usr/share/enigma2/", PATH_DONTCREATE),
+               SCOPE_SKIN: (eEnv.resolve("${datadir}/enigma2/"), PATH_DONTCREATE),
+               SCOPE_SKIN_IMAGE: (eEnv.resolve("${datadir}/enigma2/"), PATH_DONTCREATE),
                SCOPE_HDD: ("/hdd/movie/", PATH_DONTCREATE),
                SCOPE_MEDIA: ("/media/", PATH_DONTCREATE),
                SCOPE_HDD: ("/hdd/movie/", PATH_DONTCREATE),
                SCOPE_MEDIA: ("/media/", PATH_DONTCREATE),
-               SCOPE_PLAYLIST: ("/etc/enigma2/playlist/", PATH_CREATE),
+               SCOPE_PLAYLIST: (eEnv.resolve("${sysconfdir}/enigma2/playlist/"), PATH_CREATE),
                
                SCOPE_USERETC: ("", PATH_DONTCREATE), # user home directory
                
                
                SCOPE_USERETC: ("", PATH_DONTCREATE), # user home directory
                
-               SCOPE_DEFAULTDIR: ("/usr/share/enigma2/defaults/", PATH_CREATE),
+               SCOPE_DEFAULTDIR: (eEnv.resolve("${datadir}/enigma2/defaults/"), PATH_CREATE),
                SCOPE_DEFAULTPARTITION: ("/dev/mtdblock/6", PATH_DONTCREATE),
                SCOPE_DEFAULTPARTITION: ("/dev/mtdblock/6", PATH_DONTCREATE),
-               SCOPE_DEFAULTPARTITIONMOUNTDIR: ("/usr/share/enigma2/dealer", PATH_CREATE),
-               SCOPE_METADIR: ("/usr/share/meta", PATH_CREATE),
+               SCOPE_DEFAULTPARTITIONMOUNTDIR: (eEnv.resolve("${datadir}/enigma2/dealer"), PATH_CREATE),
+               SCOPE_METADIR: (eEnv.resolve("${datadir}/meta"), PATH_CREATE),
        }
 
 FILE_COPY = 0 # copy files from fallback dir to the basedir
        }
 
 FILE_COPY = 0 # copy files from fallback dir to the basedir
@@ -67,7 +68,7 @@ PATH_COPY = 2 # copy the complete fallback dir to the basedir
 PATH_MOVE = 3 # move the fallback dir to the basedir (can be used for changes in paths)
 fallbackPaths = {
                SCOPE_CONFIG: [("/home/root/", FILE_MOVE),
 PATH_MOVE = 3 # move the fallback dir to the basedir (can be used for changes in paths)
 fallbackPaths = {
                SCOPE_CONFIG: [("/home/root/", FILE_MOVE),
-                                          ("/usr/share/enigma2/defaults/", FILE_COPY)],
+                                          (eEnv.resolve("${datadir}/enigma2/defaults/"), FILE_COPY)],
                SCOPE_HDD: [("/hdd/movies", PATH_MOVE)]
        }
 
                SCOPE_HDD: [("/hdd/movies", PATH_MOVE)]
        }
 
index 68b5d57..c036283 100755 (executable)
@@ -2,6 +2,7 @@
 #include <signal.h>
 #include <asm/ptrace.h>
 
 #include <signal.h>
 #include <asm/ptrace.h>
 
+#include <lib/base/eenv.h>
 #include <lib/base/eerror.h>
 #include <lib/base/smartptr.h>
 #include <lib/base/nconfig.h>
 #include <lib/base/eerror.h>
 #include <lib/base/smartptr.h>
 #include <lib/base/nconfig.h>
@@ -65,7 +66,7 @@ static void addToLogbuffer(int level, const std::string &log)
 
 static std::string getConfigFileValue(const char *entry)
 {
 
 static std::string getConfigFileValue(const char *entry)
 {
-       std::string configfile = "/etc/enigma2/settings";
+       std::string configfile = eEnv::resolve("${sysconfdir}/enigma2/settings");
        std::string configvalue;
        if (entry)
        {
        std::string configvalue;
        if (entry)
        {
@@ -140,8 +141,8 @@ static std::string getFileContent(const char *file)
        return filecontent;
 }
 
        return filecontent;
 }
 
-static std::string execCommand(char* cmd) {
-       FILE* pipe = popen(cmd, "r");
+static std::string execCommand(std::string cmd) {
+       FILE* pipe = popen(cmd.c_str(), "r");
        if (!pipe)
                return "Error";
        char buffer[STDBUFFER_SIZE];
        if (!pipe)
                return "Error";
        char buffer[STDBUFFER_SIZE];
@@ -156,11 +157,6 @@ static std::string execCommand(char* cmd) {
        return result;
 }
 
        return result;
 }
 
-extern std::string execCommand();
-extern std::string getConfigFileValue();
-extern std::string getFileContent();
-extern std::string getLogBuffer();
-
 #define INFOFILE "/maintainer.info"
 
 void bsodFatal(const char *component)
 #define INFOFILE "/maintainer.info"
 
 void bsodFatal(const char *component)
@@ -274,7 +270,7 @@ void bsodFatal(const char *component)
                                        dreamboxca[strlen(dreamboxca)-1] = 0;
                                fprintf(f, "\t\t<dreamboxca>\n\t\t<![CDATA[\n%s\n\t\t]]>\n\t\t</dreamboxca>\n", dreamboxca);
                        }
                                        dreamboxca[strlen(dreamboxca)-1] = 0;
                                fprintf(f, "\t\t<dreamboxca>\n\t\t<![CDATA[\n%s\n\t\t]]>\n\t\t</dreamboxca>\n", dreamboxca);
                        }
-                       std::string settings = getFileContent("/etc/enigma2/settings");
+                       std::string settings = getFileContent(eEnv::resolve("${sysconfdir}/enigma2/settings").c_str());
                        if (settings != "Error")
                        {
                                fprintf(f, "\t\t<enigma2settings>\n\t\t<![CDATA[\n%s\t\t]]>\n\t\t</enigma2settings>\n", settings.c_str());
                        if (settings != "Error")
                        {
                                fprintf(f, "\t\t<enigma2settings>\n\t\t<![CDATA[\n%s\t\t]]>\n\t\t</enigma2settings>\n", settings.c_str());
@@ -336,7 +332,7 @@ void bsodFatal(const char *component)
                fprintf(f, "\t<crashlogs>\n");
                std::string buffer = getLogBuffer();
                fprintf(f, "\t\t<enigma2crashlog>\n\t\t<![CDATA[\n%s\t\t]]>\n\t\t</enigma2crashlog>\n", buffer.c_str());
                fprintf(f, "\t<crashlogs>\n");
                std::string buffer = getLogBuffer();
                fprintf(f, "\t\t<enigma2crashlog>\n\t\t<![CDATA[\n%s\t\t]]>\n\t\t</enigma2crashlog>\n", buffer.c_str());
-               std::string pythonmd5 = execCommand("find /usr/lib/enigma2/python/ -name \"*.py\" | xargs md5sum");
+               std::string pythonmd5 = execCommand("find " + eEnv::resolve("${libdir}/enigma2/python/") + " -name \"*.py\" | xargs md5sum");
                fprintf(f, "\t\t<pythonMD5sum>\n\t\t<![CDATA[\n%s\t\t]]>\n\t\t</pythonMD5sum>\n", pythonmd5.c_str());
                fprintf(f, "\t</crashlogs>\n");
 
                fprintf(f, "\t\t<pythonMD5sum>\n\t\t<![CDATA[\n%s\t\t]]>\n\t\t</pythonMD5sum>\n", pythonmd5.c_str());
                fprintf(f, "\t</crashlogs>\n");
 
index 144e2d3..328fba4 100644 (file)
@@ -1,6 +1,7 @@
 #include <stdio.h>
 #include <libsig_comp.h>
 #include <lib/base/ebase.h>
 #include <stdio.h>
 #include <libsig_comp.h>
 #include <lib/base/ebase.h>
+#include <lib/base/eenv.h>
 #include <lib/base/eerror.h>
 #include <lib/base/init.h>
 #include <lib/base/init_num.h>
 #include <lib/base/eerror.h>
 #include <lib/base/init.h>
 #include <lib/base/init_num.h>
@@ -67,7 +68,7 @@ int main()
                pal[a | 0x10] = (0x111111 * a) | 0xFF;
        p.setPalette(pal, 0, 256);
 
                pal[a | 0x10] = (0x111111 * a) | 0xFF;
        p.setPalette(pal, 0, 256);
 
-       fontRenderClass::getInstance()->AddFont(FONTDIR "/arial.ttf", "Regular", 100);
+       fontRenderClass::getInstance()->AddFont(eEnv::resolve("${datadir}/fonts/arial.ttf"), "Regular", 100);
 
        p.resetClip(gRegion(eRect(0, 0, 720, 576)));
        
 
        p.resetClip(gRegion(eRect(0, 0, 720, 576)));
        
index e53fcca..2ba6106 100644 (file)
@@ -67,7 +67,7 @@ int main()
                pal[a | 0x10] = (0x111111 * a) | 0xFF;
        p.setPalette(pal, 0, 256);
 
                pal[a | 0x10] = (0x111111 * a) | 0xFF;
        p.setPalette(pal, 0, 256);
 
-       fontRenderClass::getInstance()->AddFont(FONTDIR "/arial.ttf", "Regular", 100);
+       fontRenderClass::getInstance()->AddFont(eEnv::resolve("${datadir}/fonts/arial.ttf"), "Regular", 100);
 
        eWidgetDesktop dsk(eSize(720, 576));
        dsk.setDC(my_dc);
 
        eWidgetDesktop dsk(eSize(720, 576));
        dsk.setDC(my_dc);
index b336467..882af99 100644 (file)
@@ -9,6 +9,7 @@
 #include <lib/driver/rc.h>
 #include <lib/base/ioprio.h>
 #include <lib/base/ebase.h>
 #include <lib/driver/rc.h>
 #include <lib/base/ioprio.h>
 #include <lib/base/ebase.h>
+#include <lib/base/eenv.h>
 #include <lib/base/eerror.h>
 #include <lib/base/init.h>
 #include <lib/base/init_num.h>
 #include <lib/base/eerror.h>
 #include <lib/base/init.h>
 #include <lib/base/init_num.h>
@@ -136,7 +137,7 @@ int main(int argc, char **argv)
        gst_init(&argc, &argv);
 
        // set pythonpath if unset
        gst_init(&argc, &argv);
 
        // set pythonpath if unset
-       setenv("PYTHONPATH", LIBDIR "/enigma2/python", 0);
+       setenv("PYTHONPATH", eEnv::resolve("${libdir}/enigma2/python").c_str(), 0);
        printf("PYTHONPATH: %s\n", getenv("PYTHONPATH"));
        
        bsodLogInit();
        printf("PYTHONPATH: %s\n", getenv("PYTHONPATH"));
        
        bsodLogInit();
@@ -186,7 +187,7 @@ int main(int argc, char **argv)
        dsk_lcd.setDC(my_lcd_dc);
 
        ePtr<gPixmap> m_pm;
        dsk_lcd.setDC(my_lcd_dc);
 
        ePtr<gPixmap> m_pm;
-       loadPNG(m_pm, DATADIR "/enigma2/skin_default/pal.png");
+       loadPNG(m_pm, eEnv::resolve("${datadir}/enigma2/skin_default/pal.png").c_str());
        if (!m_pm)
        {
                eFatal("pal.png not found!");
        if (!m_pm)
        {
                eFatal("pal.png not found!");
@@ -209,14 +210,16 @@ int main(int argc, char **argv)
                ePtr<gPixmap> wait[MAX_SPINNER];
                for (i=0; i<MAX_SPINNER; ++i)
                {
                ePtr<gPixmap> wait[MAX_SPINNER];
                for (i=0; i<MAX_SPINNER; ++i)
                {
-                       char filename[strlen(DATADIR) + 41];
-                       sprintf(filename, DATADIR "/enigma2/skin_default/spinner/wait%d.png", i + 1);
-                       loadPNG(wait[i], filename);
+                       char filename[64];
+                       std::string rfilename;
+                       snprintf(filename, sizeof(filename), "${datadir}/enigma2/skin_default/spinner/wait%d.png", i + 1);
+                       rfilename = eEnv::resolve(filename);
+                       loadPNG(wait[i], rfilename.c_str());
                        
                        if (!wait[i])
                        {
                                if (!i)
                        
                        if (!wait[i])
                        {
                                if (!i)
-                                       eDebug("failed to load %s! (%m)", filename);
+                                       eDebug("failed to load %s! (%m)", rfilename.c_str());
                                else
                                        eDebug("found %d spinner!\n", i);
                                break;
                                else
                                        eDebug("found %d spinner!\n", i);
                                break;
@@ -239,7 +242,7 @@ int main(int argc, char **argv)
        setIoPrio(IOPRIO_CLASS_BE, 3);
 
 //     python.execute("mytest", "__main__");
        setIoPrio(IOPRIO_CLASS_BE, 3);
 
 //     python.execute("mytest", "__main__");
-       python.execFile("/usr/lib/enigma2/python/mytest.py");
+       python.execFile(eEnv::resolve("${libdir}/enigma2/python/mytest.py").c_str());
 
        extern void setFullsize(); // definend in lib/gui/evideo.cpp
        setFullsize();
 
        extern void setFullsize(); // definend in lib/gui/evideo.cpp
        setFullsize();