From 0229335c15db773a6e5dbaef84c5e20b8ce32edd Mon Sep 17 00:00:00 2001 From: ShyPike Date: Tue, 18 Oct 2011 22:29:35 +0200 Subject: [PATCH] Make sure that "complete" and "incomplete" paths are different. If needed, make "incomplete" a sub folder of "complete". This is to avoid name clashes between complete and incomplete jobs. --- sabnzbd/__init__.py | 13 +++++++++++++ sabnzbd/interface.py | 1 + sabnzbd/misc.py | 7 +++++-- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/sabnzbd/__init__.py b/sabnzbd/__init__.py index 16e0f81..16be106 100644 --- a/sabnzbd/__init__.py +++ b/sabnzbd/__init__.py @@ -240,6 +240,8 @@ def initialize(pause_downloader = False, clean_up = False, evalSched=False, repa ### Set cache limit ArticleCache.do.new_limit(cfg.cache_limit.get_int()) + check_incomplete_vs_complete() + ### Handle language upgrade from 0.5.x to 0.6.x cfg.language.set(LANG_MAP.get(cfg.language(), cfg.language())) @@ -1022,6 +1024,17 @@ def pid_file(pid_path=None, port=0): logging.warning('Cannot access PID file %s', DIR_PID) +def check_incomplete_vs_complete(): + """ Make sure "incomplete" and "complete" are not identical + """ + complete = cfg.complete_dir.get_path() + if misc.same_file(cfg.download_dir.get_path(), complete): + if misc.real_path('X', cfg.download_dir()) == cfg.download_dir(): + # Abs path, so set an abs path too + cfg.download_dir.set(os.path.join(complete, 'incomplete')) + else: + cfg.download_dir.set('incomplete') + # Required wrapper because nzbstuff.py cannot import downloader.py def active_primaries(): diff --git a/sabnzbd/interface.py b/sabnzbd/interface.py index 484922b..2d499b4 100644 --- a/sabnzbd/interface.py +++ b/sabnzbd/interface.py @@ -1120,6 +1120,7 @@ class ConfigFolders(object): if msg: return badParameterResponse(msg) + sabnzbd.check_incomplete_vs_complete() config.save_config() raise dcRaiser(self.__root, kwargs) diff --git a/sabnzbd/misc.py b/sabnzbd/misc.py index 8440575..d10a8ce 100644 --- a/sabnzbd/misc.py +++ b/sabnzbd/misc.py @@ -634,8 +634,11 @@ def same_file(a, b): return False else: try: - a = os.path.normpath(os.path.abspath(a)).lower() - b = os.path.normpath(os.path.abspath(b)).lower() + a = os.path.normpath(os.path.abspath(a)) + b = os.path.normpath(os.path.abspath(b)) + if sabnzbd.WIN32 or sabnzbd.DARWIN: + a = a.lower() + b = b.lower() return a == b except: return False