From 959040913ac34b4e701c4d576781e4cdbca3d635 Mon Sep 17 00:00:00 2001
From: elupus <elupus@xbmc.org>
Date: Sun, 10 Apr 2011 15:20:33 +0200
Subject: changed: override os.getcwd() and os.chdir() functions to make addons
 relying on it work

Feel free to revert whenever ALL addons have been corrected to avoid using this.
---
 xbmc/interfaces/python/XBPython.cpp | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/xbmc/interfaces/python/XBPython.cpp b/xbmc/interfaces/python/XBPython.cpp
index ee34fbcead..487a30d7bb 100644
--- a/xbmc/interfaces/python/XBPython.cpp
+++ b/xbmc/interfaces/python/XBPython.cpp
@@ -250,6 +250,25 @@ void XBPython::InitializeInterpreter()
         "import sys\n"
         "sys.stdout = xbmcout()\n"
         "sys.stderr = xbmcout()\n"
+        ""
+        "import os\n"
+        "def getcwd_xbmc():\n"
+        "  import __main__\n"
+        "  import warnings\n"
+        "  if hasattr(__main__, \"__file__\"):\n"
+        "    warnings.warn(\"os.getcwd() is depreciated for getting addon directory use os.path.dirname(__main__.__file__)\", DeprecationWarning, stacklevel=2)\n"
+        "    return os.path.dirname(__main__.__file__)\n"
+        "  else:\n"
+        "    return os.getcwd_original()\n"
+        ""
+        "def chdir_xbmc(dir):\n"
+        "  raise RuntimeError(\"os.chdir not supported in xbmc\")\n"
+        ""
+        "os_getcwd_original = os.getcwd\n"
+        "os.getcwd          = getcwd_xbmc\n"
+        "os.chdir_orignal   = os.chdir\n"
+        "os.chdir           = chdir_xbmc\n"
+        ""
         "print '-->Python Interpreter Initialized<--'\n"
         "") == -1)
   {
-- 
cgit v1.2.3