From 2cdd9faf1abbade93ff8a9dd4625cdbf006762f4 Mon Sep 17 00:00:00 2001 From: Philipp Gesang Date: Tue, 4 Apr 2017 17:35:04 +0200 Subject: [PATCH] unify file extension handling MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit The required extension no longer depends on the “[index]mode” parameter since the encryption context is handled independently. Add a function pick_extension() that reflects this circumstance and appends the required suffixed depending on three inputs. --- deltatar/deltatar.py | 39 ++++++++++++++++++++++++++------------- 1 files changed, 26 insertions(+), 13 deletions(-) diff --git a/deltatar/deltatar.py b/deltatar/deltatar.py index ea4799b..adc6ece 100644 --- a/deltatar/deltatar.py +++ b/deltatar/deltatar.py @@ -57,6 +57,8 @@ PARENT_MATCH = 2 # for encoding encryption parameters in the file extensions (“.aes128” and # suchlike). PDTCRYPT_EXTENSION = "pdtcrypt" +PDT_TYPE_ARCHIVE = 0 +PDT_TYPE_AUX = 1 AUXILIARY_FILE_INDEX = 0 AUXILIARY_FILE_INFO = 1 @@ -122,8 +124,8 @@ class DeltaTar(object): '|gz': '.gz', '|bz2': '.bz2', '#gz': '.gz', - '#gz.aes128': '.gz.%s' % PDTCRYPT_EXTENSION, - '#aes128': '.%s' % PDTCRYPT_EXTENSION, + '#gz.aes128': '.gz', + '#aes128': '', } # valid index modes and their corresponding default file extension @@ -131,8 +133,8 @@ class DeltaTar(object): '': '', 'gz': '.gz', 'bz2': '.bz2', - 'gz.aes128': '.gz.%s' % PDTCRYPT_EXTENSION, - 'aes128': '.%s' % PDTCRYPT_EXTENSION, + 'gz.aes128': '.gz', + 'aes128': '', } # valid path prefixes @@ -246,6 +248,19 @@ class DeltaTar(object): if volume_name_func is not None: self.volume_name_func = volume_name_func + def pick_extension(self, kind, mode): + """ + Choose the extension depending on a) the kind of file given, b) the + processing mode, and c) the current encryption settings. + """ + ret = "" + if kind == PDT_TYPE_ARCHIVE: + ret += ".tar" + ret += mode + if self.crypto_ctx is not None: + ret += "." + PDTCRYPT_EXTENSION + return ret + def index_name_func(self, is_full): # pylint: disable=method-hidden ''' function that sets a custom name for the index file. This function @@ -255,16 +270,12 @@ class DeltaTar(object): ''' prefix = "bfull" if is_full else "bdiff" date_str = self.current_time.strftime("%Y-%m-%d-%H%M") - extension = self.__index_extensions_dict[self.index_mode] + extension = self.pick_extension \ + (PDT_TYPE_AUX, + self.__index_extensions_dict [self.index_mode]) return "%s-%s.index%s" % (prefix, date_str, extension) - def get_index_extension(self): - ''' - returns the extension used for index files - ''' - return self.__index_extensions_dict[self.index_mode] - def volume_name_func(self, backup_path, # pylint: disable=method-hidden is_full, volume_number, guess_name=False): @@ -278,11 +289,13 @@ class DeltaTar(object): to be found, and thus the date will be guessed. ''' prefix = "bfull" if is_full else "bdiff" - extension = self.__file_extensions_dict[self.mode] + extension = self.pick_extension \ + (PDT_TYPE_ARCHIVE, + self.__file_extensions_dict [self.mode]) if not guess_name: date_str = self.current_time.strftime("%Y-%m-%d-%H%M") - return "%s-%s-%03d.tar%s" % (prefix, date_str, volume_number + 1, extension) + return "%s-%s-%03d%s" % (prefix, date_str, volume_number + 1, extension) else: prefix = prefix + "-" postfix = "-%03d.tar%s" % (volume_number + 1, extension) -- 1.7.1