From 27503759b1d17cad342a31f0ff53b9583872be64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B0=D0=BC=D0=BE=D1=83=D0=BA=D0=B8=D0=BD=20=D0=90?= =?UTF-8?q?=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Tue, 29 Sep 2009 10:44:39 +0400 Subject: [PATCH] Fixed bug, wrong working with binary profiles using the profile settings 'mirror' and 'link' --- pym/cl_profile.py | 44 ++++++++++++++++++++++++++------------------ 1 file changed, 26 insertions(+), 18 deletions(-) diff --git a/pym/cl_profile.py b/pym/cl_profile.py index f8f657b..c5137c7 100644 --- a/pym/cl_profile.py +++ b/pym/cl_profile.py @@ -3407,6 +3407,25 @@ class profile(_file, _terms, xmlShare): # Новый путь к оригинальному файлу pathOldFile = os.path.join(pathRel,nameFile) + # В случае force + if objHeadNew.params.has_key("force"): + if os.path.islink(pathOldFile): + # удаляем ссылку + try: + os.unlink(pathOldFile) + except: + self.setError(_("Can not delete link: " ) +\ + pathOldFile) + return (applyFiles, False) + if os.path.isfile(pathOldFile): + # удаляем файл + try: + os.remove(pathOldFile) + except: + self.setError(_("Can not delete file: " ) +\ + pathOldFile) + return (applyFiles, False) + # Удаляем оригинальный файл if objHeadNew.typeAppend == "remove": if os.path.islink(pathOldFile): @@ -3414,7 +3433,7 @@ class profile(_file, _terms, xmlShare): try: os.unlink(pathOldFile) except: - self.setError(_("Can not delete link: " ) +\ + self.setError(_("Can not delete link: " ) +\ pathOldFile) if os.path.isfile(pathOldFile): # удаляем файл @@ -3467,21 +3486,6 @@ class profile(_file, _terms, xmlShare): pathProg = os.getcwd() os.chdir(pathLink) - pathOldFileExists = os.path.exists(pathOldFile) - # В случае force - if objHeadNew.params.has_key("force") and pathOldFileExists: - FO = self.openNewFile(pathOldFile) - buff = FO.read() - FO.close() - os.remove(pathOldFile) - fd = os.open(pathOldFile, os.O_CREAT) - os.close(fd) - os.chmod(pathOldFile, self._mode) - os.chown(pathOldFile, self._uid, self._gid) - FON = open (pathOldFile, "r+") - FON.write(buff) - FON.close() - # chmod - изменяем права if objHeadNew.params.has_key("chmod"): mode = self.__octToInt(objHeadNew.params['chmod']) @@ -3555,6 +3559,11 @@ class profile(_file, _terms, xmlShare): applyFiles = [pathOldFile] if pathProg: os.chdir(pathProg) + # Если файлы заменяются не нужно их обрабатывать дальше + if objHeadNew.typeAppend == "replace" and\ + not objHeadNew.params.has_key("symbolic") and\ + objHeadNew.params.has_key("link"): + return (applyFiles, False) return (applyFiles, objHeadNew) def createNewClass(self, name, bases, attrs={}): @@ -3620,7 +3629,6 @@ class profile(_file, _terms, xmlShare): copyFile = False filesApply, objHeadNew = self.__getApplyHeadProfile(newFile, oldFile, copyFile) - #print filesApply if not objHeadNew: return filesApply # Флаг - кодировка с бинарными примесями у файла профиля включаем при @@ -5298,7 +5306,7 @@ class plasma(samba): """ _comment = "#" - configName = "kde" + configName = "plasma" configVersion = "0.1" reHeader = re.compile("^[\t ]*\[[^\[\]]+\].*\n?",re.M) reBody = re.compile(".+",re.M|re.S)