Index: patch.py |
diff --git a/patch.py b/patch.py |
index 77bb15991065f4fefd363335e26e59cad19dffa6..8bdeddb1e67e56c89dffed7f0aa0a7e106d546d4 100644 |
--- a/patch.py |
+++ b/patch.py |
@@ -32,18 +32,21 @@ class FilePatchBase(object): |
is_new = False |
def __init__(self, filename): |
- self.filename = None |
- self._set_filename(filename) |
+ self.filename = self._process_filename(filename) |
- def _set_filename(self, filename): |
- self.filename = filename.replace('\\', '/') |
+ @staticmethod |
+ def _process_filename(filename): |
+ filename = filename.replace('\\', '/') |
# Blacklist a few characters for simplicity. |
for i in ('%', '$', '..', '\'', '"'): |
- if i in self.filename: |
- self._fail('Can\'t use \'%s\' in filename.' % i) |
+ if i in filename: |
+ raise UnsupportedPatchFormat( |
+ filename, 'Can\'t use \'%s\' in filename.' % i) |
for i in ('/', 'CON', 'COM'): |
- if self.filename.startswith(i): |
- self._fail('Filename can\'t start with \'%s\'.' % i) |
+ if filename.startswith(i): |
+ raise UnsupportedPatchFormat( |
+ filename, 'Filename can\'t start with \'%s\'.' % i) |
+ return filename |
def get(self): # pragma: no coverage |
raise NotImplementedError('Nothing to grab') |
@@ -54,9 +57,11 @@ class FilePatchBase(object): |
relpath = relpath.replace('\\', '/') |
if relpath[0] == '/': |
self._fail('Relative path starts with %s' % relpath[0]) |
- self._set_filename(posixpath.join(relpath, self.filename)) |
+ self.filename = self._process_filename( |
+ posixpath.join(relpath, self.filename)) |
def _fail(self, msg): |
+ """Shortcut function to raise UnsupportedPatchFormat.""" |
raise UnsupportedPatchFormat(self.filename, msg) |