| 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)
|
|
|
|
|
|
|